31 val breaks: T list -> T list |
31 val breaks: T list -> T list |
32 val fbreaks: T list -> T list |
32 val fbreaks: T list -> T list |
33 val blk: int * T list -> T |
33 val blk: int * T list -> T |
34 val block: T list -> T |
34 val block: T list -> T |
35 val strs: string list -> T |
35 val strs: string list -> T |
|
36 val raw_markup: Output.output * Output.output -> int * T list -> T |
36 val markup: Markup.T -> T list -> T |
37 val markup: Markup.T -> T list -> T |
37 val mark: Markup.T -> T -> T |
38 val mark: Markup.T -> T -> T |
38 val mark_str: Markup.T * string -> T |
39 val mark_str: Markup.T * string -> T |
39 val marks_str: Markup.T list * string -> T |
40 val marks_str: Markup.T list * string -> T |
40 val command: string -> T |
41 val command: string -> T |
59 val symbolicN: string |
60 val symbolicN: string |
60 val output_buffer: int option -> T -> Buffer.T |
61 val output_buffer: int option -> T -> Buffer.T |
61 val output: int option -> T -> Output.output |
62 val output: int option -> T -> Output.output |
62 val string_of_margin: int -> T -> string |
63 val string_of_margin: int -> T -> string |
63 val string_of: T -> string |
64 val string_of: T -> string |
|
65 val writeln: T -> unit |
|
66 val symbolic_output: T -> Output.output |
64 val symbolic_string_of: T -> string |
67 val symbolic_string_of: T -> string |
65 val str_of: T -> string |
68 val str_of: T -> string |
66 val writeln: T -> unit |
|
67 val to_ML: T -> ML_Pretty.pretty |
69 val to_ML: T -> ML_Pretty.pretty |
68 val from_ML: ML_Pretty.pretty -> T |
70 val from_ML: ML_Pretty.pretty -> T |
69 end; |
71 end; |
70 |
72 |
71 structure Pretty: PRETTY = |
73 structure Pretty: PRETTY = |
132 val fbrk = Break (true, 1); |
134 val fbrk = Break (true, 1); |
133 |
135 |
134 fun breaks prts = Library.separate (brk 1) prts; |
136 fun breaks prts = Library.separate (brk 1) prts; |
135 fun fbreaks prts = Library.separate fbrk prts; |
137 fun fbreaks prts = Library.separate fbrk prts; |
136 |
138 |
137 fun block_markup m (indent, es) = |
139 fun raw_markup m (indent, es) = |
138 let |
140 let |
139 fun sum [] k = k |
141 fun sum [] k = k |
140 | sum (e :: es) k = sum es (length e + k); |
142 | sum (e :: es) k = sum es (length e + k); |
141 in Block (m, es, indent, sum es 0) end; |
143 in Block (m, es, indent, sum es 0) end; |
142 |
144 |
143 fun markup_block m arg = block_markup (Markup.output m) arg; |
145 fun markup_block m arg = raw_markup (Markup.output m) arg; |
144 |
146 |
145 val blk = markup_block Markup.empty; |
147 val blk = markup_block Markup.empty; |
146 fun block prts = blk (2, prts); |
148 fun block prts = blk (2, prts); |
147 val strs = block o breaks o map str; |
149 val strs = block o breaks o map str; |
148 |
150 |
323 else formatted (the_default (! margin_default) margin) prt; |
325 else formatted (the_default (! margin_default) margin) prt; |
324 |
326 |
325 val output = Buffer.content oo output_buffer; |
327 val output = Buffer.content oo output_buffer; |
326 fun string_of_margin margin = Output.escape o output (SOME margin); |
328 fun string_of_margin margin = Output.escape o output (SOME margin); |
327 val string_of = Output.escape o output NONE; |
329 val string_of = Output.escape o output NONE; |
328 val symbolic_string_of = Output.escape o Buffer.content o symbolic; |
330 val writeln = Output.writeln o string_of; |
|
331 |
|
332 val symbolic_output = Buffer.content o symbolic; |
|
333 val symbolic_string_of = Output.escape o symbolic_output; |
|
334 |
329 val str_of = Output.escape o Buffer.content o unformatted; |
335 val str_of = Output.escape o Buffer.content o unformatted; |
330 val writeln = Output.writeln o string_of; |
|
331 |
336 |
332 |
337 |
333 |
338 |
334 (** ML toplevel pretty printing **) |
339 (** ML toplevel pretty printing **) |
335 |
340 |
336 fun to_ML (Block (m, prts, ind, _)) = ML_Pretty.Block (m, map to_ML prts, ind) |
341 fun to_ML (Block (m, prts, ind, _)) = ML_Pretty.Block (m, map to_ML prts, ind) |
337 | to_ML (String s) = ML_Pretty.String s |
342 | to_ML (String s) = ML_Pretty.String s |
338 | to_ML (Break b) = ML_Pretty.Break b; |
343 | to_ML (Break b) = ML_Pretty.Break b; |
339 |
344 |
340 fun from_ML (ML_Pretty.Block (m, prts, ind)) = block_markup m (ind, map from_ML prts) |
345 fun from_ML (ML_Pretty.Block (m, prts, ind)) = raw_markup m (ind, map from_ML prts) |
341 | from_ML (ML_Pretty.String s) = String s |
346 | from_ML (ML_Pretty.String s) = String s |
342 | from_ML (ML_Pretty.Break b) = Break b; |
347 | from_ML (ML_Pretty.Break b) = Break b; |
343 |
348 |
344 end; |
349 end; |
345 |
350 |