htx←{⎕ML←1                      ⍝ Extract html segments.
    1≠≡,⍵:⍺ ∇↑{⍺,' ',⍵}/⍵       ⍝ accept vectors of vectors.

    xtags←{seg sep cmb vec ⍵}   ⍝ extract tags, where:
    seg←{(⎕IO=2|⍳⍴⍵)/⍵}         ⍝ segment with leading tag.
    sep←{((fm⍷⍵)to⍷⍵)⊂⍵}       ⍝ html separated at tags.
    cmb←{(~'  '⍷⍵)/⍵}           ⍝ compressed multiple blanks.
    vec←{(~⍵∊⎕TC){⍺\⍺/⍵}⍵}      ⍝ blanks for newlines.

    rlt←{(1++/∧\'>'≠⍵)↓⍵}       ⍝ remove leading tag.
    att←{⍵,to,'>'}              ⍝ append trailing tag.

    fm to←'<' '</',¨⊂⍺~'<>'     ⍝ opening and closing html tags.

    '<'=⊃⍺:att¨xtags,⍵          ⍝ ··tagged segments.
           rlt¨xtags,⍵          ⍝ untagged segments.
}
code_colours

test script

Back to: notes

Back to: Workspaces