Skip to content
PlantUML code generator
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci
.github
bin
examples
src
test
.eslintignore
.eslintrc.js
.gitignore
LICENSE
README.md
logic.png
logic.puml
package-lock.json
package.json

README.md

npm version CircleCI JavaScript Style Guide License badge Greenkeeper 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

  • output: file per class/console
  • es6 extended with:
    • code documentation
    • imports based on parameter
    • methods with parameters
  • template engine: handlebars
  • puml parser engine: pegjs

NOTE:

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

Problems?

  • If puml2code causes error like:

    Error: line: 21 column: 3: SyntaxError: Expected "'", "--", "..", "__", "abstract ", 
    "class ", "hide empty members", "interface ", "namespace ", "note ", "skinparam", "title ",
    [ \t], [#], [+], [A-Za-z_], [\-], [\n], [\r\n], [^ ,\n\r\t(){}], or [}] but "{" found.
    

    it's most probably because PEG.js based grammar does not have support for plantuml format you have in input file.

    What should I do?

    Please raise ticket with example plantuml file that does not work

  • generated source code does not look like you expected

    What should I do?

    Please raise ticket with example plantuml file and generated source code with some description how it should look like.

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

You can’t perform that action at this time.