]> gitweb.factorcode.org Git - factor.git/blob - core/io/streams/nested/nested.factor
bb6a7a9111ac0258a2e5d2843f68917a4f2ff389
[factor.git] / core / io / streams / nested / nested.factor
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 ;
5 IN: io.streams.nested
6
7 TUPLE: filter-writer stream ;
8
9 M: filter-writer stream-format
10     stream>> stream-format ;
11
12 M: filter-writer stream-write
13     stream>> stream-write ;
14
15 M: filter-writer stream-write1
16     stream>> stream-write1 ;
17
18 M: filter-writer make-span-stream
19     stream>> make-span-stream ;
20
21 M: filter-writer make-block-stream
22     stream>> make-block-stream ;
23
24 M: filter-writer make-cell-stream
25     stream>> make-cell-stream ;
26
27 M: filter-writer stream-flush
28     stream>> stream-flush ;
29
30 M: filter-writer stream-nl
31     stream>> stream-nl ;
32
33 M: filter-writer stream-write-table
34     stream>> stream-write-table ;
35
36 M: filter-writer dispose
37     stream>> dispose ;
38
39 TUPLE: ignore-close-stream < filter-writer ;
40
41 M: ignore-close-stream dispose drop ;
42
43 C: <ignore-close-stream> ignore-close-stream
44
45 TUPLE: style-stream < filter-writer style ;
46
47 : do-nested-style ( style style-stream -- style stream )
48     [ style>> swap assoc-union ] [ stream>> ] bi ; inline
49
50 C: <style-stream> style-stream
51
52 M: style-stream stream-format
53     do-nested-style stream-format ;
54
55 M: style-stream stream-write
56     [ style>> ] [ stream>> ] bi stream-format ;
57
58 M: style-stream stream-write1
59     >r 1string r> stream-write ;
60
61 M: style-stream make-span-stream
62     do-nested-style make-span-stream ;
63
64 M: style-stream make-block-stream
65     [ do-nested-style make-block-stream ] [ style>> ] bi
66     <style-stream> ;
67
68 M: style-stream make-cell-stream
69     [ do-nested-style make-cell-stream ] [ style>> ] bi
70     <style-stream> ;
71
72 M: style-stream stream-write-table
73     [ [ [ stream>> ] map ] map ] [ ] [ stream>> ] tri*
74     stream-write-table ;