⍝ Wrap word vector at ⍺ cols: 26 wrap ⎕a ABCDEFGHIJKLMNOPQRSTUVWXYZ 26 wrap,'A' A ' ·'subs 20 wrap 20⍴'tick ' tick·tick·tick·tick· ' ·'subs 19 wrap 20⍴'tock ' tock·tock·tock·tock ' ·'subs 18 wrap 20⍴'tuck ' tuck·tuck·tuck tuck· ' ·'subs 10 wrap ⎕a ⍝ butchered long "word". ABCDEFGHIJ KLMNOPQRST UVWXYZ 10 wrap 10 ¯1 10\'AB' ⍝ no extra line if exact wrap. AAAAAAAAAA BBBBBBBBBB 10 wrap 10 ¯5 5\'AB' ⍝ no removal of wrapped blanks. AAAAAAAAAA BBBBB ' ·'subs 20 wrap(1↓,⍉↑⍬(1 to 26))\⎕a A·BB·CCC·DDDD·EEEEE FFFFFF·GGGGGGG HHHHHHHH·IIIIIIIII JJJJJJJJJJ KKKKKKKKKKK LLLLLLLLLLLL MMMMMMMMMMMMM NNNNNNNNNNNNNN OOOOOOOOOOOOOOO PPPPPPPPPPPPPPPP QQQQQQQQQQQQQQQQQ RRRRRRRRRRRRRRRRRR SSSSSSSSSSSSSSSSSSS TTTTTTTTTTTTTTTTTTTT UUUUUUUUUUUUUUUUUUUU U VVVVVVVVVVVVVVVVVVVV VV WWWWWWWWWWWWWWWWWWWW WWW XXXXXXXXXXXXXXXXXXXX XXXX YYYYYYYYYYYYYYYYYYYY YYYYY ZZZZZZZZZZZZZZZZZZZZ ZZZZZZ Alpha ##.test'Line_vectors' txt←'Say can I have some of your purple berries? Yes, I''ve been eating them for six or seven weeks now; haven''t got sick once. Prob''ly keep us both alive.' wrap←{⎕io←1 ⍝ ⍺-wrap (Bob Smith). ⍺←⎕pw ⍝ default ⎕pw-wrap v←' ',⍵,' ' ⍝ blanks required at start and end j←(v=' ')/⍳⍴v ⍝ indices of blanks p←(j+⍺+1)∘.<j ⍝ 1s mark blanks past the cutoff m←p<1⌽p ⍝ mark last blank that fits on the line i←(⍴m)⍴1,(1↓⍴m)⍴0 ⍝ identity matrix c←⌹i-m ⍝ compute transitive closure of m v[c[1;]/j]←⎕ucs 13 ⍝ insert the line breaks 1↓¯1↓v ⍝ drop the extra blanks } ' ·'subs 24 wrap txt Say·can·I·have·some·of your·purple·berries? Yes,·I've·been·eating them·for·six·or·seven weeks·now;·haven't·got sick·once.·Prob'ly·keep us·both·alive. wrap←{⎕io ⎕ml←1 0 ⋄ ⍝ ⍺-wrap (John Daintree). ⍺←⎕PW ⍝ initialize ⍺≥⍴,⍵:,⊂⍵ ⍝ out if short enough sze←(⍵∊'-?., ')/⍳⍴⍵ ⍝ length of each choice len←⊃⌽(⍺≥sze)/sze ⍝ longest length len←⊃(len∊sze)⌽⍺ len ⍝ middle of word? (⊂len↑⍵),⍺ ∇ len↓⍵ ⍝ at valid wrap point } ' ·'subs 1 disp 24 wrap txt ┌→──────────────────────┬─────────────────────┬──────────────────────┬──────────────────────┬───────────────────────┬────────────────────────┬──────────────┐ │Say·can·I·have·some·of·│your·purple·berries?·│Yes,·I've·been·eating·│them·for·six·or·seven·│weeks·now;·haven't·got·│sick·once.·Prob'ly·keep·│us·both·alive.│ └──────────────────────→┴────────────────────→┴─────────────────────→┴─────────────────────→┴──────────────────────→┴───────────────────────→┴─────────────→┘ ⍝∇ wrap subs Back to: code Back to: Workspaces