⍝ Show dfn with "white dots":
dots refmt ⎕cr'dots'
dots←{ ⍝ Show dfn with "white dots".
· ⍺←'·' ⍝ white dot.
· kwds←':E' ':C' ':U'⍷¨⊂⍵ ⍝ end of ctrl paragraph keywords.
· ends←↑∨/kwds,⊂⍵='}' ⍝ end of cstructs and dfns.
· spcs←∧\' '=⍵ ⍝ leading spaces.
· xdents←ends∧1,0 ¯1↓spcs ⍝ leading exdents.
· flood←(⍪1 2){ ⍝ flood upwards into blanks.
· · hits←⍺⍷⍵ ⍝ 1s above 2s
· · ~1∊hits:⍵ ⍝ none: done.
· · ⍺ ∇ hits+⍵ ⍝ try again with 1 2 → 2 2.
· }spcs+2×xdents ⍝ spaces 'n braces.
· dmask←,2=flood-xdents ⍝ mask vector for white dots.
· ⍺@{2=flood-xdents}⍵ ⍝ dots in char matrix.
}
'│'dots refmt ⎕cr'dots'
dots←{ ⍝ Show dfn with "white dots".
│ ⍺←'·' ⍝ white dot.
│ kwds←':E' ':C' ':U'⍷¨⊂⍵ ⍝ end of ctrl paragraph keywords.
│ ends←↑∨/kwds,⊂⍵='}' ⍝ end of cstructs and dfns.
│ spcs←∧\' '=⍵ ⍝ leading spaces.
│ xdents←ends∧1,0 ¯1↓spcs ⍝ leading exdents.
│ flood←(⍪1 2){ ⍝ flood upwards into blanks.
│ │ hits←⍺⍷⍵ ⍝ 1s above 2s
│ │ ~1∊hits:⍵ ⍝ none: done.
│ │ ⍺ ∇ hits+⍵ ⍝ try again with 1 2 → 2 2.
│ }spcs+2×xdents ⍝ spaces 'n braces.
│ dmask←,2=flood-xdents ⍝ mask vector for white dots.
│ ⍺@{2=flood-xdents}⍵ ⍝ dots in char matrix.
}
⍝∇ dots refmt
Back to: code
Back to: Workspaces