equal
deleted
inserted
replaced
11 val empty: T |
11 val empty: T |
12 val add: string -> T -> T |
12 val add: string -> T -> T |
13 val add_substring: substring -> T -> T |
13 val add_substring: substring -> T -> T |
14 val markup: Markup.T -> (T -> T) -> T -> T |
14 val markup: Markup.T -> (T -> T) -> T -> T |
15 val content: T -> string |
15 val content: T -> string |
16 val output: TextIO.outstream -> T -> unit |
16 val output: T -> TextIO.outstream -> unit |
17 val write: Path.T -> T -> unit |
17 val write: Path.T -> T -> unit |
18 end; |
18 end; |
19 |
19 |
20 structure Buffer: BUFFER = |
20 structure Buffer: BUFFER = |
21 struct |
21 struct |
53 |
53 |
54 fun rev_buffer EmptyBuffer acc = acc |
54 fun rev_buffer EmptyBuffer acc = acc |
55 | rev_buffer (String (s, buf)) acc = rev_buffer buf (String (s, acc)) |
55 | rev_buffer (String (s, buf)) acc = rev_buffer buf (String (s, acc)) |
56 | rev_buffer (Substring (s, buf)) acc = rev_buffer buf (Substring (s, acc)); |
56 | rev_buffer (Substring (s, buf)) acc = rev_buffer buf (Substring (s, acc)); |
57 |
57 |
58 fun output stream buffer = |
58 fun output buffer stream = |
59 let |
59 let |
60 fun rev_output EmptyBuffer = () |
60 fun rev_output EmptyBuffer = () |
61 | rev_output (String (s, buf)) = (TextIO.output (stream, s); rev_output buf) |
61 | rev_output (String (s, buf)) = (TextIO.output (stream, s); rev_output buf) |
62 | rev_output (Substring (s, buf)) = (TextIO.outputSubstr (stream, s); rev_output buf); |
62 | rev_output (Substring (s, buf)) = (TextIO.outputSubstr (stream, s); rev_output buf); |
63 in rev_output (rev_buffer buffer empty) end; |
63 in rev_output (rev_buffer buffer empty) end; |
64 |
64 |
65 fun write path buf = File.open_output (fn stream => output stream buf) path; |
65 fun write path buf = File.open_output (output buf) path; |
66 |
66 |
67 end; |
67 end; |