|
Wil Baden 2000-07-07 - 2000-08-13
#TAB-SPACES .DETAB C CY DETAB DS FMT GLOSS GLOSSARY INDENT LC LIST OCCUR Q RECOM SCR SORT-LINES SORT-SAVED-STRINGS SS STATUS-QUO STEFF TSBW UNC VOID WC WWDefinitions are in the order in which they were needed in preparing the web site.
TEXT2000-07-07
CY
( Line Filter )
LINE: CY ( Line Filter )
." 0 [IF]" SPACE
#CHARS/LINE 7 - [CHAR] = EMITS
CR
|| TYPE CR ||
#CHARS/LINE 7 - [CHAR] - EMITS
SPACE ." [THEN]"
CR
LINE;
2000-07-07
#TAB-SPACES
( -- n )
#TAB-CHAR to align output.
.DETAB
( str len -- )
#TAB-CHAR expanded for
a multiple of #TAB-SPACES.
DETAB
( Line Filter )
#TAB-CHAR
expanded for a multiple of #TAB-SPACES.
\ 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 ;
LINE: DETAB
TRIM
.DETAB CR
LINE;
2000-07-10
UNC
( Line Filter )
LINE: UNC ( Line Filter )
S" \ " STARTS? IF 1 /STRING TYPE CR EXIT THEN
S" \ " STARTS? IF 2 /STRING TYPE CR EXIT THEN
TYPE CR
LINE;
2000-07-12
DS
( Line Filter )
LINE: DS ( Line Filter )
TRIM DUP 0= IF 2DROP EXIT THEN
TYPE CR CR
LINE;
2000-07-13
RECOM
( Line Filter )
LINE: RECOM ( Line Filter )
\ TRIM DUP 0= IF 2DROP CR EXIT THEN
S" 0 [IF]" STARTS? IF 2DROP
." 0 [IF]" SPACE #CHARS/LINE 7 - [CHAR] = EMITS CR
EXIT THEN
S" [THEN]" ENDS? IF 2DROP
#CHARS/LINE 7 - [CHAR] - EMITS ." [THEN]" CR
EXIT THEN
TYPE CR
LINE;
2000-07-14
WW
( Line Filter )
116 USER C#
LINE: WW ( Line Filter )
TRIM DUP 0= IF 2DROP CR CR EXIT THEN
OVER C@ IS-WHITE IF CR TYPE EXIT THEN
BEGIN
2DUP BL SCAN /SPLIT ( . . s2 l2 s1 l1)
DUP C# @ + #CHARS/LINE > IF CR THEN
TYPE SPACE
BL SKIP ( . . s2 l2)
DUP 0= UNTIL
2DROP ( . .)
LINE;
2000-07-14
FMT
( Line Filter )
LINE: FMT ( Line Filter )
\ Uses TEMP for indentation.
TRIM DUP 0= IF 2DROP ( src .)
C# @ IF CR THEN
CR 0 TEMP !
EXIT THEN ( . . str len)
2DUP BL SKIP >R DROP DUP R> - ( . . str len indent)
DUP >R TEMP @ = NOT IF ( . . str len)
C# @ IF CR THEN
R@ SPACES
THEN
R> DUP TEMP ! /STRING
BEGIN
2DUP BL SCAN /SPLIT ( . . str2 len2 str1 len1)
DUP C# @ + #CHARS/LINE >
IF CR TEMP @ SPACES THEN
TYPE SPACE ( . . str2 len2)
BL SKIP
DUP 0= UNTIL
2DROP ( src .)
LINE;
2000-07-15
STEFF
( Line Filter )
LINE: STEFF ( Line Filter )
TRIM DUP 0= IF 2DROP CR EXIT THEN
OVER C@ IS-WHITE IF TYPE CR EXIT THEN
2DUP 1- + C@ [CHAR] ) = NOT IF TYPE CR EXIT THEN
2DUP S" ( " SEARCH IF /SPLIT
TRIM DUP >R TYPE 19 R> - 1 MAX SPACES
TYPE CR
EXIT THEN
2DROP TYPE CR
LINE;
2000-07-16
SS
( Line Filter )
LINE: SS ( Line Filter )
TRIM DUP 0= IF 2DROP EXIT THEN
TYPE CR
LINE;
2000-07-20
C
LINE: C
DUP IF ." \ " THEN
TYPE CR
LINE;
2000-07-20
VOID
( Line Filter )
LINE: VOID ( Line Filter )
." [VOID] [IF]" CR
|| TYPE CR ||
." [THEN]" CR
LINE;
2000-07-21
LC
( -- n )
: LC ( -- n )
0 TEMP !
CLIPBOARD BEGIN #EOL-CHAR SCAN DUP WHILE
1 TEMP +!
1 /STRING
REPEAT 2DROP
TEMP @ ;
2000-07-23
INDENT
( Line Filter )
LINE: INDENT ( Line Filter )
TRIM DUP IF 4 SPACES THEN TYPE CR LINE;
2000-07-25
STATUS-QUO
( -- addr )
HERE.
SORT-SAVED-STRINGS
( -- )
STATUS-QUO @
and HERE.
SORT-LINES
( Line Filter )
HERE in STATUS-QUO, save lines in data space,
display saved lines in sorted order, restore HERE.
VARIABLE STATUS-QUO
: SORT-SAVED-STRINGS ( -- )
HERE OUT ! 0 C,
BEGIN
STATUS-QUO @ BEGIN DUP C@ WHILE ( addr)
DUP COUNT OUT @ COUNT COMPARE 0> NOT
WHILE COUNT + REPEAT THEN
DUP C@
WHILE
DUP TEMP !
BEGIN COUNT + DUP C@ WHILE
DUP COUNT OUT @ COUNT COMPARE 0> IF
DUP COUNT TEMP @ COUNT COMPARE 0< IF
DUP TEMP !
THEN
THEN
REPEAT DROP ( )
TEMP @ COUNT TYPE CR
TEMP @ OUT !
REPEAT DROP ;
LINE: SORT-LINES
HERE STATUS-QUO !
||
DUP IF 2DUP STRING, THEN
2DROP
||
SORT-SAVED-STRINGS
STATUS-QUO @ HERE - ALLOT
LINE;
2000-07-25
TSBW
( Line Filter )
LINE: TSBW ( Line Filter )
4 SPACES
||
BEGIN BL-SKIP DUP WHILE
2DUP BL-SCAN /SPLIT
DUP 3 + C# @ + #CHARS/LINE >
IF CR 4 SPACES THEN
TYPE 3 SPACES
REPEAT 2DROP
||
CR
LINE;
2000-07-25
WC
( -- n )
: WC ( -- n )
0 TEMP !
CLIPBOARD BEGIN BL-SKIP DUP WHILE
1 TEMP +!
BL-SCAN
REPEAT 2DROP
TEMP @ ;
2000-07-26
SCR
( -- addr )
LIST
( file-id -- )
SCR and list the file.
VARIABLE SCR
: LIST ( file-id -- )
SCR ! ( )
SCR @ SLURP TYPE BURP
SCR @ REWIND-FILE FILE-CHECK ;
2000-08-01
GLOSS
( Line Filter )
: .Gloss ( src . str len -- src . )
TRIM DUP 0= IF 2DROP EXIT THEN
COMMENTARY-STARTS IF 2DROP COMMENTARY ON EXIT THEN
COMMENTARY-ENDS IF 2DROP COMMENTARY OFF EXIT THEN
COMMENTARY @ 0= IF 2DROP EXIT THEN
HANGING-INDENT IF
OVER C@ [CHAR] ` = IF
1 /STRING 2DUP [CHAR] ` SCAN NIP -
ELSE
2DUP BL-SCAN NIP -
THEN
STRING,
EXIT THEN
2DROP ;
LINE: GLOSS
HERE STATUS-QUO !
|| .Gloss ||
SORT-SAVED-STRINGS
STATUS-QUO @ HERE - ALLOT
LINE;
2000-08-13
OCCUR
( " pattern" -- )
: OCCUR ( " pattern" -- )
LEXEME PAD PLACE
CR
0 TEMP !
CLIPBOARD BEGIN DUP 0> WHILE
SPLIT-NEXT-LINE
1 TEMP +!
2DUP PAD COUNT SEARCH NIP NIP IF
TEMP @ 3 .R SPACE
2DUP TYPE CR
THEN
2DROP
REPEAT 2DROP ;
2000-08-13
Q
( Line Filter )
LINE: Q
TRIM DUP IF ." > " THEN
TYPE CR
LINE;