Diff for /gforth/wf.fs between versions 1.10 and 1.11

version 1.10, 2001/08/05 22:23:45 version 1.11, 2001/08/06 20:39:48
Line 2 Line 2
   
 require string.fs  require string.fs
   
   : -scan ( addr u char -- addr' u' )
     >r  BEGIN  dup  WHILE  1- 2dup + c@ r@ =  UNTIL  THEN
     rdrop ;
   : -$split ( addr u char -- addr1 u1 addr2 u2 )
     >r 2dup r@ -scan 2dup + c@ r> = negate over + >r
     2swap r> /string ;
   
 \ tag handling  \ tag handling
   
 : .' '' parse postpone SLiteral postpone type ; immediate  : .' '' parse postpone SLiteral postpone type ; immediate
Line 30  s" " tag-option $! Line 37  s" " tag-option $!
   
 \ environment handling  \ environment handling
   
   Variable end-sec
 Variable oldenv  Variable oldenv
 Variable envs 30 0 [DO] 0 , [LOOP]  Variable envs 30 0 [DO] 0 , [LOOP]
   
Line 40  Variable envs 30 0 [DO] 0 , [LOOP] Line 48  Variable envs 30 0 [DO] 0 , [LOOP]
     2dup < IF  env$ cell+ $@ /tag  env$ cell+ $off  THEN      2dup < IF  env$ cell+ $@ /tag  env$ cell+ $off  THEN
     drop oldenv ! ;      drop oldenv ! ;
 : +env  1 envs +! ;  : +env  1 envs +! ;
 : -env -1 envs +! env? ;  : -env end-sec @ envs @ 2 > or  IF  -1 envs +! env?  THEN ;
 : -envs envs @ 0 ?DO  -env cr  LOOP ;  : -envs envs @ 0 ?DO  -env cr  LOOP ;
 : >env ( addr u -- ) +env env env? ;  : >env ( addr u -- ) +env env env? ;
   
Line 53  Variable envs 30 0 [DO] 0 , [LOOP] Line 61  Variable envs 30 0 [DO] 0 , [LOOP]
         'c OF  s" center" align=  ENDOF          'c OF  s" center" align=  ENDOF
         '< OF  s" left"   align=  ENDOF          '< OF  s" left"   align=  ENDOF
         '> OF  s" right"  align=  ENDOF          '> OF  s" right"  align=  ENDOF
         '| OF  s" center" align=  ENDOF          '= OF  s" center" align=  ENDOF
     ENDCASE ;      ENDCASE ;
   
 : >border ( c -- )  : >border ( c -- )
Line 121  Variable do-icon Line 129  Variable do-icon
   
 Defer parse-line  Defer parse-line
   
   : .img ( addr u -- ) dup >r '| -$split  dup r> = IF  2swap  THEN 
       dup IF  2swap alt=  ELSE  2drop  THEN
       tag-option $@len >r over c@ >align  tag-option $@len r> = 1+ /string
       tag-option $@len >r over c@ >border tag-option $@len r> = 1+ /string
       2dup .img-size src= s" img" tag ;
   : >img ( -- )   '{ parse type '} parse .img ;
   
 : alt-suffix ( -- )  : alt-suffix ( -- )
     link-suffix $@len 2 - link-suffix $!len      link-suffix $@len 2 - link-suffix $!len
     s" [" link-suffix 0 $ins      s" [" link-suffix 0 $ins
Line 156  Defer parse-line Line 171  Defer parse-line
     link-sig $@ r/o open-file IF  drop  EXIT  THEN      link-sig $@ r/o open-file IF  drop  EXIT  THEN
     close-file throw      close-file throw
     ."  (" link-sig $@ href= s" a" tag      ."  (" link-sig $@ href= s" a" tag
     s" icons/sig.gif" '- >border src= s" img" tag ." sig" s" /a" tag ." )" ;      s" |-icons/sig.gif" .img ." sig" s" /a" tag ." )" ;
   
 : link-options ( addr u -- addr' u' )  : link-options ( addr u -- addr' u' )
     do-size off  do-icon on      do-size off  do-icon on
Line 167  Defer parse-line Line 182  Defer parse-line
     evaluate-input cell new-tib #tib ! tib !      evaluate-input cell new-tib #tib ! tib !
     ['] parse-line catch pop-file throw ;      ['] parse-line catch pop-file throw ;
   
 : .link ( addr u -- ) '| $split   : .link ( addr u -- ) dup >r '| -$split  dup r> = IF  2swap  THEN 
     link-options link $!      link-options link $!
     link $@len 0= IF  2dup link $! s" .html" link $+!  THEN      link $@len 0= IF  2dup link $! s" .html" link $+!  THEN
     link $@ href= s" a" tag link-icon?      link $@ href= s" a" tag link-icon?
     parse-string s" a" /tag link-size? link-sig? ;      parse-string s" a" /tag link-size? link-sig? ;
 : >link ( -- )  '[ parse type '] parse .link ;  : >link ( -- )  '[ parse type '] parse .link ;
   
 : .img ( addr u -- ) '| $split   
     dup IF  2swap alt=  ELSE  2drop  THEN  
     tag-option $@len >r over c@ >align  tag-option $@len r> = 1+ /string  
     tag-option $@len >r over c@ >border tag-option $@len r> = 1+ /string  
     2dup .img-size src= s" img" tag ;  
 : >img ( -- )   '{ parse type '} parse .img ;  
   
 \ line handling  \ line handling
   
 : char? ( -- c )  >in @ char swap >in ! ;  : char? ( -- c )  >in @ char swap >in ! ;
Line 271  Variable toc-link Line 279  Variable toc-link
 : >last ( addr link -- link' )  : >last ( addr link -- link' )
     BEGIN  dup @  WHILE  @  REPEAT  ! 0 ;      BEGIN  dup @  WHILE  @  REPEAT  ! 0 ;
   
 : toc, ( n -- ) , '| parse here 0 , $! here 0 , get-rest ;  : toc, ( n -- ) , 0 parse '| -$split 2swap here 0 , $! here 0 , $! ;
 : up-toc   align here toc-link >last , 0 toc, ;  : up-toc   align here toc-link >last , 0 toc, ;
 : top-toc  align here toc-link >last , 1 toc, ;  : top-toc  align here toc-link >last , 1 toc, ;
 : this-toc align here toc-link >last , 2 toc, ;  : this-toc align here toc-link >last , 2 toc, ;
Line 281  Variable toc-name Line 289  Variable toc-name
   
 : .toc-entry ( toc flag -- )  : .toc-entry ( toc flag -- )
     swap cell+ dup @ swap cell+ dup cell+ $@ 2dup href= s" a" tag      swap cell+ dup @ swap cell+ dup cell+ $@ 2dup href= s" a" tag
     1 /string toc-name $@ compare >r      '# scan 1 /string toc-name $@ compare >r
     $@ .img swap      $@ .img swap
     IF      IF
         case          case
             2 of  s" -icons/arrow_up.jpg" .img  endof              2 of  s" ^]|-icons/arrow_up.jpg" .img  endof
             3 of              3 of
                 r@ 0= IF s" -icons/circle.jpg"                  r@ 0= IF s" *]|-icons/circle.jpg"
                     ELSE s" -icons/arrow_down.jpg"  THEN  .img  endof                      ELSE s" v]|-icons/arrow_down.jpg"  THEN  .img  endof
         endcase          endcase
     ELSE      ELSE
         case          case
             0 of  s" -icons/arrow_up.jpg" .img  endof              0 of  s" ^]|-icons/arrow_up.jpg" .img  endof
             1 of  s" -icons/arrow_right.jpg" .img  endof              1 of  s" >]|-icons/arrow_right.jpg" .img  endof
             2 of  s" -icons/circle.jpg" .img  endof              2 of  s" *]|-icons/circle.jpg" .img  endof
             3 of  s" -icons/arrow_down.jpg" .img  endof              3 of  s" v]|-icons/arrow_down.jpg" .img  endof
         endcase          endcase
     THEN      THEN
     s" a" /tag rdrop      s" a" /tag rdrop
Line 305  Variable toc-name Line 313  Variable toc-name
         toc-name $! toc-name $@ name= s" " s" a" tagged  2          toc-name $! toc-name $@ name= s" " s" a" tagged  2
     THEN  >r      THEN  >r
     toc-link  BEGIN  @ dup  WHILE      toc-link  BEGIN  @ dup  WHILE
         dup cell+ @ 3 = r@ 0= and IF  rdrop 1 >r s" br" tag  THEN          dup cell+ @ 3 = r@ 0= and IF  rdrop 1 >r s" br" tag cr  THEN
         dup cell+ @ r@ >= IF  dup r@ 2 = .toc-entry  THEN          dup cell+ @ r@ >= IF  dup r@ 2 = .toc-entry  THEN
         dup cell+ @ 2 = r@ 2 = and IF  s" br" tag  THEN          dup cell+ @ 2 = r@ 2 = and IF  s" br" tag cr  THEN
     REPEAT  drop rdrop  cr ;      REPEAT  drop rdrop  cr ;
   
 \ handle global tags  \ handle global tags
Line 317  Variable indentlevel Line 325  Variable indentlevel
     2dup < IF swap DO  -env -env  LOOP  EXIT THEN      2dup < IF swap DO  -env -env  LOOP  EXIT THEN
     2dup > IF      DO  s" dl" >env s" dt" >env  LOOP EXIT THEN      2dup > IF      DO  s" dl" >env s" dt" >env  LOOP EXIT THEN
     2dup = IF drop IF  -env  s" dt" >env  THEN THEN ;      2dup = IF drop IF  -env  s" dt" >env  THEN THEN ;
 : +indent ( -- )  -env s" dd" >env ;  : +indent ( -- )  indentlevel @ IF  -env s" dd" >env  THEN ;
   
 wordlist constant longtags  wordlist constant longtags
   
 Variable end-sec  
   
 longtags set-current  longtags set-current
   
 : --- 0 indent cr s" hr" tag cr +indent ;  : --- 0 indent cr s" hr" tag cr +indent ;
Line 339  longtags set-current Line 345  longtags set-current
 : >> -env ;  : >> -env ;
 : *> -env ;  : *> -env ;
 : :: interpret ;  : :: interpret ;
 : . end-sec on indentlevel off ;  : . end-sec on 0 indent ;
 : :code s" pre" >env  : :code s" pre" >env
     BEGIN  source >in @ /string type cr refill  WHILE      BEGIN  source >in @ /string type cr refill  WHILE
         source s" :endcode" compare 0= UNTIL  THEN          source s" :endcode" compare 0= UNTIL  THEN

Removed from v.1.10  
changed lines
  Added in v.1.11


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>