forked from HEL/chronos
		
	
		
			
				
	
	
		
			211 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Typst
		
	
	
	
	
	
			
		
		
	
	
			211 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Typst
		
	
	
	
	
	
| #import "example.typ": example
 | |
| 
 | |
| #let seq-return = example(```
 | |
| _seq(
 | |
|   "Bob", "Alice",
 | |
|   comment: [hello],
 | |
|   enable-dst: true
 | |
| )
 | |
| _seq(
 | |
|   "Alice", "Alice",
 | |
|   comment: [some action]
 | |
| )
 | |
| _ret(comment: [bye])
 | |
| ```)
 | |
| 
 | |
| #let seq-comm-align = example(```
 | |
| _par("p1", display-name: "Start participant")
 | |
| _par("p2", display-name: "End participant")
 | |
| let alignments = (
 | |
|   "start", "end",
 | |
|   "left", "right",
 | |
|   "center"
 | |
| )
 | |
| for a in alignments {
 | |
|   _seq(
 | |
|     "p2", "p1",
 | |
|     comment: raw(a),
 | |
|     comment-align: a
 | |
|   )
 | |
| }
 | |
| ```)
 | |
| 
 | |
| #let seq-tips = example(```
 | |
| let _seq = _seq.with(comment-align: "center")
 | |
| _par("a", display-name: "Alice")
 | |
| _par("b", display-name: "Bob")
 | |
| 
 | |
| _seq("a", "b", comment: "Various tips", end-tip: "")
 | |
| _seq("a", "b", end-tip: ">", comment: `->`)
 | |
| _seq("a", "b", end-tip: ">>", comment: `->>`)
 | |
| _seq("a", "b", end-tip: "\\", comment: `-\`)
 | |
| _seq("a", "b", end-tip: "\\\\", comment: `-\\`)
 | |
| _seq("a", "b", end-tip: "/", comment: `-/`)
 | |
| _seq("a", "b", end-tip: "//", comment: `-//`)
 | |
| _seq("a", "b", end-tip: "x", comment: `->x`)
 | |
| _seq("a", "b", start-tip: "x", comment: `x->`)
 | |
| _seq("a", "b", start-tip: "o", comment: `o->`)
 | |
| _seq("a", "b", end-tip: ("o", ">"), comment: `->o`)
 | |
| _seq("a", "b", start-tip: "o",
 | |
|                end-tip: ("o", ">"), comment: `o->o`)
 | |
| _seq("a", "b", start-tip: ">",
 | |
|                end-tip: ">", comment: `<->`)
 | |
| _seq("a", "b", start-tip: ("o", ">"),
 | |
|                end-tip: ("o", ">"), comment: `o<->o`)
 | |
| _seq("a", "b", start-tip: "x",
 | |
|                end-tip: "x", comment: `x<->x`)
 | |
| _seq("a", "b", end-tip: ("o", ">>"), comment: `->>o`)
 | |
| _seq("a", "b", end-tip: ("o", "\\"), comment: `-\o`)
 | |
| _seq("a", "b", end-tip: ("o", "\\\\"), comment: `-\\o`)
 | |
| _seq("a", "b", end-tip: ("o", "/"), comment: `-/o`)
 | |
| _seq("a", "b", end-tip: ("o", "//"), comment: `-//o`)
 | |
| _seq("a", "b", start-tip: "x",
 | |
|                end-tip: ("o", ">"), comment: `x->o`)
 | |
| ```)
 | |
| 
 | |
| #let grp = example(```
 | |
| _par("a", display-name: "Alice")
 | |
| _par("b", display-name: "Bob")
 | |
| 
 | |
| _grp("Group 1", desc: "Description", {
 | |
|   _seq("a", "b", comment: "Authentication")
 | |
|   _grp("loop", desc: "1000 times", {
 | |
|     _seq("a", "b", comment: "DoS Attack")
 | |
|   })
 | |
|   _seq("a", "b", end-tip: "x")
 | |
| })
 | |
| ```)
 | |
| 
 | |
| #let alt = example(```
 | |
| _par("a", display-name: "Alice")
 | |
| _par("b", display-name: "Bob")
 | |
| 
 | |
| _alt(
 | |
|   "first encounter", {
 | |
|     _seq("a", "b", comment: "Who are you ?")
 | |
|     _seq("b", "a", comment: "I'm Bob")
 | |
|   },
 | |
| 
 | |
|   "know eachother", {
 | |
|     _seq("a", "b", comment: "Hello Bob")
 | |
|     _seq("b", "a", comment: "Hello Alice")
 | |
|   },
 | |
| 
 | |
|   "best friends", {
 | |
|     _seq("a", "b", comment: "Hi !")
 | |
|     _seq("b", "a", comment: "Hi !")
 | |
|   }
 | |
| )
 | |
| ```)
 | |
| 
 | |
| #let loop = example(```
 | |
| _par("a", display-name: "Alice")
 | |
| _par("b", display-name: "Bob")
 | |
| 
 | |
| _loop("default loop", {
 | |
|   _seq("a", "b", comment: "Are you here ?")
 | |
| })
 | |
| _gap()
 | |
| _loop("min loop", min: 1, {
 | |
|   _seq("a", "b", comment: "Are you here ?")
 | |
| })
 | |
| _gap()
 | |
| _loop("min-max loop", min: 1, max: 5, {
 | |
|   _seq("a", "b", comment: "Are you still here ?")
 | |
| })
 | |
| ```)
 | |
| 
 | |
| #let sync = example(```
 | |
| _par("alice", display-name: "Alice")
 | |
| _par("bob", display-name: "Bob")
 | |
| _par("craig", display-name: "Craig")
 | |
| 
 | |
| _seq("bob", "alice")  // Unsynchronized
 | |
| _seq("bob", "craig")  //  "
 | |
| _sync({
 | |
|   _seq("bob", "alice")  // Synchronized
 | |
|   _seq("bob", "craig")  //  "
 | |
| })
 | |
| _seq("alice", "bob")  // Unsynchronized
 | |
| _seq("craig", "bob")  //  "
 | |
| _sync({
 | |
|   _seq("alice", "bob")  // Synchronized
 | |
|   _seq("craig", "bob")  //  "
 | |
| })
 | |
| ```)
 | |
| 
 | |
| #let gaps = example(```
 | |
| _par("a", display-name: "Alice")
 | |
| _par("b", display-name: "Bob")
 | |
| 
 | |
| _seq("a", "b", comment: [message 1])
 | |
| _seq("b", "a", comment: [ok], dashed: true)
 | |
| _gap()
 | |
| _seq("a", "b", comment: [message 2])
 | |
| _seq("b", "a", comment: [ok], dashed: true)
 | |
| _gap(size: 40)
 | |
| _seq("a", "b", comment: [message 3])
 | |
| _seq("b", "a", comment: [ok], dashed: true)
 | |
| ```)
 | |
| 
 | |
| #let seps = example(```
 | |
| _par("a", display-name: "Alice")
 | |
| _par("b", display-name: "Bob")
 | |
| 
 | |
| _sep[Initialization]
 | |
| _seq("a", "b", comment: [Request 1])
 | |
| _seq(
 | |
|   "b", "a",
 | |
|   comment: [Response 1],
 | |
|   dashed: true
 | |
| )
 | |
| 
 | |
| _sep[Repetition]
 | |
| _seq("a", "b", comment: [Request 2])
 | |
| _seq(
 | |
|   "b", "a",
 | |
|   comment: [Response 2],
 | |
|   dashed: true
 | |
| )
 | |
| ```)
 | |
| 
 | |
| #let delays = example(```
 | |
| _par("a", display-name: "Alice")
 | |
| _par("b", display-name: "Bob")
 | |
| 
 | |
| _seq("a", "b", comment: [Auth Request])
 | |
| _delay()
 | |
| _seq(
 | |
|   "b", "a",
 | |
|   comment: [Auth Response],
 | |
|   dashed: true
 | |
| )
 | |
| _delay(name: [5 minutes later])
 | |
| _seq(
 | |
|   "b", "a",
 | |
|   comment: [Good Bye !],
 | |
|   dashed: true
 | |
| )
 | |
| ```)
 | |
| 
 | |
| #let notes-shapes = example(```
 | |
| _par("alice", display-name: "Alice")
 | |
| _par("bob", display-name: "Bob")
 | |
| _note("over", `default`, pos: "alice")
 | |
| _note("over", `rect`, pos: "bob", shape: "rect")
 | |
| _note("over", `hex`, pos: ("alice", "bob"), shape: "hex")
 | |
| ```)
 | |
| 
 | |
| #let notes-sides = example(```
 | |
| _par("alice", display-name: "Alice")
 | |
| _par("bob", display-name: "Bob")
 | |
| _par("charlie", display-name: "Charlie")
 | |
| _note("left", [`left` of Alice], pos: "alice")
 | |
| _note("right", [`right` of Charlie], pos: "charlie")
 | |
| _note("over", [`over` Alice and Bob], pos: ("alice", "bob"))
 | |
| _note("across", [`across` all participants])
 | |
| _seq("alice", "bob")
 | |
| _note("left", [linked with sequence])
 | |
| _note("over", [A note], pos: "alice")
 | |
| _note("over", [Aligned note], pos: "charlie", aligned: true)
 | |
| ```, vertical: true) |