equal
deleted
inserted
replaced
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 |