refmt←{⎕IO←0 ⍝ Reformat dfn/op. ⍺←4 ⋄ dent csep←⍺ ⍝ default indents and ⍝-separation unqt←{~≠\⍵=''''} ⍝ mask of unquoted tokens code coms←↓⍉↑{ ⍝ code and comment vectors umsk←unqt ⍵ ⍝ unquoted chars cmsk←∨\umsk∧⍵='⍝' ⍝ comment mask code coms←(0 1=⊂cmsk)/¨⊂⍵ ⍝ code / comments rlb←{(∨\' '≠⍵)/⍵} ⍝ remove leading blanks clean←⌽rlb⌽rlb code ⍝ cleaned code clean coms ⍝ clean code / comment }¨↓↑⍵ ⍝ for each line dents←{ ⍝ indentation for each line toks←(unqt ⍵){⍺\⍺/⍵}⍵ ⍝ unquoted code characters dvec←-⌿0 1⌽+\'{}'∘.=toks ⍝ brace-depth of each token lmask←toks='·' ⍝ start of each line (dent×lmask/dvec)/¨' ' ⍝ indentation for each line }↑,/'·',¨code ⍝ collected code vector scoms←(⊂csep⍴' '),¨coms ⍝ separated comments icode←↓↑dents,¨code ⍝ indented code lines rtb←⌽∘{(∨\⍵≠' ')/⍵}∘⌽ ⍝ remove trailing blanks qnr←icode,∘rtb¨scoms ⍝ reunited code and comments ↑⍣(1=≡⍵)⊢qnr ⍝ ⎕cr or ⎕nr } code_colours test script Back to: notes Back to: Workspaces