|
Wil Baden 2000-07-07
Requires Tool Belt, Slurp, and Output Redirection.
#TAB-SPACES ( -- n )
#TAB-CHAR to align output.
.DETAB ( str len -- )
#TAB-CHAR expanded for
a multiple of #TAB-SPACES.
DETAB ( "filename" -- )
#TAB-CHAR
expanded for a multiple of #TAB-SPACES.
ONLY FORTH DEFINITIONS ALSO OUTPUT-REDIRECTION
\ 09 CONSTANT #TAB-CHAR
4 VALUE #TAB-SPACES
VARIABLE COLUMN
: .DETAB ( str len -- )
0 COLUMN !
BEGIN DUP WHILE
2DUP #TAB-CHAR SCAN /SPLIT
DUP COLUMN +! TYPE
DUP WHILE
#TAB-SPACES COLUMN @ OVER MOD -
DUP COLUMN +! SPACES
1 /STRING
REPEAT THEN
2DROP ;
: DETAB ( "filename" -- )
SPONGE >OUTPUT ( src length)
BEGIN DUP 0> WHILE
SPLIT-NEXT-LINE ( . . str len)
TRIM .DETAB CR ( src' length')
REPEAT 2DROP ( )
'OUTPUT @ CLOSE-FILE FILE-CHECK
0 >OUTPUT ;
ONLY FORTH DEFINITIONS