lini 0.7.2

Pretty diagrams from plain text, with fine-grained control. Compiles to clean, themeable SVG.
Documentation
// Wire markers (arrow, dot, diamond, crow on |line|) and template-internal wires
// — a |define| whose body wires its own children, so every instance routes itself.
{
  layout: column; gap: 26; padding: 24; font-weight: normal;

  |room::group| {
    layout: column; gap: 10; padding: 12;
    fill: --teal-wash; stroke: --teal-ink;
  } [
    inlet  |box| { fill: --teal-soft; stroke: --teal-ink; color: --teal-ink; } "in"
    outlet |box| { fill: --teal-soft; stroke: --teal-ink; color: --teal-ink; } "out"
    inlet -> outlet "flows"
  ]
}

|plain| { font-size: 18; font-weight: bold; } "Markers & internal wires"

ends |group| { layout: column; gap: 14; } [
  |caption| "markers"
  |line| { points: -80 0, 80 0; marker-end: arrow; stroke: --sky-ink; stroke-width: 2; }
  |line| { points: -80 0, 80 0; marker-start: dot; marker-end: dot; stroke: --green-ink; stroke-width: 2; }
  |line| { points: -80 0, 80 0; marker-end: diamond; stroke: --purple-ink; stroke-width: 2; }
  |line| { points: -80 0, 80 0; marker-end: crow; stroke: --orange-ink; stroke-width: 2; }
]

// each |room| materialises its own inlet -> outlet wire from the define body
rooms |row| { gap: 64; } [
  |caption| "internal wires"
  garden  |room| "Garden"
  kitchen |room| "Kitchen"
]
rooms.garden.outlet -> rooms.kitchen.inlet "carries"