added position;
authorwenzelm
Sat, 21 Mar 2009 15:08:00 +0100
changeset 3062316b7ecc183e5
parent 30622 0226c07352db
child 30624 3d62ef3a27e6
added position;
added to_ML, from_ML (approximation);
src/Pure/General/pretty.ML
     1.1 --- a/src/Pure/General/pretty.ML	Sat Mar 21 15:08:00 2009 +0100
     1.2 +++ b/src/Pure/General/pretty.ML	Sat Mar 21 15:08:00 2009 +0100
     1.3 @@ -49,6 +49,7 @@
     1.4    val commas: T list -> T list
     1.5    val enclose: string -> string -> T list -> T
     1.6    val enum: string -> string -> string -> T list -> T
     1.7 +  val position: Position.T -> T
     1.8    val list: string -> string -> T list -> T
     1.9    val str_list: string -> string -> string list -> T
    1.10    val big_list: string -> T list -> T
    1.11 @@ -58,6 +59,8 @@
    1.12    val setmp_margin: int -> ('a -> 'b) -> 'a -> 'b
    1.13    val setdepth: int -> unit
    1.14    val pprint: T -> pprint_args -> unit
    1.15 +  val to_ML: T -> ML_Pretty.pretty
    1.16 +  val from_ML: ML_Pretty.pretty -> T
    1.17    val symbolicN: string
    1.18    val output_buffer: T -> Buffer.T
    1.19    val output: T -> output
    1.20 @@ -159,6 +162,9 @@
    1.21  
    1.22  fun enum sep lpar rpar prts = enclose lpar rpar (separate sep prts);
    1.23  
    1.24 +val position =
    1.25 +  enum "," "{" "}" o map (fn (x, y) => str (x ^ "=" ^ y)) o Position.properties_of;
    1.26 +
    1.27  val list = enum ",";
    1.28  fun str_list lpar rpar strs = list lpar rpar (map str strs);
    1.29  
    1.30 @@ -333,6 +339,15 @@
    1.31        | pp_lst (prt :: prts) = (pp prt; pp_lst prts);
    1.32    in pp (prune prt) end;
    1.33  
    1.34 +fun to_ML (Block (_, prts, ind, _)) = ML_Pretty.PrettyBlock (ind, false, [], map to_ML prts)
    1.35 +  | to_ML (String (s, _)) = ML_Pretty.PrettyString s
    1.36 +  | to_ML (Break (false, wd)) = ML_Pretty.PrettyBreak (wd, 0)
    1.37 +  | to_ML (Break (true, _)) = ML_Pretty.PrettyBreak (99999, 0);
    1.38 +
    1.39 +fun from_ML (ML_Pretty.PrettyBlock (ind, _, _, prts)) = blk (ind, map from_ML prts) (* FIXME markup *)
    1.40 +  | from_ML (ML_Pretty.PrettyString s) = String (s, size s)   (* FIXME proper length *)
    1.41 +  | from_ML (ML_Pretty.PrettyBreak (wd, _)) = if wd >= 99999 then fbrk else brk wd;
    1.42 +
    1.43  
    1.44  (* output interfaces *)
    1.45