forked from HEL/chronos
		
	added alt/else, loops and other group shortcuts
This commit is contained in:
		@@ -11,6 +11,36 @@
 | 
			
		||||
  ),)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#let _alt(desc, elmts, ..args) = {
 | 
			
		||||
  let all-elmts = ()
 | 
			
		||||
  all-elmts += elmts
 | 
			
		||||
  let args = args.pos()
 | 
			
		||||
  for i in range(0, args.len(), step: 2) {
 | 
			
		||||
    let else-desc = args.at(i)
 | 
			
		||||
    let else-elmts = args.at(i + 1, default: ())
 | 
			
		||||
    all-elmts.push((
 | 
			
		||||
      type: "else",
 | 
			
		||||
      desc: else-desc
 | 
			
		||||
    ))
 | 
			
		||||
    all-elmts += else-elmts
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return _grp("alt", desc: desc, type: "alt", all-elmts)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#let _loop(desc, min: none, max: auto, elmts) = {
 | 
			
		||||
  let name = "loop"
 | 
			
		||||
  if min != none {
 | 
			
		||||
    if max == auto {
 | 
			
		||||
      max = "*"
 | 
			
		||||
    }
 | 
			
		||||
    name += "(" + str(min) + "," + str(max) + ")"
 | 
			
		||||
  }
 | 
			
		||||
  _grp(name, desc: desc, type: "loop", elmts)
 | 
			
		||||
}
 | 
			
		||||
#let _opt(desc, elmts) = grp("opt", desc: desc, type: "opt", elmts)
 | 
			
		||||
#let _break(desc, elmts) = grp("break", desc: desc, type: "break", elmts)
 | 
			
		||||
 | 
			
		||||
#let render(x0, x1, y0, y1, group) = {
 | 
			
		||||
  let shapes = ()
 | 
			
		||||
  let name = text(group.name, weight: "bold")
 | 
			
		||||
@@ -50,5 +80,20 @@
 | 
			
		||||
    )
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return shapes
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#let render-else(x0, x1, y, elmt) = {
 | 
			
		||||
  let shapes = draw.line(
 | 
			
		||||
    (x0, y),
 | 
			
		||||
    (x1, y),
 | 
			
		||||
    stroke: (dash: (2pt, 1pt), thickness: .5pt)
 | 
			
		||||
  )
 | 
			
		||||
  shapes += draw.content(
 | 
			
		||||
    (x0, y),
 | 
			
		||||
    text([\[#elmt.desc\]], weight: "bold", size: .8em),
 | 
			
		||||
    anchor: "north-west",
 | 
			
		||||
    padding: 3pt
 | 
			
		||||
  )
 | 
			
		||||
  return shapes
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user