1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
Text ← "text" Attr "dy"‿"0.32em"∾⊢
w‿h ← 280‿260
Pnt ← 32‿57×⌽
comps ← "∘○˙⊸⟜˜"
names ← (¬×+`)⊸-∘=⟜' '⊸⊔ "Atop Over Constant Before After Self/Swap"
ps ← >⟨"class"‿"yellow","style"‿"fill:none","stroke-width"‿"2"⟩
_trans ← {(𝕗∾" transform='translate(")∾(⊣∾","∾⊢)○FmtNum∾")'"˙}
Groups ← "g font-size='20px' text-anchor='middle'"_trans˜⌜
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"⟩
FromPath ← ≠≍+´
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∾𝕩)⟩
}
DrawComp ← {𝕊𝕩:(names⊏˜comps⊐𝕩)𝕊𝕩; names 𝕊 spel:
sh ← ≢spel
ops ← ⍎∘⥊¨ spel
m2 ← ¬spel∊"˙˜"
isC ← spel='˙'
_symb ← {𝕗<⊸∾≍○<}
lrand ← isC⊏⟨"𝔽"_symb,"𝕗"⟩
lrsp ← isC⊏"𝔽"‿"𝕗"
app ← m2 {o←𝕩⊑ops⋄𝕨◶{𝕩_o}‿{𝕩_o_("𝔾"_symb)}𝕩⊑lrand}¨ ↕sh
res ← >{⟨𝕏"𝕩","𝕨"𝕏"𝕩"⟩}¨app
map ← ⟨⟩⊸{(1<≡)◶(≍(𝕨∾0)≍○<⊢)‿((𝕨≍○<⊑)∾⟜∾·𝕊¨˜⟜(𝕨⊸∾¨((2×↕)- -⟜1)∘≠)1↓⊢)𝕩}¨res
path‿name ← <˘⍉⁼><˘∘⍉¨map
notBase ← (1<≠)◶⟨1,0≠¯1⊸⊑⟩¨¨ path
path ↓¨¨˜↩ -¬notBase
vv ← (1↓⌽↓"𝕨"‿"𝕩") ∾˜¨⎉1 notBase /¨ name
vl ← (2 ≍⚇0 ⟨0⟩‿⟨¯1,1⟩) ∾˜¨⎉1 notBase FromPath¨∘/¨ path
vp ← Pnt¨¨ vl
g ← (20+h×⊢)⊸Groups⟜(5+w×0.5+⊢)○↕´ sh
label ← ⍉ ""‿"𝕨 " ∾⌜ ∾⟜" 𝕩"¨ lrsp∾¨spel∾⟜(/⟜"𝔾")¨m2
(⌽⟨0,2.4×w⟩⊸⌈⊸(⊣∾-˜÷2˙)10+h‿w×sh) SVG g Enc¨ <⎉1⍉>sh⊸⥊¨⟨
sh⥊< "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
⟩
⟩
}
DrawComp 2‿3⥊comps
|