Compare commits
	
		
			2 Commits
		
	
	
		
			8ee14167de
			...
			feat/parse
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| f369fc6e43 | |||
| 0bfe68b429 | 
							
								
								
									
										
											BIN
										
									
								
								gallery/doc_examples.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								gallery/doc_examples.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										689
									
								
								gallery/doc_examples.typ
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										689
									
								
								gallery/doc_examples.typ
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,689 @@ | |||||||
|  | #import "../src/lib.typ": from-plantuml | ||||||
|  |  | ||||||
|  | #set page(width: auto, height: auto) | ||||||
|  |  | ||||||
|  | #let examples = ( | ||||||
|  |   ( | ||||||
|  |     [Basic Examples], | ||||||
|  |     ``` | ||||||
|  |     @startuml | ||||||
|  |     Alice -> Bob: Authentication Request | ||||||
|  |     Bob --> Alice: Authentication Response | ||||||
|  |  | ||||||
|  |     Alice -> Bob: Another authentication Request | ||||||
|  |     Alice <-- Bob: Another authentication Response | ||||||
|  |     @enduml | ||||||
|  |     ``` | ||||||
|  |   ), | ||||||
|  |   ( | ||||||
|  |     [Declaring participant], | ||||||
|  |     ``` | ||||||
|  |     @startuml | ||||||
|  |     participant Participant as Foo | ||||||
|  |     actor       Actor       as Foo1 | ||||||
|  |     boundary    Boundary    as Foo2 | ||||||
|  |     control     Control     as Foo3 | ||||||
|  |     entity      Entity      as Foo4 | ||||||
|  |     database    Database    as Foo5 | ||||||
|  |     collections Collections as Foo6 | ||||||
|  |     queue       Queue       as Foo7 | ||||||
|  |     Foo -> Foo1 : To actor  | ||||||
|  |     Foo -> Foo2 : To boundary | ||||||
|  |     Foo -> Foo3 : To control | ||||||
|  |     Foo -> Foo4 : To entity | ||||||
|  |     Foo -> Foo5 : To database | ||||||
|  |     Foo -> Foo6 : To collections | ||||||
|  |     Foo -> Foo7: To queue | ||||||
|  |     @enduml | ||||||
|  |     ``` | ||||||
|  |   ), | ||||||
|  |   ( | ||||||
|  |     [Declaring participant (2)], | ||||||
|  |     ``` | ||||||
|  |     @startuml | ||||||
|  |     actor Bob #red | ||||||
|  |     ' The only difference between actor | ||||||
|  |     'and participant is the drawing | ||||||
|  |     participant Alice | ||||||
|  |     participant "I have a really\nlong name" as L #99FF99 | ||||||
|  |     /' You can also declare: | ||||||
|  |       participant L as "I have a really\nlong name"  #99FF99 | ||||||
|  |       '/ | ||||||
|  |  | ||||||
|  |     Alice->Bob: Authentication Request | ||||||
|  |     Bob->Alice: Authentication Response | ||||||
|  |     Bob->L: Log transaction | ||||||
|  |     @enduml | ||||||
|  |     ``` | ||||||
|  |   ), | ||||||
|  |   ( | ||||||
|  |     [Use non-letters in participants], | ||||||
|  |     ``` | ||||||
|  |     @startuml | ||||||
|  |     Alice -> "Bob()" : Hello | ||||||
|  |     "Bob()" -> "This is very\nlong" as Long | ||||||
|  |     ' You can also declare: | ||||||
|  |     ' "Bob()" -> Long as "This is very\nlong" | ||||||
|  |     Long --> "Bob()" : ok | ||||||
|  |     @enduml | ||||||
|  |     ``` | ||||||
|  |   ), | ||||||
|  |   ( | ||||||
|  |     [Message to Self], | ||||||
|  |     ``` | ||||||
|  |     @startuml | ||||||
|  |     Alice -> Alice: This is a signal to self.\nIt also demonstrates\nmultiline \ntext | ||||||
|  |     @enduml | ||||||
|  |     ``` | ||||||
|  |   ), | ||||||
|  |   ( | ||||||
|  |     [Message to Self (2)], | ||||||
|  |     ``` | ||||||
|  |     @startuml | ||||||
|  |     Alice <- Alice: This is a signal to self.\nIt also demonstrates\nmultiline \ntext | ||||||
|  |     @enduml | ||||||
|  |     ``` | ||||||
|  |   ), | ||||||
|  |   ( | ||||||
|  |     [Change arrow style], | ||||||
|  |     ``` | ||||||
|  |     @startuml | ||||||
|  |     Bob ->x Alice | ||||||
|  |     Bob -> Alice | ||||||
|  |     Bob ->> Alice | ||||||
|  |     Bob -\ Alice | ||||||
|  |     Bob \\- Alice | ||||||
|  |     Bob //-- Alice | ||||||
|  |  | ||||||
|  |     Bob ->o Alice | ||||||
|  |     Bob o\\-- Alice | ||||||
|  |  | ||||||
|  |     Bob <-> Alice | ||||||
|  |     Bob <->o Alice | ||||||
|  |     @enduml | ||||||
|  |     ``` | ||||||
|  |   ), | ||||||
|  |   ( | ||||||
|  |     [Grouping message], | ||||||
|  |     ``` | ||||||
|  |     @startuml | ||||||
|  |     Alice -> Bob: Authentication Request | ||||||
|  |  | ||||||
|  |     alt successful case | ||||||
|  |  | ||||||
|  |         Bob -> Alice: Authentication Accepted | ||||||
|  |  | ||||||
|  |     else some kind of failure | ||||||
|  |  | ||||||
|  |         Bob -> Alice: Authentication Failure | ||||||
|  |         group My own label | ||||||
|  |         Alice -> Log : Log attack start | ||||||
|  |             loop 1000 times | ||||||
|  |                 Alice -> Bob: DNS Attack | ||||||
|  |             end | ||||||
|  |         Alice -> Log : Log attack end | ||||||
|  |         end | ||||||
|  |  | ||||||
|  |     else Another type of failure | ||||||
|  |  | ||||||
|  |       Bob -> Alice: Please repeat | ||||||
|  |  | ||||||
|  |     end | ||||||
|  |     @enduml | ||||||
|  |     ``` | ||||||
|  |   ), | ||||||
|  |   ( | ||||||
|  |     [Secondary group label], | ||||||
|  |     ``` | ||||||
|  |     @startuml | ||||||
|  |     Alice -> Bob: Authentication Request | ||||||
|  |     Bob -> Alice: Authentication Failure | ||||||
|  |     group My own label [My own label 2] | ||||||
|  |         Alice -> Log : Log attack start | ||||||
|  |         loop 1000 times | ||||||
|  |             Alice -> Bob: DNS Attack | ||||||
|  |         end | ||||||
|  |         Alice -> Log : Log attack end | ||||||
|  |     end | ||||||
|  |     @enduml | ||||||
|  |     ``` | ||||||
|  |   ), | ||||||
|  |   ( | ||||||
|  |     [Notes on messages], | ||||||
|  |     ``` | ||||||
|  |     @startuml | ||||||
|  |     Alice->Bob : hello | ||||||
|  |     note left: this is a first note | ||||||
|  |  | ||||||
|  |     Bob->Alice : ok | ||||||
|  |     note right: this is another note | ||||||
|  |  | ||||||
|  |     Bob->Bob : I am thinking | ||||||
|  |     note left | ||||||
|  |     a note | ||||||
|  |     can also be defined | ||||||
|  |     on several lines | ||||||
|  |     end note | ||||||
|  |     @enduml | ||||||
|  |     ``` | ||||||
|  |   ), | ||||||
|  |   ( | ||||||
|  |     [Some other notes], | ||||||
|  |     ``` | ||||||
|  |     @startuml | ||||||
|  |     participant Alice | ||||||
|  |     participant Bob | ||||||
|  |     note left of Alice #aqua | ||||||
|  |     This is displayed | ||||||
|  |     left of Alice. | ||||||
|  |     end note | ||||||
|  |  | ||||||
|  |     note right of Alice: This is displayed right of Alice. | ||||||
|  |  | ||||||
|  |     note over Alice: This is displayed over Alice. | ||||||
|  |  | ||||||
|  |     note over Alice, Bob #FFAAAA: This is displayed\n over Bob and Alice. | ||||||
|  |  | ||||||
|  |     note over Bob, Alice | ||||||
|  |     This is yet another | ||||||
|  |     example of | ||||||
|  |     a long note. | ||||||
|  |     end note | ||||||
|  |     @enduml | ||||||
|  |     ``` | ||||||
|  |   ), | ||||||
|  |   ( | ||||||
|  |     [Changing notes shape \[hnote, rnote\]], | ||||||
|  |     ``` | ||||||
|  |     @startuml | ||||||
|  |     caller -> server : conReq | ||||||
|  |     hnote over caller : idle | ||||||
|  |     caller <- server : conConf | ||||||
|  |     rnote over server | ||||||
|  |      "r" as rectangle | ||||||
|  |      "h" as hexagon | ||||||
|  |     endrnote | ||||||
|  |     rnote over server | ||||||
|  |      this is | ||||||
|  |      on several | ||||||
|  |      lines | ||||||
|  |     endrnote | ||||||
|  |     hnote over caller | ||||||
|  |      this is | ||||||
|  |      on several | ||||||
|  |      lines | ||||||
|  |     endhnote | ||||||
|  |     @enduml | ||||||
|  |     ``` | ||||||
|  |   ), | ||||||
|  |   ( | ||||||
|  |     [Note over all participants \[across\]], | ||||||
|  |     ``` | ||||||
|  |     @startuml | ||||||
|  |     Alice->Bob:m1 | ||||||
|  |     Bob->Charlie:m2 | ||||||
|  |     note over Alice, Charlie: Old method for note over all part. with:\n ""note over //FirstPart, LastPart//"". | ||||||
|  |     note across: New method with:\n""note across"" | ||||||
|  |     Bob->Alice | ||||||
|  |     hnote across:Note across all part. | ||||||
|  |     @enduml | ||||||
|  |     ``` | ||||||
|  |   ), | ||||||
|  |   ( | ||||||
|  |     [Several notes aligned at the same level \[/\]], | ||||||
|  |     ``` | ||||||
|  |     @startuml | ||||||
|  |     note over Alice : initial state of Alice | ||||||
|  |     note over Bob : initial state of Bob | ||||||
|  |     Bob -> Alice : hello | ||||||
|  |     @enduml | ||||||
|  |     ``` | ||||||
|  |   ), | ||||||
|  |   ( | ||||||
|  |     [Several notes aligned at the same level \[/\] (2)], | ||||||
|  |     ``` | ||||||
|  |     @startuml | ||||||
|  |     note over Alice : initial state of Alice | ||||||
|  |     / note over Bob : initial state of Bob | ||||||
|  |     Bob -> Alice : hello | ||||||
|  |     @enduml | ||||||
|  |     ``` | ||||||
|  |   ), | ||||||
|  |   ( | ||||||
|  |     [Divider or separator], | ||||||
|  |     ``` | ||||||
|  |     @startuml | ||||||
|  |  | ||||||
|  |     == Initialization == | ||||||
|  |  | ||||||
|  |     Alice -> Bob: Authentication Request | ||||||
|  |     Bob --> Alice: Authentication Response | ||||||
|  |  | ||||||
|  |     == Repetition == | ||||||
|  |  | ||||||
|  |     Alice -> Bob: Another authentication Request | ||||||
|  |     Alice <-- Bob: another authentication Response | ||||||
|  |  | ||||||
|  |     @enduml | ||||||
|  |     ``` | ||||||
|  |   ), | ||||||
|  |   ( | ||||||
|  |     [Delay], | ||||||
|  |     ``` | ||||||
|  |     @startuml | ||||||
|  |  | ||||||
|  |     Alice -> Bob: Authentication Request | ||||||
|  |     ... | ||||||
|  |     Bob --> Alice: Authentication Response | ||||||
|  |     ...5 minutes later... | ||||||
|  |     Bob --> Alice: Good Bye ! | ||||||
|  |  | ||||||
|  |     @enduml | ||||||
|  |     ``` | ||||||
|  |   ), | ||||||
|  |   ( | ||||||
|  |     [Space], | ||||||
|  |     ``` | ||||||
|  |     @startuml | ||||||
|  |  | ||||||
|  |     Alice -> Bob: message 1 | ||||||
|  |     Bob --> Alice: ok | ||||||
|  |     ||| | ||||||
|  |     Alice -> Bob: message 2 | ||||||
|  |     Bob --> Alice: ok | ||||||
|  |     ||45|| | ||||||
|  |     Alice -> Bob: message 3 | ||||||
|  |     Bob --> Alice: ok | ||||||
|  |  | ||||||
|  |     @enduml | ||||||
|  |     ``` | ||||||
|  |   ), | ||||||
|  |   ( | ||||||
|  |     [Lifeline Activation and Destruction], | ||||||
|  |     ``` | ||||||
|  |     @startuml | ||||||
|  |     participant User | ||||||
|  |  | ||||||
|  |     User -> A: DoWork | ||||||
|  |     activate A | ||||||
|  |  | ||||||
|  |     A -> B: << createRequest >> | ||||||
|  |     activate B | ||||||
|  |  | ||||||
|  |     B -> C: DoWork | ||||||
|  |     activate C | ||||||
|  |     C --> B: WorkDone | ||||||
|  |     destroy C | ||||||
|  |  | ||||||
|  |     B --> A: RequestCreated | ||||||
|  |     deactivate B | ||||||
|  |  | ||||||
|  |     A -> User: Done | ||||||
|  |     deactivate A | ||||||
|  |  | ||||||
|  |     @enduml | ||||||
|  |     ``` | ||||||
|  |   ), | ||||||
|  |   ( | ||||||
|  |     [Lifeline Activation and Destruction (2)], | ||||||
|  |     ``` | ||||||
|  |     @startuml | ||||||
|  |     participant User | ||||||
|  |  | ||||||
|  |     User -> A: DoWork | ||||||
|  |     activate A #FFBBBB | ||||||
|  |  | ||||||
|  |     A -> A: Internal call | ||||||
|  |     activate A #DarkSalmon | ||||||
|  |  | ||||||
|  |     A -> B: << createRequest >> | ||||||
|  |     activate B | ||||||
|  |  | ||||||
|  |     B --> A: RequestCreated | ||||||
|  |     deactivate B | ||||||
|  |     deactivate A | ||||||
|  |     A -> User: Done | ||||||
|  |     deactivate A | ||||||
|  |  | ||||||
|  |     @enduml | ||||||
|  |     ``` | ||||||
|  |   ), | ||||||
|  |   /*( | ||||||
|  |     [Lifeline Activation and Destruction (3)], | ||||||
|  |     ``` | ||||||
|  |     @startuml | ||||||
|  |     'autoactivate on | ||||||
|  |     alice -> bob : hello | ||||||
|  |     bob -> bob : self call | ||||||
|  |     bill -> bob /'#005500'/ : hello from thread 2 | ||||||
|  |     bob -> george ** : create | ||||||
|  |     return done in thread 2 | ||||||
|  |     return rc | ||||||
|  |     bob -> george !! : delete | ||||||
|  |     return success | ||||||
|  |  | ||||||
|  |     @enduml | ||||||
|  |     ``` | ||||||
|  |   ),*/ | ||||||
|  |   ( | ||||||
|  |     [Return], | ||||||
|  |     ``` | ||||||
|  |     @startuml | ||||||
|  |     Bob -> Alice : hello | ||||||
|  |     activate Alice | ||||||
|  |     Alice -> Alice : some action | ||||||
|  |     return bye | ||||||
|  |     @enduml | ||||||
|  |     ``` | ||||||
|  |   ), | ||||||
|  |   ( | ||||||
|  |     [Participant creation], | ||||||
|  |     ``` | ||||||
|  |     @startuml | ||||||
|  |     Bob -> Alice : hello | ||||||
|  |  | ||||||
|  |     create Other | ||||||
|  |     Alice -> Other : new | ||||||
|  |  | ||||||
|  |     create /'control'/ String | ||||||
|  |     Alice -> String | ||||||
|  |     note right : You can also put notes! | ||||||
|  |  | ||||||
|  |     Alice --> Bob : ok | ||||||
|  |  | ||||||
|  |     @enduml | ||||||
|  |     ``` | ||||||
|  |   ), | ||||||
|  |   ( | ||||||
|  |     [Shortcut syntax for activation, deactivation, creation], | ||||||
|  |     ``` | ||||||
|  |     @startuml | ||||||
|  |     alice -> bob ++ : hello | ||||||
|  |     bob -> bob ++ : self call | ||||||
|  |     bob -> bib ++ /' #005500'/ : hello | ||||||
|  |     bob -> george ** : create | ||||||
|  |     return done | ||||||
|  |     return rc | ||||||
|  |     bob -> george !! : delete | ||||||
|  |     return success | ||||||
|  |     @enduml | ||||||
|  |     ``` | ||||||
|  |   ), | ||||||
|  |   ( | ||||||
|  |     [Shortcut syntax for activation, deactivation, creation (2)], | ||||||
|  |     ``` | ||||||
|  |     @startuml | ||||||
|  |     alice   ->  bob     ++   : hello1 | ||||||
|  |     bob     ->  charlie --++ : hello2 | ||||||
|  |     charlie --> alice   --   : ok | ||||||
|  |     @enduml | ||||||
|  |     ``` | ||||||
|  |   ), | ||||||
|  |   ( | ||||||
|  |     [Shortcut syntax for activation, deactivation, creation (3)], | ||||||
|  |     ``` | ||||||
|  |     @startuml | ||||||
|  |     alice -> bob   ++ /'#gold'/: hello | ||||||
|  |     bob   -> alice --++ /'#gold'/: you too | ||||||
|  |     alice -> bob   --: step1 | ||||||
|  |     alice -> bob   : step2 | ||||||
|  |     @enduml | ||||||
|  |     @enduml | ||||||
|  |     ``` | ||||||
|  |   ), | ||||||
|  |   ( | ||||||
|  |     [Incoming and outgoing messages], | ||||||
|  |     ``` | ||||||
|  |     @startuml | ||||||
|  |     [-> A: DoWork | ||||||
|  |  | ||||||
|  |     activate A | ||||||
|  |  | ||||||
|  |     A -> A: Internal call | ||||||
|  |     activate A | ||||||
|  |  | ||||||
|  |     A ->] : << createRequest >> | ||||||
|  |  | ||||||
|  |     A<--] : RequestCreated | ||||||
|  |     deactivate A | ||||||
|  |     [<- A: Done | ||||||
|  |     deactivate A | ||||||
|  |     @enduml | ||||||
|  |     ``` | ||||||
|  |   ), | ||||||
|  |   ( | ||||||
|  |     [Incoming and outgoing messages (2)], | ||||||
|  |     ``` | ||||||
|  |     @startuml | ||||||
|  |     participant Alice | ||||||
|  |     participant Bob #lightblue | ||||||
|  |     Alice -> Bob | ||||||
|  |     Bob -> Carol | ||||||
|  |     ... | ||||||
|  |     [-> Bob | ||||||
|  |     [o-> Bob | ||||||
|  |     [o->o Bob | ||||||
|  |     [x-> Bob | ||||||
|  |     ... | ||||||
|  |     [<- Bob | ||||||
|  |     [x<- Bob | ||||||
|  |     ... | ||||||
|  |     Bob ->] | ||||||
|  |     Bob ->o] | ||||||
|  |     Bob o->o] | ||||||
|  |     Bob ->x] | ||||||
|  |     ... | ||||||
|  |     Bob <-] | ||||||
|  |     Bob x<-] | ||||||
|  |  | ||||||
|  |     @enduml | ||||||
|  |     ``` | ||||||
|  |   ), | ||||||
|  |   ( | ||||||
|  |     [Short arrows for incoming and outgoing messages], | ||||||
|  |     ``` | ||||||
|  |     @startuml | ||||||
|  |     ?-> Alice    : ""?->""\n**short** to actor1 | ||||||
|  |     [-> Alice    : ""[->""\n**from start** to actor1 | ||||||
|  |     [-> Bob      : ""[->""\n**from start** to actor2 | ||||||
|  |     ?-> Bob      : ""?->""\n**short** to actor2 | ||||||
|  |     Alice ->]    : ""->]""\nfrom actor1 **to end** | ||||||
|  |     Alice ->?    : ""->?""\n**short** from actor1 | ||||||
|  |     Alice -> Bob : ""->"" \nfrom actor1 to actor2 | ||||||
|  |     @enduml | ||||||
|  |     ``` | ||||||
|  |   ), | ||||||
|  |   ( | ||||||
|  |     [Normal arrow], | ||||||
|  |     ``` | ||||||
|  |     @startuml | ||||||
|  |     participant Alice as a | ||||||
|  |     participant Bob   as b | ||||||
|  |     a ->     b : ""->   "" | ||||||
|  |     a ->>    b : ""->>  "" | ||||||
|  |     a -\     b : ""-\   "" | ||||||
|  |     a -\\    b : ""-\\\\"" | ||||||
|  |     a -/     b : ""-/   "" | ||||||
|  |     a -//    b : ""-//  "" | ||||||
|  |     a ->x    b : ""->x  "" | ||||||
|  |     a x->    b : ""x->  "" | ||||||
|  |     a o->    b : ""o->  "" | ||||||
|  |     a ->o    b : ""->o  "" | ||||||
|  |     a o->o   b : ""o->o "" | ||||||
|  |     a <->    b : ""<->  "" | ||||||
|  |     a o<->o  b : ""o<->o"" | ||||||
|  |     a x<->x  b : ""x<->x"" | ||||||
|  |     a ->>o   b : ""->>o "" | ||||||
|  |     a -\o    b : ""-\o  "" | ||||||
|  |     a -\\o   b : ""-\\\\o"" | ||||||
|  |     a -/o    b : ""-/o  "" | ||||||
|  |     a -//o   b : ""-//o "" | ||||||
|  |     a x->o   b : ""x->o "" | ||||||
|  |     @enduml | ||||||
|  |     ``` | ||||||
|  |   ), | ||||||
|  |   ( | ||||||
|  |     [Itself arrow], | ||||||
|  |     ``` | ||||||
|  |     @startuml | ||||||
|  |     participant Alice as a | ||||||
|  |     participant Bob   as b | ||||||
|  |     a ->     a : ""->   "" | ||||||
|  |     a ->>    a : ""->>  "" | ||||||
|  |     a -\     a : ""-\   "" | ||||||
|  |     a -\\    a : ""-\\\\"" | ||||||
|  |     a -/     a : ""-/   "" | ||||||
|  |     a -//    a : ""-//  "" | ||||||
|  |     a ->x    a : ""->x  "" | ||||||
|  |     a x->    a : ""x->  "" | ||||||
|  |     a o->    a : ""o->  "" | ||||||
|  |     a ->o    a : ""->o  "" | ||||||
|  |     a o->o   a : ""o->o "" | ||||||
|  |     a <->    a : ""<->  "" | ||||||
|  |     a o<->o  a : ""o<->o"" | ||||||
|  |     a x<->x  a : ""x<->x"" | ||||||
|  |     a ->>o   a : ""->>o "" | ||||||
|  |     a -\o    a : ""-\o  "" | ||||||
|  |     a -\\o   a : ""-\\\\o"" | ||||||
|  |     a -/o    a : ""-/o  "" | ||||||
|  |     a -//o   a : ""-//o "" | ||||||
|  |     a x->o   a : ""x->o "" | ||||||
|  |     @enduml | ||||||
|  |     ``` | ||||||
|  |   ), | ||||||
|  |   ( | ||||||
|  |     [Incoming messages (with '|')], | ||||||
|  |     ``` | ||||||
|  |     @startuml | ||||||
|  |     participant Alice as a | ||||||
|  |     participant Bob   as b | ||||||
|  |     [->      b : ""[->   "" | ||||||
|  |     [->>     b : ""[->>  "" | ||||||
|  |     [-\      b : ""[-\   "" | ||||||
|  |     [-\\     b : ""[-\\\\"" | ||||||
|  |     [-/      b : ""[-/   "" | ||||||
|  |     [-//     b : ""[-//  "" | ||||||
|  |     [->x     b : ""[->x  "" | ||||||
|  |     [x->     b : ""[x->  "" | ||||||
|  |     [o->     b : ""[o->  "" | ||||||
|  |     [->o     b : ""[->o  "" | ||||||
|  |     [o->o    b : ""[o->o "" | ||||||
|  |     [<->     b : ""[<->  "" | ||||||
|  |     [o<->o   b : ""[o<->o"" | ||||||
|  |     [x<->x   b : ""[x<->x"" | ||||||
|  |     [->>o    b : ""[->>o "" | ||||||
|  |     [-\o     b : ""[-\o  "" | ||||||
|  |     [-\\o    b : ""[-\\\\o"" | ||||||
|  |     [-/o     b : ""[-/o  "" | ||||||
|  |     [-//o    b : ""[-//o "" | ||||||
|  |     [x->o    b : ""[x->o "" | ||||||
|  |     @enduml | ||||||
|  |     ``` | ||||||
|  |   ), | ||||||
|  |   ( | ||||||
|  |     [Outgoing messages (with '|')], | ||||||
|  |     ``` | ||||||
|  |     @startuml | ||||||
|  |     participant Alice as a | ||||||
|  |     participant Bob   as b | ||||||
|  |     a ->]      : ""->]   "" | ||||||
|  |     a ->>]     : ""->>]  "" | ||||||
|  |     a -\]      : ""-\]   "" | ||||||
|  |     a -\\]     : ""-\\\\]"" | ||||||
|  |     a -/]      : ""-/]   "" | ||||||
|  |     a -//]     : ""-//]  "" | ||||||
|  |     a ->x]     : ""->x]  "" | ||||||
|  |     a x->]     : ""x->]  "" | ||||||
|  |     a o->]     : ""o->]  "" | ||||||
|  |     a ->o]     : ""->o]  "" | ||||||
|  |     a o->o]    : ""o->o] "" | ||||||
|  |     a <->]     : ""<->]  "" | ||||||
|  |     a o<->o]   : ""o<->o]"" | ||||||
|  |     a x<->x]   : ""x<->x]"" | ||||||
|  |     a ->>o]    : ""->>o] "" | ||||||
|  |     a -\o]     : ""-\o]  "" | ||||||
|  |     a -\\o]    : ""-\\\\o]"" | ||||||
|  |     a -/o]     : ""-/o]  "" | ||||||
|  |     a -//o]    : ""-//o] "" | ||||||
|  |     a x->o]    : ""x->o] "" | ||||||
|  |     @enduml | ||||||
|  |     ``` | ||||||
|  |   ), | ||||||
|  |   ( | ||||||
|  |     [Short incoming (with '?')], | ||||||
|  |     ``` | ||||||
|  |     @startuml | ||||||
|  |     participant Alice as a | ||||||
|  |     participant Bob   as b | ||||||
|  |     a ->     b : //Long long label// | ||||||
|  |     ?->      b : ""?->   "" | ||||||
|  |     ?->>     b : ""?->>  "" | ||||||
|  |     ?-\      b : ""?-\   "" | ||||||
|  |     ?-\\     b : ""?-\\\\"" | ||||||
|  |     ?-/      b : ""?-/   "" | ||||||
|  |     ?-//     b : ""?-//  "" | ||||||
|  |     ?->x     b : ""?->x  "" | ||||||
|  |     ?x->     b : ""?x->  "" | ||||||
|  |     ?o->     b : ""?o->  "" | ||||||
|  |     ?->o     b : ""?->o  "" | ||||||
|  |     ?o->o    b : ""?o->o "" | ||||||
|  |     ?<->     b : ""?<->  "" | ||||||
|  |     ?o<->o   b : ""?o<->o"" | ||||||
|  |     ?x<->x   b : ""?x<->x"" | ||||||
|  |     ?->>o    b : ""?->>o "" | ||||||
|  |     ?-\o     b : ""?-\o  "" | ||||||
|  |     ?-\\o    b : ""?-\\\\o "" | ||||||
|  |     ?-/o     b : ""?-/o  "" | ||||||
|  |     ?-//o    b : ""?-//o "" | ||||||
|  |     ?x->o    b : ""?x->o "" | ||||||
|  |     @enduml | ||||||
|  |     ``` | ||||||
|  |   ), | ||||||
|  |   ( | ||||||
|  |     [Short outgoing (with '?')], | ||||||
|  |     ``` | ||||||
|  |     @startuml | ||||||
|  |     participant Alice as a | ||||||
|  |     participant Bob   as b | ||||||
|  |     a ->     b : //Long long label// | ||||||
|  |     a ->?      : ""->?   "" | ||||||
|  |     a ->>?     : ""->>?  "" | ||||||
|  |     a -\?      : ""-\?   "" | ||||||
|  |     a -\\?     : ""-\\\\?"" | ||||||
|  |     a -/?      : ""-/?   "" | ||||||
|  |     a -//?     : ""-//?  "" | ||||||
|  |     a ->x?     : ""->x?  "" | ||||||
|  |     a x->?     : ""x->?  "" | ||||||
|  |     a o->?     : ""o->?  "" | ||||||
|  |     a ->o?     : ""->o?  "" | ||||||
|  |     a o->o?    : ""o->o? "" | ||||||
|  |     a <->?     : ""<->?  "" | ||||||
|  |     a o<->o?   : ""o<->o?"" | ||||||
|  |     a x<->x?   : ""x<->x?"" | ||||||
|  |     a ->>o?    : ""->>o? "" | ||||||
|  |     a -\o?     : ""-\o?  "" | ||||||
|  |     a -\\o?    : ""-\\\\o?"" | ||||||
|  |     a -/o?     : ""-/o?  "" | ||||||
|  |     a -//o?    : ""-//o? "" | ||||||
|  |     a x->o?    : ""x->o? "" | ||||||
|  |     @enduml | ||||||
|  |     ``` | ||||||
|  |   ) | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | #{ | ||||||
|  |   for (title, uml) in examples { | ||||||
|  |     heading(title) | ||||||
|  |     box( | ||||||
|  |       stroke: gray, | ||||||
|  |       inset: 1em, | ||||||
|  |       stack( | ||||||
|  |         dir: ltr, | ||||||
|  |         spacing: 1em, | ||||||
|  |         raw(uml.text, block: true, lang: "plantuml"), | ||||||
|  |         from-plantuml(uml) | ||||||
|  |       ) | ||||||
|  |     ) | ||||||
|  |     pagebreak(weak: true) | ||||||
|  |   } | ||||||
|  | } | ||||||
							
								
								
									
										
											BIN
										
									
								
								gallery/plantuml_test.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								gallery/plantuml_test.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										271
									
								
								gallery/plantuml_test.typ
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										271
									
								
								gallery/plantuml_test.typ
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,271 @@ | |||||||
|  | #import "../src/lib.typ": from-plantuml | ||||||
|  |  | ||||||
|  | #set page(width: auto, height: auto) | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | #from-plantuml(``` | ||||||
|  | @startuml | ||||||
|  |  | ||||||
|  | actor User as usr | ||||||
|  | participant can_message as can | ||||||
|  | control kartculator as kc | ||||||
|  | queue XF as xf | ||||||
|  | entity Drive as drive | ||||||
|  | entity Steering as steering | ||||||
|  |  | ||||||
|  | usr -\ xf : set message "move" | ||||||
|  | xf -> can : new value on joystick | ||||||
|  |  | ||||||
|  | == If X axis change value == | ||||||
|  | can -> kc : calculate new position | ||||||
|  | kc -> can : build message | ||||||
|  | can -> steering : set new position | ||||||
|  |  | ||||||
|  | == If Y axis change value == | ||||||
|  | can -> kc : calculate new torque | ||||||
|  | kc -> can : build message | ||||||
|  | can -> xf : set message "torque" | ||||||
|  | xf -> drive : set new torque | ||||||
|  |  | ||||||
|  | @enduml | ||||||
|  | ```) | ||||||
|  |  | ||||||
|  | #pagebreak(weak: true) | ||||||
|  |  | ||||||
|  | #from-plantuml(``` | ||||||
|  | @startuml | ||||||
|  |  | ||||||
|  | actor CAN_BUS as bus | ||||||
|  | participant interrupt as ISR | ||||||
|  | queue XF as xf | ||||||
|  | participant ecan as ecan | ||||||
|  | participant canInterface as can | ||||||
|  | control canMessageController as msg | ||||||
|  |  | ||||||
|  |  | ||||||
|  | bus -\\ ISR ++  : can message | ||||||
|  | ISR -> can : newMsg | ||||||
|  | can -> ecan : read | ||||||
|  | ecan --> can : message | ||||||
|  | can -> xf : POST XF | ||||||
|  | destroy ISR | ||||||
|  |     group TICK XF | ||||||
|  | xf o-> can : receiveCan() | ||||||
|  | can -> msg : processIncoming() | ||||||
|  | msg -> can : create message | ||||||
|  | can -> xf : POST XF | ||||||
|  |     end | ||||||
|  |     group TICK XF | ||||||
|  | xf o-> can : sendCan() | ||||||
|  | can -> ecan : write | ||||||
|  | ecan -\\ bus : can message | ||||||
|  |     end | ||||||
|  |  | ||||||
|  | @enduml | ||||||
|  | ```) | ||||||
|  |  | ||||||
|  | #pagebreak(weak: true) | ||||||
|  | */ | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | #from-plantuml(``` | ||||||
|  | @startuml | ||||||
|  |  | ||||||
|  | participant "Behavior::StateMachine" as sm | ||||||
|  | participant Dispatcher as d | ||||||
|  | participant TimeoutManager as tm | ||||||
|  | entity "Event::Timeout" as t | ||||||
|  | queue "TimeoutManager::timeouts_" as timeouts | ||||||
|  |  | ||||||
|  | autoactivate off | ||||||
|  | ||| | ||||||
|  | ||| | ||||||
|  | == Schedule timeout == | ||||||
|  | ||| | ||||||
|  | sm -> sm++ : scheduleTimeout | ||||||
|  | sm -> d ++: getDispatcher | ||||||
|  | d --> sm --: dispatcher | ||||||
|  | sm -> d --++ : scheduleTimeout | ||||||
|  | d -> tm ++: getTimeoutManager | ||||||
|  | tm --> d --: timeoutManager | ||||||
|  | d -> tm --++ : scheduleTimeout | ||||||
|  | tm -> t ** : new | ||||||
|  | t --> tm | ||||||
|  | tm -> timeouts --++: insert | ||||||
|  |  | ||||||
|  | ||| | ||||||
|  | ||| | ||||||
|  | == Decrement timeout (and dispatch) == | ||||||
|  | ||| | ||||||
|  | loop every tickInterval | ||||||
|  | ?->> tm ++: tick | ||||||
|  | tm -> timeouts : getFront | ||||||
|  | timeouts -> t ++ | ||||||
|  | t --> timeouts | ||||||
|  | timeouts --> tm : timeout | ||||||
|  | tm -> t  --: decrement | ||||||
|  | end | ||||||
|  | ||| | ||||||
|  | note left t | ||||||
|  | When timeout is 0, | ||||||
|  | dispatch event | ||||||
|  | end note | ||||||
|  | t -> timeouts : pop | ||||||
|  | deactivate timeouts | ||||||
|  | t ->? --: pushEvent | ||||||
|  |  | ||||||
|  | ||| | ||||||
|  | ||| | ||||||
|  | == Unschedule timeout == | ||||||
|  | ||| | ||||||
|  | sm -> sm++ : unscheduleTimeout | ||||||
|  | sm -> d ++: getDispatcher | ||||||
|  | d --> sm --: dispatcher | ||||||
|  | sm -> d --++ : unscheduleTimeout | ||||||
|  | d -> tm ++: getTimeoutManager | ||||||
|  | tm --> d --: timeoutManager | ||||||
|  | d -> tm --++ : unscheduleTimeout | ||||||
|  | tm -> timeouts --: erase | ||||||
|  | timeouts -> t !! | ||||||
|  |  | ||||||
|  | @enduml | ||||||
|  | ```) | ||||||
|  | */ | ||||||
|  |  | ||||||
|  | #pagebreak(weak: true) | ||||||
|  |  | ||||||
|  | #from-plantuml(``` | ||||||
|  | @startuml | ||||||
|  |  | ||||||
|  | participant Behavior as b | ||||||
|  | participant Dispatcher as d | ||||||
|  | entity Event as e | ||||||
|  | participant EventQueue as eq | ||||||
|  | queue "EventQueue::queue_" as q | ||||||
|  |  | ||||||
|  | == Create an Event == | ||||||
|  | ||| | ||||||
|  | ?->> b ++ : GEN | ||||||
|  | b -> e ** : new | ||||||
|  | b -> b --++ : pushEvent | ||||||
|  | e -> b : getBehavior | ||||||
|  | b --> e ++: setBehavior | ||||||
|  | e --> b -- | ||||||
|  | b -> d ++ : getDispatcher | ||||||
|  | d --> b | ||||||
|  | b -> d -- : pushEvent | ||||||
|  | d ->? -- : push | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ||| | ||||||
|  | ||| | ||||||
|  | == Push Event  == | ||||||
|  | ||| | ||||||
|  | ?->> d ++: pushEvent | ||||||
|  | d -> eq--++: push | ||||||
|  | eq -> q ++ | ||||||
|  | q --> eq | ||||||
|  | eq -> q -- : pushEndQueue | ||||||
|  |  | ||||||
|  | ||| | ||||||
|  | ||| | ||||||
|  | == Dispatch == | ||||||
|  | ||| | ||||||
|  | ?->> d ++: executeOnce | ||||||
|  | d -> q : getFront | ||||||
|  | q -> e ++ | ||||||
|  | e --> q | ||||||
|  | q --> d : event | ||||||
|  | d -> q : pop | ||||||
|  | deactivate q | ||||||
|  | d -> d --++ : dispatchEvent | ||||||
|  | d -> b ++ : getBehavior | ||||||
|  | b --> d | ||||||
|  | d -> b -- : process | ||||||
|  | b -> b--: processEvent | ||||||
|  |  | ||||||
|  | destroy e | ||||||
|  |  | ||||||
|  | @enduml | ||||||
|  | ```) | ||||||
|  |  | ||||||
|  | #pagebreak(weak: true) | ||||||
|  |  | ||||||
|  | #from-plantuml(``` | ||||||
|  | @startuml | ||||||
|  | 'https://plantuml.com/sequence-diagram | ||||||
|  | actor User as usr | ||||||
|  | participant "Pb L" as pbL | ||||||
|  | participant "Pb R" as pbR | ||||||
|  | participant "LED L" as ledL | ||||||
|  | participant "LED R" as ledR | ||||||
|  |  | ||||||
|  |  | ||||||
|  | == Single click == | ||||||
|  |  | ||||||
|  | group Single click left | ||||||
|  | usr -\ pbL ++: pressButton | ||||||
|  | usr -\ pbL : releaseButton | ||||||
|  | pbL -> ledL --++ : blink | ||||||
|  | usr -\ pbL ++: pressButton | ||||||
|  | usr -\ pbL : releaseButton | ||||||
|  | pbL -> ledL -- : endBlink | ||||||
|  | deactivate ledL | ||||||
|  | end | ||||||
|  |  | ||||||
|  | group Single click right | ||||||
|  | usr -\ pbR ++: pressButton | ||||||
|  | usr -\ pbR : releaseButton | ||||||
|  | pbR -> ledR --++ : blink | ||||||
|  | usr -\ pbR ++: pressButton | ||||||
|  | usr -\ pbR : releaseButton | ||||||
|  | pbR -> ledR -- : endBlink | ||||||
|  | deactivate ledR | ||||||
|  | end | ||||||
|  |  | ||||||
|  | == Double click == | ||||||
|  |  | ||||||
|  | group Double click left | ||||||
|  | usr -\ pbL ++: pressButton | ||||||
|  | usr -\ pbL : releaseButton | ||||||
|  | usr -\ pbL : pressButton | ||||||
|  | pbL -> ledL --++ : blink | ||||||
|  | note right ledL: blink 3x | ||||||
|  | ledL ->x ledL -- : finished | ||||||
|  | end | ||||||
|  |  | ||||||
|  | group Double click right | ||||||
|  | usr -\ pbR ++: pressButton | ||||||
|  | usr -\ pbR : releaseButton | ||||||
|  | usr -\ pbR : pressButton | ||||||
|  | pbR -> ledR --++ : blink | ||||||
|  | note right ledR: blink 3x | ||||||
|  | ledR ->x ledR -- : finished | ||||||
|  | end | ||||||
|  |  | ||||||
|  | == Long click == | ||||||
|  |  | ||||||
|  | group Long click left | ||||||
|  | usr -\ pbL ++: pressButton | ||||||
|  | pbL -> ledR--: blink | ||||||
|  | activate ledL | ||||||
|  | activate ledR | ||||||
|  | usr -\ pbL ++: pressButton | ||||||
|  | pbL -> ledR -- : endBlink | ||||||
|  | deactivate ledL | ||||||
|  | deactivate ledR | ||||||
|  | end | ||||||
|  |  | ||||||
|  | group Long click right | ||||||
|  | usr -\ pbR ++: pressButton | ||||||
|  | pbR -> ledR--: blink | ||||||
|  | activate ledL | ||||||
|  | activate ledR | ||||||
|  | usr -\ pbL ++: pressButton | ||||||
|  | pbL -> ledR -- : endBlink | ||||||
|  | deactivate ledL | ||||||
|  | deactivate ledR | ||||||
|  | end | ||||||
|  |  | ||||||
|  | @enduml | ||||||
|  | ```) | ||||||
| @@ -243,8 +243,4 @@ | |||||||
|   set text(font: "Source Sans 3") |   set text(font: "Source Sans 3") | ||||||
|   let canvas = render(participants, elmts) |   let canvas = render(participants, elmts) | ||||||
|   fit-canvas(canvas, width: width) |   fit-canvas(canvas, width: width) | ||||||
| } |  | ||||||
|  |  | ||||||
| #let from-plantuml(code) = { |  | ||||||
|   let code = code.text |  | ||||||
| } | } | ||||||
| @@ -1,5 +1,6 @@ | |||||||
| #let version = version(0, 1, 1) | #let version = version(0, 1, 1) | ||||||
| #import "diagram.typ": diagram, from-plantuml, _gap, _evt, _col | #import "diagram.typ": diagram, _gap, _evt, _col | ||||||
|  | #import "parser.typ": from-plantuml | ||||||
|  |  | ||||||
| #import "sequence.typ": _seq, _ret | #import "sequence.typ": _seq, _ret | ||||||
| #import "group.typ": _grp, _loop, _alt, _opt, _break | #import "group.typ": _grp, _loop, _alt, _opt, _break | ||||||
|   | |||||||
							
								
								
									
										1036
									
								
								src/parser.typ
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1036
									
								
								src/parser.typ
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Reference in New Issue
	
	Block a user