src/Pure/library.ML
changeset 27850 49503146b853
parent 26449 283107142592
child 28022 2cc19d1d4a42
equal deleted inserted replaced
27849:c74905423895 27850:49503146b853
   150   val commas_quote: string list -> string
   150   val commas_quote: string list -> string
   151   val cat_lines: string list -> string
   151   val cat_lines: string list -> string
   152   val space_explode: string -> string -> string list
   152   val space_explode: string -> string -> string list
   153   val split_lines: string -> string list
   153   val split_lines: string -> string list
   154   val prefix_lines: string -> string -> string
   154   val prefix_lines: string -> string -> string
   155   val untabify: string list -> string list
       
   156   val prefix: string -> string -> string
   155   val prefix: string -> string -> string
   157   val suffix: string -> string -> string
   156   val suffix: string -> string -> string
   158   val unprefix: string -> string -> string
   157   val unprefix: string -> string -> string
   159   val unsuffix: string -> string -> string
   158   val unsuffix: string -> string -> string
   160   val replicate_string: int -> string -> string
   159   val replicate_string: int -> string -> string
   755 val split_lines = space_explode "\n";
   754 val split_lines = space_explode "\n";
   756 
   755 
   757 fun prefix_lines "" txt = txt
   756 fun prefix_lines "" txt = txt
   758   | prefix_lines prfx txt = txt |> split_lines |> map (fn s => prfx ^ s) |> cat_lines;
   757   | prefix_lines prfx txt = txt |> split_lines |> map (fn s => prfx ^ s) |> cat_lines;
   759 
   758 
   760 fun untabify chs =
       
   761   let
       
   762     val tab_width = 8;
       
   763 
       
   764     fun untab pos [] ys = rev ys
       
   765       | untab pos ("\n" :: xs) ys = untab 0 xs ("\n" :: ys)
       
   766       | untab pos ("\t" :: xs) ys =
       
   767           let val d = tab_width - (pos mod tab_width)
       
   768           in untab (pos + d) xs (funpow d (cons " ") ys) end
       
   769       | untab pos (c :: xs) ys = untab (pos + 1) xs (c :: ys);
       
   770   in
       
   771     if not (exists (fn c => c = "\t") chs) then chs
       
   772     else untab 0 chs []
       
   773   end;
       
   774 
       
   775 fun prefix prfx s = prfx ^ s;
   759 fun prefix prfx s = prfx ^ s;
   776 fun suffix sffx s = s ^ sffx;
   760 fun suffix sffx s = s ^ sffx;
   777 
   761 
   778 fun unprefix prfx s =
   762 fun unprefix prfx s =
   779   if String.isPrefix prfx s then String.substring (s, size prfx, size s - size prfx)
   763   if String.isPrefix prfx s then String.substring (s, size prfx, size s - size prfx)