[gforth] / gforth / wf.fs  

gforth: gforth/wf.fs

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

version 1.10, Sun Aug 5 22:23:45 2001 UTC version 1.11, Mon Aug 6 20:39:48 2001 UTC
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 
Line 37 
   
 \ 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 
Line 48 
     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 
Line 61 
         '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 
Line 129 
   
 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 
Line 171 
     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 
Line 182 
     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 
Line 279 
 : >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 
Line 289 
   
 : .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 
Line 313 
         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 
Line 325 
     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 
Line 345 
 : >> -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


Generate output suitable for use with a patch program
Legend:
Removed from v.1.10  
changed lines
  Added in v.1.11

CVS Admin

Powered by ViewCVS 1.0-dev
(Powered by ViewCVS)

ViewCVS and CVS Help