--- gforth/wf.fs 2007/12/31 18:40:24 1.53 +++ gforth/wf.fs 2008/10/29 20:45:33 1.60 @@ -1,6 +1,6 @@ \ wiki forth -\ Copyright (C) 2003,2004,2005,2006,2007 Free Software Foundation, Inc. +\ Copyright (C) 2003,2004,2005,2006,2007,2008 Free Software Foundation, Inc. \ This file is part of Gforth. @@ -258,7 +258,7 @@ Defer parse-line ELSE 2swap icon-tmp $! icon-prefix $@ icon-tmp $+! icon-tmp $+! icon-tmp $@ THEN dup >r '| -$split dup r> = IF 2swap THEN - dup IF 2swap alt= ELSE 2drop THEN + dup IF 2swap alt= ELSE 2drop s" " alt= THEN tag-class $@len >r over c@ >align tag-class $@len r> = 1+ /string tag-class $@len >r over c@ >border tag-class $@len r> = 1+ /string 2dup .img-size src= s" img" tag/ ; @@ -270,9 +270,13 @@ Defer parse-line s" ]" link-suffix $+! link-suffix $@ alt= ; +: replace.- ( addr u -- ) + bounds ?DO I c@ '. = IF '- I c! THEN LOOP ; + : get-icon ( addr u -- ) iconpath @ IF 2drop EXIT THEN - link-suffix $! s" .*" link-suffix $+! - icon-prefix $@ open-dir throw >r + link-suffix $! link-suffix $@ replace.- + s" .*" link-suffix $+! + icon-prefix $@ open-dir IF drop EXIT THEN >r BEGIN pad $100 r@ read-dir throw WHILE pad swap 2dup link-suffix $@ filename-match @@ -337,10 +341,15 @@ Variable expand-link Variable expand-prefix Variable expand-postfix -: ?expand ( addr u -- ) expand-link $! +: ?expand ( addr u -- addr u' ) expand-link $! do-expand @ IF expand-prefix $@ expand-link 0 $ins expand-postfix $@ expand-link $+! THEN + 0 >r + BEGIN expand-link $@ r@ /string WHILE + r> 1+ >r + c@ '& = IF s" amp;" expand-link r@ $ins THEN + REPEAT drop rdrop expand-link $@ ; : .link ( addr u -- ) dup >r '| -$split dup r> = IF 2swap THEN @@ -375,6 +384,7 @@ Create do-words $100 0 [DO] ' .text , [ : >tag '\ parse type '\ parse tag ; char>tag * b +char>tag / i char>tag _ em char>tag # code :noname '~ parse .type '~ parse .type ; '~ cells do-words + ! @@ -457,7 +467,7 @@ Create nav-buf 0 c, ELSE dup 'a 'z 1+ within IF nav+ ELSE dup '0 '9 1+ within IF nav+ ELSE dup bl = over '- = or IF '- nav+ - ELSE nav+ + ELSE drop THEN THEN THEN THEN LOOP ; : >nav ( addr u -- addr' u' ) @@ -485,7 +495,7 @@ Variable toc-index true Value toc-image : .toc-entry ( toc flag -- ) - swap cell+ dup @ swap cell+ dup cell+ $@ 2dup href= + swap cell+ dup @ swap cell+ dup cell+ $@ 2dup ?expand href= '# scan 1 /string toc-name $@ compare >r $@ toc-image IF s" a" tag .img swap IF @@ -526,7 +536,7 @@ true Value toc-image IF -env cr s" p" >env THEN ; : print-toc ( -- ) toc-index off cr - toc-image IF s" img-menu" ELSE s" menu" THEN id= + toc-image IF s" img-menu" ELSE s" menu" THEN class= s" div" >env cr s" p" >env 0 parse dup 0= IF toc-name $! 0 ELSE @@ -558,9 +568,9 @@ Variable divs longtags set-current : --- 0 indent cr s" hr" tag/ cr ; -: * 1 indent s" h1" dclass= s" h1" par +indent s" " dclass= ; -: ** 1 indent s" h2" dclass= s" h2" par +indent s" " dclass= ; -: *** 2 indent s" h3" dclass= s" h3" par +indent s" " dclass= ; +: * 1 indent +indent s" h1" dclass= s" h1" par s" " dclass= ; +: ** 1 indent +indent s" h2" dclass= s" h2" par s" " dclass= ; +: *** 2 indent +indent s" h3" dclass= s" h3" par s" " dclass= ; : -- 0 indent cr print-toc ; : && 0 parse id= ; : - s" ul" env s" li" par ; @@ -574,8 +584,8 @@ longtags set-current : p<< s" p" >env ; : << +env ; : <* s" center" class= ; -: env s" #ff0000" s" color" opt s" font" >env parse-par ; -: red> -env -env ; +: env parse-par ; +: red> -env ; : >> -env ; : *> ; : :: interpret ; @@ -689,8 +699,8 @@ Variable _favicon _charset $@ s" utf-8" str= 0= IF .' ' cr THEN .' ' cr + .' PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"' cr + .' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">' cr s" http://www.w3.org/1999/xhtml" s" xmlns" opt lang@ s" xml:lang" opt lang@ s" lang" opt s" html" >env cr s" head" >env cr @@ -725,7 +735,7 @@ Variable orig-date s" Mail|@/mail.gif" .img mail $@ mailto: mail-name $@ s" a" tagged public-key @ IF public-key $@ href= s" a" tag - s" PGP key|-@/gpg.asc.gif" .img s" a" /tag + s" PGP key|-@/gpg-asc.gif" .img s" a" /tag THEN -envs ; @@ -735,7 +745,7 @@ Variable orig-date '< sword -trailing mail-name $! '> sword mail $! ; : pgp-key ( -- ) bl sword -trailing public-key $! ; -: charset ( -- ) s" text/xhtml; charset=" content $! +: charset ( -- ) s" application/xhtml+xml; charset=" content $! bl sword -trailing 2dup content $+! _charset $! ; charset iso-8859-1