src/Pure/General/path.ML
changeset 53045 4c297ee47c28
parent 52106 090a519982e9
child 56134 4a7a07c01857
equal deleted inserted replaced
53044:be27b6be8027 53045:4c297ee47c28
    20   val append: T -> T -> T
    20   val append: T -> T -> T
    21   val appends: T list -> T
    21   val appends: T list -> T
    22   val make: string list -> T
    22   val make: string list -> T
    23   val implode: T -> string
    23   val implode: T -> string
    24   val explode: string -> T
    24   val explode: string -> T
       
    25   val split: string -> T list
    25   val pretty: T -> Pretty.T
    26   val pretty: T -> Pretty.T
    26   val print: T -> string
    27   val print: T -> string
    27   val dir: T -> T
    28   val dir: T -> T
    28   val base: T -> T
    29   val base: T -> T
    29   val ext: string -> T -> T
    30   val ext: string -> T -> T
   147       | (_, e :: es) => ([root_elem e], es));
   148       | (_, e :: es) => ([root_elem e], es));
   148     val elems = raw_elems |> filter_out (fn c => c = "" orelse c = ".") |> map explode_elem;
   149     val elems = raw_elems |> filter_out (fn c => c = "" orelse c = ".") |> map explode_elem;
   149 
   150 
   150   in Path (norm (rev elems @ roots)) end;
   151   in Path (norm (rev elems @ roots)) end;
   151 
   152 
       
   153 fun split str =
       
   154   space_explode ":" str
       
   155   |> map_filter (fn s => if s = "" then NONE else SOME (explode_path s));
       
   156 
   152 
   157 
   153 (* print *)
   158 (* print *)
   154 
   159 
   155 fun pretty path =
   160 fun pretty path =
   156   let val s = implode_path path
   161   let val s = implode_path path