diff options
| -rw-r--r-- | doc/combinator.bqn | 54 | ||||
| -rw-r--r-- | docs/style.css | 8 | ||||
| -rw-r--r-- | svg.bqn | 6 |
3 files changed, 68 insertions, 0 deletions
diff --git a/doc/combinator.bqn b/doc/combinator.bqn new file mode 100644 index 00000000..9d060d08 --- /dev/null +++ b/doc/combinator.bqn @@ -0,0 +1,54 @@ +Text ← "text" Attr "dy"‿"0.32em"∾⊢ + +ops ← ⍎∘⥊¨ spel ← "⊸⟜˜∘○˙" +m2 ← ∾˜1‿1‿0 +_symb ← {𝕗<⊸∾≍○<} +lrand ← 5‿1/⟨"𝔽"_symb,"𝕗"⟩ +lrsp ← 5‿1/"𝔽"‿"𝕗" +names ← (¬×+`)⊸-∘=⟜' '⊸⊔ "Before After Self/Swap Atop Over Constant" + +w‿h ← 280‿260 +Pnt ← 32‿57×⌽ + +app ← m2 {o←𝕩⊑ops⋄𝕨◶{𝕩_o}‿{𝕩_o_("𝔾"_symb)}𝕩⊑lrand}¨ ↕≠ops +res ← >{⟨𝕏"𝕩","𝕨"𝕏"𝕩"⟩}¨app +map ← ⟨⟩⊸{(1<≡)◶(≍(𝕨∾0)≍○<⊢)‿((𝕨≍○<⊑)∾⟜∾·𝕊¨˜⟜(𝕨⊸∾¨((2×↕)- -⟜1)∘≠)1↓⊢)𝕩}¨res +path‿name ← <˘⍉⁼><˘∘⍉¨map + +notBase ← (1<≠)◶⟨1,0≠¯1⊸⊑⟩¨¨ path +path ↓¨¨˜↩ -¬notBase +FromPath ← ≠≍+´ +vv ← (1↓⌽↓"𝕨"‿"𝕩") ∾˜¨⎉1 notBase /¨ name +vl ← (2 ≍⚇0 ⟨0⟩‿⟨¯1,1⟩) ∾˜¨⎉1 notBase FromPath¨∘/¨ path +vp ← Pnt¨¨ vl + +ps ← >⟨"class"‿"yellow","style"‿"fill:none","stroke-width"‿"2"⟩ +Connect ← { + e ← FromPath ¯1↓𝕨 + curve ← ⟨1‿1.3, 1‿1.25‿0.9‿1, 0.5‿1.25‿1‿0⟩ + c ← 𝕨 ((1=≠)⊸∧⟜(2=⊑))◶⟨⟩‿(⊑⊸((⊣(⊢×≢∘⊢⥊1∾⊣)curve⊑˜×)○×)⟜(1⊸⊑)) 𝕩 + "path" Elt ps∾⟨"d",∾("M"∾(2÷˜≠c)⊏"LQC")∾⟜(Fmt Pnt˘⌾(∘‿2⊸⥊))¨e‿(c∾𝕩)⟩ +} + +label ← ⍉ ""‿"𝕨 " ∾⌜ ∾⟜" 𝕩"¨ lrsp∾¨spel∾⟜(/⟜"𝔾")¨m2 + +_trans ← {(𝕗∾" transform='translate(")∾(⊣∾","∾⊢)○FmtNum∾")'"˙} +g ← (20+h×↕2) "g font-size='20px' text-anchor='middle'"_trans˜⌜ (5+w×0.5+↕3) + +rc ← >⟨"class"‿"code","stroke-width"‿"1","rx"‿"12"⟩ +rc ∾↩ (Pos⟨¯0.43×w,1⟩)∾"width"‿"height"≍˘FmtNum¨⟨0.86×w,h-55⟩ +cc ← >⟨"r"‿"12","class"‿"code","stroke-width"‿"0"⟩ +n ← Text∘‿2⥊⟨"y",FmtNum h-37, "fill","currentColor"⟩ +case ← (¯1‿1×w÷4.6) "g font-size='21px' font-family='monospace'"_trans¨ 25 +lt← Text∘‿2⥊⟨"y",FmtNum h-105, "font-size","19px"⟩ + +(0‿0∾10+3‿2×w‿h) SVG g Enc¨ ⌽ <⎉1⍉>2‿3⊸⥊¨⟨ + < "rect" Elt rc + n⊸Enc¨ names + (< case Enc¨ ⊢)⎉1 ∾¨´ ⟨ + (<lt Enc Highlight)¨ label + path Connect¨¨⟜(vl⊏¨˜vv(⊐⌈≠∘⊣|⊒)¨⊢)○((0<≠¨¨path)/¨⊢) name + ("circle" Elt cc∾⟨"cx","cy"⟩≍˘FmtNum¨)¨¨ vp + vp Text∘Pos⊸Enc⟜Highlight¨¨ vv + ⟩ +⟩ diff --git a/docs/style.css b/docs/style.css index 1f1e9fa0..47d82314 100644 --- a/docs/style.css +++ b/docs/style.css @@ -50,6 +50,10 @@ pre, code, textarea, .kb { border: 1px solid #bdcac4; letter-spacing: 0.2; } +.code { + fill: #e3e7e7; + stroke: #bdcac4; +} code { padding: 0.15em 0.1em 0.05em; white-space: nowrap; @@ -119,6 +123,7 @@ a:visited { color: #3d155f; } input { border-color: #0c0d0e; } textarea, pre, code { color: #969698; background-color: #0c0d0e; } textarea, pre, code, .kb { border-color: #040509; } + .code { fill: #0c0d0e; stroke: #040509; } code { border-color: #0c0d0e; background-color: #0f1011; } table td, th{ border-color: #636967; } table th { border-color: #88918c; background-color: #292a2b; } @@ -144,6 +149,9 @@ a:visited { color: #3d155f; } a:visited { color: #8781c1; } } +svg tspan { + fill: currentColor; +} .purple { fill:#d6afe0; stroke:#3d1b46; } text.purple { fill:#3b1346; stroke:none; } .bluegreen { fill:#55cbcb; stroke:#1c4e4e; } text.bluegreen { fill:#113939; stroke:none; } .yellow { fill:#e2d17f; stroke:#a28237; } text.yellow { fill:#7a5a0e; stroke:none; } @@ -1,5 +1,11 @@ # Utilities for creating SVG diagrams as strings +# Snag the code highlighter from md.bqn +Highlight ← { + AddT ← (↑∾"t"∾↓)¨˜⟜(1‿2⥊˜≢) # span to tspan + (1¨ <⊸∾ ·AddT⌾⊑GetHighlights)⊸Modify 𝕩 +} + IsLines ← 1<≡ DeNest ← {(3⌊≡)◶⟨!∘0,⥊<,⊢,∾𝕊¨⟩ ⥊𝕩} Indent ← " "⊸∾¨ DeNest |
