jupe / puml2code

PlantUML code generator
MIT License
105 stars 22 forks source link
code-generator es6 plantuml puml python

npm version CircleCI JavaScript Style Guide License badge

PlantUML code generator (puml2code)

a command line utility that convert Plantuml -text file that represent class UML diagram to source code. puml parser based on plantuml-code-generator but is rewritten with es6.

Installation

Global installation brings puml2code command to PATH

$ npm i -g puml2code

Development installation

$ git clone https://github.com/jupe/puml2code.git
$ npm i
$ bin/puml2code -h

Running tests

$ npm test

Supported output languages

Supported features

Features supported per output language:

Language supported docs deps imports
Coffeescript
C#
C++
ECMAScript5
ECMAScript6
Java
PHP
Python
Ruby
TypeScript

Feature explanations:

feature notes
supported at least source code can be generated
docs Documentation comments, eg python: docstring
deps imports Try to detect dependencies and import them top of source files

NOTE:

parser and code templates are not perfect. There is planty of cases that is not yet covered or supported. Basic scenarious should work.

Problems?

NOTE If you are able to create PR that solves your issue it would be even more wellcome.

Usage

$ puml2code -h
Usage: puml2code [options]

Options:
  -V, --version       output the version number
  -i, --input [file]  input .puml file, or "stdin"
  -l, --lang [lang]   Optional output source code language (default: "ecmascript6")
  -o, --out [path]    Output path. When not given output is printed to console.
  -h, --help          output usage information

Supported languages: coffeescript, csharp, ecmascript5, ecmascript6, java, php, python, ruby, typescript

Examples:
  $ puml2code -i input.puml -l ecmascript6
  $ puml2code -h
Use DEBUG=puml2code env variable to get traces. Example:
  $ DEBUG=puml2code puml2code -i input.puml

e.g.

$ puml2code -i myfile.puml

Scheduler.js:
// native modules
// 3rd party modules
// application modules
const Queue = require('./Queue');
const Resources = require('./Resources');

/**
 * Class Scheduler
 */
class Scheduler {
    /**
     * TBD
     */
    constructor(queue, resources) {
        this._queue = query;
        this._resoures = resources;
    }

    /**
     * @param {Queue} queue TBD
     */
    _test(queue) {
        // TBD
    }

    /**
     * @param {Queue} queue TBD
     */
    __protected(queue) {
        // TBD
    }
}

See more output examples here

Tool logic

logi

LICENSE:

MIT