diff --git a/basis/html/streams/streams.factor b/basis/html/streams/streams.factor index 026a39db00..cf413dde11 100644 --- a/basis/html/streams/streams.factor +++ b/basis/html/streams/streams.factor @@ -1,8 +1,9 @@ ! Copyright (C) 2004, 2009 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: accessors assocs combinators destructors fry html io -io.styles kernel macros make math math.parser sequences -splitting strings xml.syntax ; +io.backend io.pathnames io.styles kernel macros make math +math.order math.parser namespaces sequences strings words +splitting xml xml.syntax ; IN: html.streams GENERIC: url-of ( object -- url ) @@ -12,21 +13,20 @@ M: object url-of drop f ; TUPLE: html-writer data ; INSTANCE: html-writer output-stream -: ( -- html-writer ) - html-writer new V{ } clone >>data ; - -: with-html-writer ( quot -- xml ) - [ swap with-output-stream* ] keep data>> ; inline - >data ; inline + +TUPLE: html-sub-stream < html-writer style parent ; : new-html-sub-stream ( style stream class -- stream ) - [ ] 3dip boa ; inline + new-html-writer + swap >>parent + swap >>style ; inline : end-sub-stream ( substream -- string style stream ) - [ stream>> data>> ] [ style>> ] [ parent>> ] tri ; + [ data>> ] [ style>> ] [ parent>> ] tri ; : object-link-tag ( xml style -- xml ) presented of [ url-of [ simple-link ] when* ] when* ; @@ -173,10 +173,16 @@ M: html-writer make-cell-stream M: html-writer stream-write-table [ table-style swap [ - [ stream>> data>> [XML ><-> XML] ] with map + [ data>> [XML ><-> XML] ] with map [XML <-> XML] ] with map [XML <->
XML] ] emit-html ; M: html-writer dispose drop ; + +: ( -- html-writer ) + html-writer new-html-writer ; + +: with-html-writer ( quot -- xml ) + [ swap with-output-stream* ] keep data>> ; inline