src/Pure/General/pretty.ML
changeset 49656 7ff712de5747
parent 49565 ea4308b7ef0f
child 50162 e06eabc421e7
equal deleted inserted replaced
49655:6642e559f165 49656:7ff712de5747
    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