Skip to content
moonbit-communityPublic

Latest commit

 

History

373 Commits

Folders and files

Repository files navigation

uml

A MoonBit project that converts UML strings to SVG, aiming to align with PlantUML's behavior, including its layout.

See compatibility notes for the documented upstream differences, deferred peripheral features, verification scope, and explicitly deferred formula embedding.

Sequence Class
Sequence diagram Class diagram
Mindmap JSON
Mindmap diagram JSON diagram

Every image above is a snapshot of an executable example in the library README. Run moon test -p moonbit-community/uml --update from the uml/ directory to update uml/__snapshot__/ using the local implementation. See the library README for the full gallery and API walkthrough.

Supported diagrams

Two families are supported: the standard UML diagrams (OMG UML 2.5) and the diagrams that only exist in PlantUML or in this project. Diagram types that render a picture match PlantUML's DiagramType; toml and mbti are extensions not present in PlantUML.

Standard UML diagrams

PlantUML has dedicated syntax for 11 of the 14 standard UML diagram types.

Diagram Kind Status
Class structure done
Object structure done
Component structure done
Deployment structure done
Package structure done (class grammar)
Use Case behavior done
Activity behavior done
State Machine behavior done
Sequence interaction done
Timing interaction main SVG pipeline implemented

Project extensions

Diagram Status
TOML done
MBTI done

PlantUML extensions

Diagram Status
Mindmap done
WBS main SVG pipeline implemented
JSON done
YAML done
DOT done
BPMN planned
Gantt planned
Nwdiag family (nwdiag, seqdiag, actdiag, blockdiag, rackdiag) planned
Salt / Wire planned
Packet planned
Chart planned
Chen / IE entity-relationship planned
Chronology planned
Composite (legacy) planned
EBNF planned
Regex planned
Git planned
Files planned
Board planned
HCL planned
Flow planned
Ditaa planned
JCCKit planned

WBS sources use @startwbs / @endwbs and render through moonbit-community/uml/api.render_svg. The main SVG pipeline includes the root fork, left/right subtrees, boxed and boxless nodes, pseudo nodes, multiline labels, sibling auto width, cross links, and document text. Its layout follows PlantUML's Fork, ITFComposed, and ITFLeaf; this status does not claim full PlantUML syntax or style compatibility. Runnable sources are in live/public/examples/wbs/.

Timing diagrams render through the same API using @startuml with robust, concise, rectangle, binary, clock, or analog player declarations. The main SVG pipeline follows PlantUML's TimingRuler, player frames, and individual panel algorithms, including constraints, message projections, notes, highlights, compact mode, and manual/hidden time axes. This status does not claim full PlantUML syntax or style compatibility. Sources are in live/public/examples/timing/.

Releases

Packages

Contributors

Languages