factor/libs/httpd/embedded.factor

36 lines
1.1 KiB
Factor
Raw Permalink Normal View History

2006-12-18 02:25:17 -05:00
! Copyright (C) 2005 Alex Chapman
! Copyright (C) 2006 Slava Pestov
2006-10-19 17:28:58 -04:00
! See http://factorcode.org/license.txt for BSD license.
2006-03-27 20:20:03 -05:00
IN: embedded
2006-12-18 02:25:17 -05:00
USING: sequences kernel parser namespaces io html errors ;
2006-03-27 20:20:03 -05:00
2006-12-18 02:25:17 -05:00
! See libs/httpd/test/ or libs/furnace/ for embedded usage
! examples!
2006-03-27 20:20:03 -05:00
2006-12-18 02:25:17 -05:00
: process-html ( parse-tree string -- parse-tree )
dup empty? [ drop ] [ parsed \ write-html parsed ] if ;
2006-03-27 20:20:03 -05:00
2006-12-18 02:25:17 -05:00
: process-embedded ( parse-tree string -- string parse-tree )
"<%" split1 >r process-html r> "%>" split1 >r (parse) r> ;
2006-03-27 20:20:03 -05:00
2006-12-18 02:25:17 -05:00
: (parse-embedded) ( parse-tree string -- parse-tree )
dup empty?
[ drop ] [ process-embedded (parse-embedded) ] if ;
2006-03-27 20:20:03 -05:00
: parse-embedded ( string -- quot )
2006-12-18 02:25:17 -05:00
[ f swap (parse-embedded) >quotation ] with-parser ;
2006-03-27 20:20:03 -05:00
: eval-embedded ( string -- ) parse-embedded call ;
: run-embedded-file ( filename -- )
2006-10-19 17:28:58 -04:00
[
[
file-vocabs
dup file set ! so that reload works properly
dup <file-reader> contents eval-embedded
] with-scope
] assert-depth drop ;
2006-03-27 20:20:03 -05:00
: embedded-convert ( infile outfile -- )
<file-writer> [ run-embedded-file ] with-stream ;