src/Pure/ML/ml_syntax.ML
changeset 41415 23533273220a
parent 40626 d86540f6ea0d
child 41491 a2ad5b824051
equal deleted inserted replaced
41414:00b2b6716ed8 41415:23533273220a
    24   val print_indexname: indexname -> string
    24   val print_indexname: indexname -> string
    25   val print_class: class -> string
    25   val print_class: class -> string
    26   val print_sort: sort -> string
    26   val print_sort: sort -> string
    27   val print_typ: typ -> string
    27   val print_typ: typ -> string
    28   val print_term: term -> string
    28   val print_term: term -> string
    29   val pretty_string: string -> Pretty.T
    29   val pretty_string: int -> string -> Pretty.T
    30 end;
    30 end;
    31 
    31 
    32 structure ML_Syntax: ML_SYNTAX =
    32 structure ML_Syntax: ML_SYNTAX =
    33 struct
    33 struct
    34 
    34 
    97   | print_term (t1 $ t2) = atomic (print_term t1) ^ " $ " ^ atomic (print_term t2);
    97   | print_term (t1 $ t2) = atomic (print_term t1) ^ " $ " ^ atomic (print_term t2);
    98 
    98 
    99 
    99 
   100 (* toplevel pretty printing *)
   100 (* toplevel pretty printing *)
   101 
   101 
   102 fun pretty_string raw_str =
   102 fun pretty_string max_len str =
   103   let
   103   let
   104     val str =
   104     val body =
   105       implode (map (fn XML.Elem _ => "<markup>" | XML.Text s => s) (YXML.parse_body raw_str))
   105       maps (fn XML.Elem _ => ["<markup>"] | XML.Text s => Symbol.explode s) (YXML.parse_body str)
   106         handle Fail _ => raw_str;
   106         handle Fail _ => Symbol.explode str;
   107     val syms = Symbol.explode str;
   107     val body' =
   108   in Pretty.str (quote (implode (map print_char syms))) end;
   108       if length body <= max_len then body
       
   109       else take max_len body @ ["..."];
       
   110   in Pretty.str (quote (implode (map print_char body'))) end;
   109 
   111 
   110 end;
   112 end;