nonoml
Hola, aquest és nomnoml , una eina per dibuixar diagrames UML basats en una sintaxi senzilla. Intenta mantenir la seva sintaxi visualment el més a prop possible del diagrama UML generat sense recórrer a dibuixos ASCII.
Creat per Daniel Kallin Contribucions d' Alexander Moosbrugger i korroz .
Nomnoml was made possible by these cool projects
Biblioteca
La biblioteca javascript autònoma de nomnoml es pot utilitzar per representar diagrames a la vostra pròpia pàgina web. Les úniques dependències són lodash i dagre . Instal·leu-la utilitzant npm o una bona inclusió d'scripts antics.
Ús de NodeJS amb sortida SVG:
1
2
3
4
5npm install nomnoml
var nomnoml = require('nomnoml');
var src = '[nomnoml] is -> [awesome]';
console.log(nomnoml.renderSvg(src));
Ús de HTML amb un objectiu de representació de Canvas:
1
2
3
4
5
6
7
8
9
10<script src="lodash.js"></script>
<script src="dagre.js"></script>
<script src="nomnoml.js"></script>
<canvas id="target-canvas"></canvas>
<script>
var canvas = document.getElementById('target-canvas');
var source = '[nomnoml] is -> [awesome]';
nomnoml.draw(canvas, source);
</script>
Suport SVG
Hi ha disponible com a funció un mode de representació SVG experimental (i no amb totes les funcions) nomnoml.renderSvg
.
Interfície de línia d'ordres
dist/nomnoml-cli.js
exposa el renderitzador SVG amb una interfície de línia d'ordres. Aquest mode també admet la #import: <filename>
directiva que us permet separar diagrames complexos en diversos fitxers.
Aplicació web
L' aplicació web nomnoml és un editor senzill amb una vista prèvia en directe. És purament del costat del client i els canvis es desen al localStorage del navegador , de manera que el vostre diagrama hauria d'estar aquí la propera vegada, (però sense garanties).
Interaction
El llenç es pot desplaçar i ampliar arrossegant i desplaçant-se al terç dret del llenç. Els fitxers d'imatge baixats rebran el nom del fitxer a la #title
directiva.
Example
Així és com es veu el patró Decorator en la sintaxi nomnoml:
1
2
3
4
5
6
7
8[<frame>Decorator pattern|
[<abstract>Component||+ operation()]
[Client] depends --> [Component]
[Decorator|- next: Component]
[Decorator] decorates -- [ConcreteComponent]
[Component] <:- [Decorator]
[Component] <:- [ConcreteComponent]
]
Association types
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15- association
-> association
<-> association
--> dependency
<--> dependency
-:> generalization
<:- generalization
--:> implementation
<:-- implementation
+- composition
+-> composition
o- aggregation
o-> aggregation
-- note
-/- hidden
Classifier types
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20[name]
[<abstract> name]
[<instance> name]
[<reference> name]
[<note> name]
[<package> name]
[<frame> name]
[<database> name]
[<start> name]
[<end> name]
[<state> name]
[<choice> name]
[<input> name]
[<sender> name]
[<receiver> name]
[<transceiver> name]
[<actor> name]
[<usecase> name]
[<label> name]
[<hidden> name]
Directives
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17#arrowSize: 1
#bendSize: 0.3
#direction: down | right
#gutter: 5
#edgeMargin: 0
#edges: hard | rounded
#fill: #eee8d5; #fdf6e3
#fillArrows: false
#font: Calibri
#fontSize: 12
#leading: 1.25
#lineWidth: 3
#padding: 8
#spacing: 40
#stroke: #33322E
#title: filename
#zoom: 1
Les directives només estan disponibles quan s'utilitza la interfície de línia d'ordres
1#import: my-common-styles.nomnoml
Custom classifier styles
Una directiva que comença amb "." defineix un estil de classificador.
1
2
3
4#.box: fill=#88ff88
#.blob: fill=pink visual=ellipse italic bold dashed
[<box> GreenBox]
[<blob> HideousBlob]
Els visuals disponibles són
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17visual=actor
visual=class
visual=database
visual=ellipse
visual=end
visual=frame
visual=hidden
visual=input
visual=none
visual=note
visual=package
visual=receiver
visual=rhomb
visual=roundrect
visual=sender
visual=start
visual=transceiver
Els modificadors disponibles són
1
2
3
4
5
6center
bold
underline
italic
dashed
empty
Contribuint
Si voleu col·laborar amb el projecte teniu més informació disponible aCONTRIBUTING.md.