1 ! Copyright (C) 2006, 2008 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: arrays generic assocs kernel namespaces strings
4 quotations io continuations destructors accessors sequences ;
7 TUPLE: filter-writer stream ;
9 M: filter-writer stream-format
10 stream>> stream-format ;
12 M: filter-writer stream-write
13 stream>> stream-write ;
15 M: filter-writer stream-write1
16 stream>> stream-write1 ;
18 M: filter-writer make-span-stream
19 stream>> make-span-stream ;
21 M: filter-writer make-block-stream
22 stream>> make-block-stream ;
24 M: filter-writer make-cell-stream
25 stream>> make-cell-stream ;
27 M: filter-writer stream-flush
28 stream>> stream-flush ;
30 M: filter-writer stream-nl
33 M: filter-writer stream-write-table
34 stream>> stream-write-table ;
36 M: filter-writer dispose
39 TUPLE: ignore-close-stream < filter-writer ;
41 M: ignore-close-stream dispose drop ;
43 C: <ignore-close-stream> ignore-close-stream
45 TUPLE: style-stream < filter-writer style ;
47 : do-nested-style ( style style-stream -- style stream )
48 [ style>> swap assoc-union ] [ stream>> ] bi ; inline
50 C: <style-stream> style-stream
52 M: style-stream stream-format
53 do-nested-style stream-format ;
55 M: style-stream stream-write
56 [ style>> ] [ stream>> ] bi stream-format ;
58 M: style-stream stream-write1
59 >r 1string r> stream-write ;
61 M: style-stream make-span-stream
62 do-nested-style make-span-stream ;
64 M: style-stream make-block-stream
65 [ do-nested-style make-block-stream ] [ style>> ] bi
68 M: style-stream make-cell-stream
69 [ do-nested-style make-cell-stream ] [ style>> ] bi
72 M: style-stream stream-write-table
73 [ [ [ stream>> ] map ] map ] [ ] [ stream>> ] tri*