From 0bfe68b429fc1cb70f17142086c3b11a74593755 Mon Sep 17 00:00:00 2001 From: LordBaryhobal Date: Tue, 8 Oct 2024 11:46:44 +0200 Subject: [PATCH] added plantuml parser --- gallery/doc_examples.pdf | Bin 0 -> 164469 bytes gallery/doc_examples.typ | 675 ++++++++++++++++++++++++ gallery/plantuml_test.pdf | Bin 0 -> 40432 bytes gallery/plantuml_test.typ | 271 ++++++++++ src/diagram.typ | 4 - src/lib.typ | 3 +- src/parser.typ | 1021 +++++++++++++++++++++++++++++++++++++ 7 files changed, 1969 insertions(+), 5 deletions(-) create mode 100644 gallery/doc_examples.pdf create mode 100644 gallery/doc_examples.typ create mode 100644 gallery/plantuml_test.pdf create mode 100644 gallery/plantuml_test.typ create mode 100644 src/parser.typ diff --git a/gallery/doc_examples.pdf b/gallery/doc_examples.pdf new file mode 100644 index 0000000000000000000000000000000000000000..35074c3a0b46fcd9f3ef06f2f2896a8e73f78341 GIT binary patch literal 164469 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 ol;x&u-`0r@nNXDs3 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 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 + ``` + ), + ( + [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) + } +} \ No newline at end of file diff --git a/gallery/plantuml_test.pdf b/gallery/plantuml_test.pdf new file mode 100644 index 0000000000000000000000000000000000000000..9c7f014d275e990072f58beab5ac1a532807c7b8 GIT binary patch literal 40432 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

)(bCuRDK<%>0ZiFX<(cre@B8d07}vn=YR4GPty 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 literal 0 HcmV?d00001 diff --git a/gallery/plantuml_test.typ b/gallery/plantuml_test.typ new file mode 100644 index 0000000..daa7dea --- /dev/null +++ b/gallery/plantuml_test.typ @@ -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 +```) \ No newline at end of file diff --git a/src/diagram.typ b/src/diagram.typ index 7644d49..bf223bb 100644 --- a/src/diagram.typ +++ b/src/diagram.typ @@ -243,8 +243,4 @@ set text(font: "Source Sans 3") let canvas = render(participants, elmts) fit-canvas(canvas, width: width) -} - -#let from-plantuml(code) = { - let code = code.text } \ No newline at end of file diff --git a/src/lib.typ b/src/lib.typ index a2568fb..da3f79d 100644 --- a/src/lib.typ +++ b/src/lib.typ @@ -1,5 +1,6 @@ #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 "group.typ": _grp, _loop, _alt, _opt, _break diff --git a/src/parser.typ b/src/parser.typ new file mode 100644 index 0000000..0a9b8b1 --- /dev/null +++ b/src/parser.typ @@ -0,0 +1,1021 @@ +#import "diagram.typ": diagram, _par, _evt, _gap +#import "participant.typ": SHAPES +#import "separator.typ": _sep +#import "sequence.typ": _seq, _ret +#import "group.typ": _grp, _alt +#import "note.typ": _note, SIDES + +#let COLORS = ( + aliceblue: rgb("#f0f8ff"), + antiquewhite: rgb("#faebd7"), + aqua: rgb("#00ffff"), + aquamarine: rgb("#7fffd4"), + azure: rgb("#f0ffff"), + beige: rgb("#f5f5dc"), + bisque: rgb("#ffe4c4"), + black: rgb("#000000"), + blanchedalmond: rgb("#ffebcd"), + blue: rgb("#0000ff"), + blueviolet: rgb("#8a2be2"), + brown: rgb("#a52a2a"), + burlywood: rgb("#deb887"), + cadetblue: rgb("#5f9ea0"), + chartreuse: rgb("#7fff00"), + chocolate: rgb("#d2691e"), + coral: rgb("#ff7f50"), + cornflowerblue: rgb("#6495ed"), + cornsilk: rgb("#fff8dc"), + crimson: rgb("#dc143c"), + cyan: rgb("#00ffff"), + darkblue: rgb("#00008b"), + darkcyan: rgb("#008b8b"), + darkgoldenrod: rgb("#b8860b"), + darkgray: rgb("#a9a9a9"), + darkgreen: rgb("#006400"), + darkgrey: rgb("#a9a9a9"), + darkkhaki: rgb("#bdb76b"), + darkmagenta: rgb("#8b008b"), + darkolivegreen: rgb("#556b2f"), + darkorange: rgb("#ff8c00"), + darkorchid: rgb("#9932cc"), + darkred: rgb("#8b0000"), + darksalmon: rgb("#e9967a"), + darkseagreen: rgb("#8fbc8f"), + darkslateblue: rgb("#483d8b"), + darkslategray: rgb("#2f4f4f"), + darkslategrey: rgb("#2f4f4f"), + darkturquoise: rgb("#00ced1"), + darkviolet: rgb("#9400d3"), + deeppink: rgb("#ff1493"), + deepskyblue: rgb("#00bfff"), + dimgray: rgb("#696969"), + dimgrey: rgb("#696969"), + dodgerblue: rgb("#1e90ff"), + firebrick: rgb("#b22222"), + floralwhite: rgb("#fffaf0"), + forestgreen: rgb("#228b22"), + fuchsia: rgb("#ff00ff"), + gainsboro: rgb("#dcdcdc"), + ghostwhite: rgb("#f8f8ff"), + gold: rgb("#ffd700"), + goldenrod: rgb("#daa520"), + gray: rgb("#808080"), + green: rgb("#008000"), + greenyellow: rgb("#adff2f"), + grey: rgb("#808080"), + honeydew: rgb("#f0fff0"), + hotpink: rgb("#ff69b4"), + indianred: rgb("#cd5c5c"), + indigo: rgb("#4b0082"), + ivory: rgb("#fffff0"), + khaki: rgb("#f0e68c"), + lavender: rgb("#e6e6fa"), + lavenderblush: rgb("#fff0f5"), + lawngreen: rgb("#7cfc00"), + lemonchiffon: rgb("#fffacd"), + lightblue: rgb("#add8e6"), + lightcoral: rgb("#f08080"), + lightcyan: rgb("#e0ffff"), + lightgoldenrodyellow: rgb("#fafad2"), + lightgray: rgb("#d3d3d3"), + lightgreen: rgb("#90ee90"), + lightgrey: rgb("#d3d3d3"), + lightpink: rgb("#ffb6c1"), + lightsalmon: rgb("#ffa07a"), + lightseagreen: rgb("#20b2aa"), + lightskyblue: rgb("#87cefa"), + lightslategray: rgb("#778899"), + lightslategrey: rgb("#778899"), + lightsteelblue: rgb("#b0c4de"), + lightyellow: rgb("#ffffe0"), + lime: rgb("#00ff00"), + limegreen: rgb("#32cd32"), + linen: rgb("#faf0e6"), + magenta: rgb("#ff00ff"), + maroon: rgb("#800000"), + mediumaquamarine: rgb("#66cdaa"), + mediumblue: rgb("#0000cd"), + mediumorchid: rgb("#ba55d3"), + mediumpurple: rgb("#9370db"), + mediumseagreen: rgb("#3cb371"), + mediumslateblue: rgb("#7b68ee"), + mediumspringgreen: rgb("#00fa9a"), + mediumturquoise: rgb("#48d1cc"), + mediumvioletred: rgb("#c71585"), + midnightblue: rgb("#191970"), + mintcream: rgb("#f5fffa"), + mistyrose: rgb("#ffe4e1"), + moccasin: rgb("#ffe4b5"), + navajowhite: rgb("#ffdead"), + navy: rgb("#000080"), + oldlace: rgb("#fdf5e6"), + olive: rgb("#808000"), + olivedrab: rgb("#6b8e23"), + orange: rgb("#ffa500"), + orangered: rgb("#ff4500"), + orchid: rgb("#da70d6"), + palegoldenrod: rgb("#eee8aa"), + palegreen: rgb("#98fb98"), + paleturquoise: rgb("#afeeee"), + palevioletred: rgb("#db7093"), + papayawhip: rgb("#ffefd5"), + peachpuff: rgb("#ffdab9"), + peru: rgb("#cd853f"), + pink: rgb("#ffc0cb"), + plum: rgb("#dda0dd"), + powderblue: rgb("#b0e0e6"), + purple: rgb("#800080"), + rebeccapurple: rgb("#663399"), + red: rgb("#ff0000"), + rosybrown: rgb("#bc8f8f"), + royalblue: rgb("#4169e1"), + saddlebrown: rgb("#8b4513"), + salmon: rgb("#fa8072"), + sandybrown: rgb("#f4a460"), + seagreen: rgb("#2e8b57"), + seashell: rgb("#fff5ee"), + sienna: rgb("#a0522d"), + silver: rgb("#c0c0c0"), + skyblue: rgb("#87ceeb"), + slateblue: rgb("#6a5acd"), + slategray: rgb("#708090"), + slategrey: rgb("#708090"), + snow: rgb("#fffafa"), + springgreen: rgb("#00ff7f"), + steelblue: rgb("#4682b4"), + tan: rgb("#d2b48c"), + teal: rgb("#008080"), + thistle: rgb("#d8bfd8"), + tomato: rgb("#ff6347"), + turquoise: rgb("#40e0d0"), + violet: rgb("#ee82ee"), + wheat: rgb("#f5deb3"), + white: rgb("#ffffff"), + whitesmoke: rgb("#f5f5f5"), + yellow: rgb("#ffff00"), + yellowgreen: rgb("#9acd32"), +) + +#let CREOLE = ( + "bold": ( + open: "**", + close: "**", + func: strong + ), + "italic": ( + open: "//", + close: "//", + func: emph + ), + "mono": ( + open: "\"\"", + close: "\"\"", + func: it => text(it, font: "DejaVu Sans Mono") + ), + "stricken": ( + open: "--", + close: "--", + func: strike + ), + "under": ( + open: "__", + close: "__", + func: underline + ), + "wavy": ( + open: "~~", + close: "~~", + func: it => panic("Wavy underline is not supported (see https://github.com/typst/typst/issues/2835)") + ) +) + +#let parse-creole(txt) = { + txt = txt.replace("\\n", "\n") + .replace("<<", sym.quote.angle.double.l) + .replace(">>", sym.quote.angle.double.r) + + let part-stack = () + let style-stack = () + let cur-style = none + + let steps = () + let tmp = "" + for char in txt { + cur-style = if style-stack.len() == 0 { + none + } else { + style-stack.last() + } + + tmp += char + + for (name, style) in CREOLE.pairs() { + if tmp.ends-with(style.close) { + //if cur-style == name { + if name in style-stack { + tmp = tmp.slice(0, tmp.len() - style.close.len()) + + let to-append = "" + let rev-style-stack = style-stack.rev() + let i = rev-style-stack.position(s => s == name) + for _ in range(i) { + let style = style-stack.pop() + tmp = CREOLE.at(style).open + tmp + } + style-stack.pop() + + if tmp.len() == 0 { + if part-stack.len() != 0 { + to-append += (style.func)(part-stack.pop()) + } + } else { + to-append += (style.func)(tmp) + } + tmp = "" + part-stack.last() = part-stack.last() + to-append + + break + } + } + if tmp.ends-with(style.open) { + tmp = tmp.slice(0, tmp.len() - style.open.len()) + part-stack.push(tmp) + tmp = "" + style-stack.push(name) + break + } + } + steps.push((part-stack, tmp, style-stack)) + } + if part-stack.len() == 0 { + part-stack.push(tmp) + } else { + part-stack.last() += tmp + } + + if style-stack.len() != 0 { + let dbg-steps = steps + let dbg-txt = txt + panic("Unclosed '" + style-stack.last() + "' style in string '" + txt + "'") + } + + return part-stack.join() +} + +#let parse-color(value) = { + if value.starts-with("#") { + value = value.slice(1) + } + let m = value.match(regex("^(.+)([|/\\\-])(.+)$")) + if m != none { + let (col1, angle, col2) = m.captures + col1 = parse-color(col1) + col2 = parse-color(col2) + angle = ( + "|": 0deg, + "/": 45deg, + "-": 90deg, + "\\": 135deg + ).at(angle) + return gradient.linear(col1, col2, angle: angle) + } + + if lower(value) in COLORS { + return COLORS.at(lower(value)) + } + + return rgb(value) +} + +#let is-boundary-stmt(line) = { + return line.starts-with("@startuml") or line.starts-with("@enduml") +} + +#let is-comment-stmt(line) = { + return line.starts-with("'") +} + +#let is-ret-stmt(line) = { + return line.starts-with("return") +} + +#let parse-ret-stmt(line) = { + let m = line.match(regex("^return(\s+(.*?))?$")) + let comment = m.captures.last() + return _ret(comment: comment) +} + +#let is-par-stmt(line) = { + for shape in SHAPES { + if shape == "custom" { + continue + } + if line.starts-with(shape) { + return true + } + } + return false +} + +#let parse-par-stmt(line) = { + let arg-stack = line.split(" ") + let arg-stack2 = () + let in-string = false + for arg in arg-stack { + if in-string { + if arg.ends-with("\"") { + arg = arg.slice(0, arg.len()-1) + in-string = false + } + arg-stack2.last() += " " + arg + } else { + if arg.starts-with("\"") { + arg = arg.slice(1) + if arg.ends-with("\"") { + arg = arg.slice(0, arg.len()-1) + } else { + in-string = true + } + } + if not in-string and arg.trim().len() == 0 { + continue + } + arg-stack2.push(arg) + } + } + arg-stack = arg-stack2.rev() + + let shape = arg-stack.pop() + let display-name = auto + let name = arg-stack.pop() + let color = auto + + while arg-stack.len() != 0 { + let arg = arg-stack.pop() + if arg == "as" { + display-name = name + name = arg-stack.pop() + } else if arg.starts-with("#") { + color = parse-color(arg) + } + } + + if display-name != auto { + display-name = parse-creole(display-name) + } + + return _par( + name, + display-name: display-name, + shape: shape, + color: color + ) +} + +#let is-gap-stmt(line) = { + return line == "|||" or line.match(regex("\|\|\d+\|\|")) != none +} + +#let parse-gap-stmt(line) = { + if line == "|||" { + return _gap() + } + let size = int(line.slice(2, line.len() - 2)) + return _gap(size: size) +} + +#let is-sep-stmt(line) = { + return line.starts-with("==") and line.ends-with("==") +} + +#let parse-sep-stmt(line) = { + let name = line.slice(2, -2).trim() + return _sep(name) +} + +#let is-evt-stmt(line) = { + return ( + line.starts-with("activate") or + line.starts-with("deactivate") or + line.starts-with("create") or + line.starts-with("destroy") + ) +} + +#let parse-evt-stmt(line) = { + let (evt, par, col) = line.match( + regex(```(?x) + ^ + (?.+?) + \s+ + (?.+?) + (?\s+.*)? + $```.text + ) + ).captures + if col != none { + col = parse-color(col.trim()) + } + + // TODO: lifeline style (i.e. use col) + + let event = ( + "activate": "enable", + "deactivate": "disable", + "create": "create", + "destroy": "destroy" + ).at(evt) + return _evt(par, event) +} + +#let is-grp-stmt(line) = { + return ( + line.starts-with("group") or + line.starts-with("loop") or + line.starts-with("alt") or + line.starts-with("else") + ) +} + +#let parse-grp-stmt(line) = { + let words = line.split(" ") + let group-type = words.first() + let rest = words.slice(1).join(" ") + let is-group = group-type == "group" + let name = group-type + let desc = rest + if is-group { + let m = rest.match( + regex( + ```(?x) + ^ + (.*?) + (\[.*\])? + $ + ```.text + ) + ) + name = m.captures.first() + desc = m.captures.last() + if desc != none { + desc = desc.trim(regex("[\[\]]*")) + } + } + return ( + name: name, + desc: desc, + type: if is-group { + "default" + } else { + group-type + } + ) +} + +#let is-simple-note-stmt(line) = { + return line.starts-with(regex("/?\s*[hr]?note")) and line.contains(":") +} + +#let parse-note-data(stmt) = { + let aligned = stmt.starts-with("/") + stmt = stmt.trim(regex("/?\s*")) + let data-parts = stmt.split(regex("\s+")) + let note-type = data-parts.at(0) + let shape = ( + "note": "default", + "hnote": "hex", + "rnote": "rect" + ).at(note-type) + let side = data-parts.at(1) + if side not in SIDES { + panic("Invalid note side '" + side + "'") + } + + let color = auto + if data-parts.last().starts-with("#") { + color = parse-color(data-parts.pop()) + } + + let pos = none + if side == "left" or side == "right" { + if data-parts.len() >= 3 { + if data-parts.at(2) == "of" and data-parts.len() >= 4 { + pos = data-parts.at(3) + } else { + pos = data-parts.at(2) + } + } + } else if side == "over" { + pos = data-parts.slice(2) + .join(" ") + .split(",") + .map(p => p.trim()) + if pos.len() == 1 { + pos = pos.first() + } + } + + return ( + side: side, + shape: shape, + color: color, + pos: pos, + aligned: aligned + ) +} +#let parse-simple-note-stmt(line) = { + let (data, ..note) = line.split(":") + note = note.join(":") + note = parse-creole(note.trim()) + + let note-data = parse-note-data(data) + + return _note( + note-data.side, + note, + color: note-data.color, + pos: note-data.pos, + shape: note-data.shape, + aligned: note-data.aligned + ) +} + +#let is-multiline-note-stmt(line) = { + return line.starts-with(regex("/?\s*[hr]?note")) and not line.contains(":") +} + +#let parse-multiline-note-stmt(line) = { + let note-data = parse-note-data(line) + note-data.insert("lines", ()) + + return note-data +} + +#let parse-seq-tips(arrow) = { + let m = arrow.trim().match( + regex(```(?x) + ^ + ([ox])? + (<|<<|\\|\\\\|/|//)? + (-{1,2}) + (>|>>|\\|\\\\|/|//)? + ([ox])? + $ + ```.text + ) + ) + + if m == none { + //panic(arrow) + return none + } + + let flip = false + let (pre-start, start, mid, end, post-end) = m.captures + if start != none and end == none { + flip = true + } + + if start != none { + start = ( + "<": ">", + "\\": "/", + "\\\\": "//", + "/": "\\", + "//": "\\\\", + ).at(start, default: start) + } + + let start-tip = (pre-start, start).filter(t => t != none) + let end-tip = (post-end, end).filter(t => t != none) + if start-tip.len() == 1 { + start-tip = start-tip.first() + } else if start-tip.len() == 0 { + start-tip = "" + } + if end-tip.len() == 1 { + end-tip = end-tip.first() + } else if end-tip.len() == 0 { + end-tip = "" + } + + if pre-start == "x" { + start-tip = "x" + } + if post-end == "x" { + end-tip = "x" + } + + return (start-tip, mid == "--", end-tip, flip) +} + +#let parse-seq-stmt(line) = { + let p1 = "" + let arrow = "" + let p2 = "" + let mods = "" + let comment = "" + let color = "" + let state = "idle" + let in-string = false + let steps = () + let post-par = "" + let p1-as = "" + let p2-as = "" + + for char in line.clusters() { + steps.push((state, char, in-string)) + if steps.len() > 12 { + let a = steps + } + + // Idle: go until first non whitespace character + // if first char is " -> in-string + if state == "idle" { + if char.match(regex("\s")) == none { + if char == "\"" { + in-string = true + } else { + p1 += char + } + + if p1 in ("[", "?") { + state = "post-p1" + } else { + state = "p1" + } + } + + // First participant: if in string, go until end of string, + // otherwise go until arrow character + } else if state == "p1" { + if in-string { + if char == "\"" { + in-string = false + state = "post-p1" + } else { + p1 += char + } + } else { + if char.match(regex(`-|<|>|\\|\\\\|/|//`.text)) != none { + arrow += char + state = "arrow" + } else if char.match(regex("\s")) != none { + state = "post-p1" + } else { + p1 += char + if p1 in ("[", "?") { + state = "post-p1" + } + } + } + + } else if state == "post-p1" { + if char.match(regex(`o|x|-|<|>|\\|\\\\|/|//`.text)) != none { + arrow += char + state = "arrow" + + } else if char.match(regex("\s")) == none { + post-par += char + if post-par.match(regex("as\s")) != none { + state = "p1-as" + post-par = "" + + } else if post-par.match("^(a(s(\s?))?)?$") == none { + panic("Unexpected characters '" + post-par + "' after first participant") + } + } + + } else if state == "p1-as" { + if char.match(regex("\s|o|x|-|<|>|\\|\\\\|/|//")) != none { + arrow += char + state = "arrow" + } else { + p1-as += char + } + + // Arrow: + } else if state == "arrow" { + if char.match(regex(`o|x|-|<|>|\\|\\\\|/|//`.text)) != none { + arrow += char + } else { + if char == "\"" { + in-string = true + state = "p2" + } else if char == " " { + state = "pre-p2" + } else { + p2 += char + state = "p2" + } + } + + } else if state == "pre-p2" { + if char.match(regex("\s")) == none { + if char == "\"" { + in-string = true + } else { + p2 += char + } + state = "p2" + } + + + // Second participant: if in string go until end of string + } else if state == "p2" { + if in-string { + if char == "\"" { + in-string = false + state = "post-p2" + } else { + p2 += char + } + } else { + if char.match(regex("\s")) != none { + state = "post-p2" + } else if char in "+-*!" { + state = "mods" + mods += char + } else if char == ":" { + state = "comment" + } else { + p2 += char + } + } + + } else if state == "post-p2" { + if post-par.len() == 0 { + if char.match(regex("\s")) != none { + continue + } + if char in "+-*!" { + state = "mods" + mods += char + } else if char == ":" { + state = "comment" + } else { + post-par += char + } + + } else { + post-par += char + if post-par.match(regex("^\s*as\s$")) != none { + state = "p2-as" + post-par = "" + + } else if post-par.match(regex("^\s*(a(s(\s?))?)?$")) == none { + let a = steps + panic("Unexpected characters '" + post-par + "' after second participant") + } + } + + } else if state == "p2-as" { + if char.match(regex("\s|\+|-|\*|!")) != none { + mods += char + state = "mods" + } else if char == ":" { + state = "comment" + } else { + p2-as += char + } + + } else if state == "mods" { + if char.match(regex("\s|\+|-|\*|!")) != none { + mods += char + } else { + if char == ":" { + state = "comment" + } else if char.match(regex("\s")) != none { + state = "post-mods" + } else { + panic("Unexpected character '" + char + "' after mods") + } + } + + } else if state == "post-mods" { + if char == ":" { + state = "comment" + } + + } else if state == "comment" { + comment += char + } + } + p1 = parse-creole(p1) + p2 = parse-creole(p2) + comment = parse-creole(comment.trim()) + p1-as = p1-as.trim() + p2-as = p2-as.trim() + let elmts = () + + if p1-as != "" { + elmts += _par(p1-as, display-name: p1) + p1 = p1-as + } + if p2-as != "" { + elmts += _par(p2-as, display-name: p2) + p2 = p2-as + } + + /*let m = line.match( + regex(```(?x) + ^ + (?[a-zA-Z0-9_]+) + \s* + (?[^o].*?) + \s* + (?[a-zA-Z0-9_]+) + \s* + (?[+\-*! ]{2,})? + \s* + (:\s*(?.*))? + ```.text + ) + )*/ + + /* + let m = line.match( + regex(```(?x) + ^ + (?[a-zA-Z0-9_\[?]+) + \s* + (?[^o].*?) + \s* + (?[a-zA-Z0-9_\]?]+) + \s* + (?[+\-*! ]*?) + \s* + (?\#.+)? + \s* + (?::\s*(?.*))? + $ + ```.text + ) + ) + + if m == none { + panic(line) + } + let (p1, arrow, p2, mods, color, comment) = m.captures + */ + + /* + let p1 = line.find(regex("^[a-zA-Z0-9_]+")) + + line = line.slice(p1.len()).trim() + let i = line.position(regex("(?:[^o])[a-zA-Z0-9_ ]")) + if i == none { + return () + } + let arrow = line.slice(0, i) + line = line.slice(i).trim() + + let p2 = line.find(regex("^[a-zA-Z0-9_]+")) + line = line.slice(p2.len()).trim() + */ + + //let comment = none + let enable-dst = false + let disable-src = false + let create-dst = false + let destroy-dst = false + /*if line.contains(":") { + (line, comment) = line.split(":") + comment = comment.trim() + line = line.trim() + }*/ + if mods.contains("++") { + enable-dst = true + } + if mods.contains("--") { + disable-src = true + } + if mods.contains("**") { + create-dst = true + } + if mods.contains("!!") { + destroy-dst = true + } + + // TODO start / end tips + let seq-tips = parse-seq-tips(arrow) + if seq-tips == none { + return () + } + let (start-tip, dashed, end-tip, flip) = seq-tips + if flip and p1 == p2 { + (start-tip, end-tip) = (end-tip, start-tip) + } + //panic(start-tip, dashed, end-tip) + //comment += json.encode((start-tip, dashed, end-tip)).replace("\n", "") + + elmts += _seq( + p1, p2, + comment: comment, + dashed: dashed, + start-tip: start-tip, + end-tip: end-tip, + enable-dst: enable-dst, + disable-src: disable-src, + create-dst: create-dst, + destroy-dst: destroy-dst, + flip: flip + ) + return elmts +} + +#let from-plantuml(code, width: auto) = { + let code = code.text + code = code.replace(regex("(?s)/'.*?'/"), "") + + let elmts = () + let lines = code.split("\n") + let group-stack = () + let note-data = none + + for line in lines { + if note-data != none { + let l = line.trim() + if l in ("end note", "endrnote", "endhnote") { + elmts += _note( + note-data.side, + note-data.lines.join("\n"), + color: note-data.color, + pos: note-data.pos, + shape: note-data.shape, + aligned: note-data.aligned + ) + note-data = none + } else { + note-data.lines.push(line) + } + continue + } + + line = line.trim() + if line.len() == 0 { continue } + + if is-boundary-stmt(line) or is-comment-stmt(line) { + continue + } else if is-par-stmt(line) { + elmts += parse-par-stmt(line) + } else if is-gap-stmt(line) { + elmts += parse-gap-stmt(line) + } else if is-sep-stmt(line) { + elmts += parse-sep-stmt(line) + } else if is-evt-stmt(line) { + elmts += parse-evt-stmt(line) + } else if is-ret-stmt(line) { + elmts += parse-ret-stmt(line) + } else if is-grp-stmt(line) { + let group-data = parse-grp-stmt(line) + group-data.insert("start-i", elmts.len()) + group-stack.push(group-data) + } else if line == "end" { + if group-stack.len() == 0 { + continue + } + + let data = group-stack.pop() + + if data.type in ("alt", "else") { + let sections = () + let section-elmts = () + + while true { + section-elmts = elmts.slice(data.start-i) + elmts = elmts.slice(0, data.start-i) + sections.push(section-elmts) + sections.push(data.desc) + if data.type == "alt" { + break + + } else if data.type != "else" { + panic("Alt/else group mismatch") + } + data = group-stack.pop() + } + + elmts += _alt(..sections.rev()) + continue + } + + let grp-elmts = elmts.slice(data.start-i) + elmts = elmts.slice(0, data.start-i) + elmts += _grp( + data.name, + grp-elmts, + desc: data.desc, + type: data.type + ) + } else if is-simple-note-stmt(line) { + elmts += parse-simple-note-stmt(line) + } else if is-multiline-note-stmt(line) { + note-data = parse-multiline-note-stmt(line) + } else { + elmts += parse-seq-stmt(line) + } + } + + return diagram(elmts, width: width) +} \ No newline at end of file