12 val is_current: T -> bool |
12 val is_current: T -> bool |
13 val current: T |
13 val current: T |
14 val root: T |
14 val root: T |
15 val named_root: string -> T |
15 val named_root: string -> T |
16 val parent: T |
16 val parent: T |
|
17 val make: string list -> T |
17 val basic: string -> T |
18 val basic: string -> T |
18 val variable: string -> T |
19 val variable: string -> T |
19 val has_parent: T -> bool |
20 val has_parent: T -> bool |
20 val is_absolute: T -> bool |
21 val is_absolute: T -> bool |
21 val is_basic: T -> bool |
22 val is_basic: T -> bool |
22 val starts_basic: T -> bool |
23 val starts_basic: T -> bool |
23 val append: T -> T -> T |
24 val append: T -> T -> T |
24 val appends: T list -> T |
25 val appends: T list -> T |
25 val make: string list -> T |
|
26 val implode: T -> string |
26 val implode: T -> string |
27 val explode: string -> T |
27 val explode: string -> T |
28 val decode: T XML.Decode.T |
28 val decode: T XML.Decode.T |
29 val split: string -> T list |
29 val split: string -> T list |
30 val pretty: T -> Pretty.T |
30 val pretty: T -> Pretty.T |
86 | is_current _ = false; |
86 | is_current _ = false; |
87 |
87 |
88 val current = Path []; |
88 val current = Path []; |
89 val root = Path [Root ""]; |
89 val root = Path [Root ""]; |
90 fun named_root s = Path [root_elem s]; |
90 fun named_root s = Path [root_elem s]; |
|
91 val make = Path o rev o map basic_elem; |
91 fun basic s = Path [basic_elem s]; |
92 fun basic s = Path [basic_elem s]; |
92 fun variable s = Path [variable_elem s]; |
93 fun variable s = Path [variable_elem s]; |
93 val parent = Path [Parent]; |
94 val parent = Path [Parent]; |
94 |
95 |
95 fun has_parent (Path xs) = exists (fn Parent => true | _ => false) xs; |
96 fun has_parent (Path xs) = exists (fn Parent => true | _ => false) xs; |
115 | apply Parent (Basic _ :: rest) = rest |
116 | apply Parent (Basic _ :: rest) = rest |
116 | apply y xs = y :: xs; |
117 | apply y xs = y :: xs; |
117 |
118 |
118 fun append (Path xs) (Path ys) = Path (fold_rev apply ys xs); |
119 fun append (Path xs) (Path ys) = Path (fold_rev apply ys xs); |
119 fun appends paths = Library.foldl (uncurry append) (current, paths); |
120 fun appends paths = Library.foldl (uncurry append) (current, paths); |
120 val make = appends o map basic; |
|
121 |
121 |
122 fun norm elems = fold_rev apply elems []; |
122 fun norm elems = fold_rev apply elems []; |
123 |
123 |
124 |
124 |
125 (* implode *) |
125 (* implode *) |