equal
deleted
inserted
replaced
32 val binding_pos: string * Position.T -> binding |
32 val binding_pos: string * Position.T -> binding |
33 val binding: string -> binding |
33 val binding: string -> binding |
34 val no_binding: binding |
34 val no_binding: binding |
35 val prefix_of: binding -> (string * bool) list |
35 val prefix_of: binding -> (string * bool) list |
36 val name_of: binding -> string |
36 val name_of: binding -> string |
|
37 val is_nothing: binding -> bool |
37 val pos_of: binding -> Position.T |
38 val pos_of: binding -> Position.T |
38 val add_prefix: bool -> string -> binding -> binding |
39 val add_prefix: bool -> string -> binding -> binding |
39 val map_name: (string -> string) -> binding -> binding |
40 val map_name: (string -> string) -> binding -> binding |
40 val qualified: string -> binding -> binding |
41 val qualified: string -> binding -> binding |
|
42 val namify: NameSpace.naming -> binding -> NameSpace.naming * string |
41 val output: binding -> string |
43 val output: binding -> string |
42 end; |
44 end; |
43 |
45 |
44 structure Name: NAME = |
46 structure Name: NAME = |
45 struct |
47 struct |
170 (cons (prfx, sticky)); |
172 (cons (prfx, sticky)); |
171 |
173 |
172 val map_name = map_binding o apfst o apsnd; |
174 val map_name = map_binding o apfst o apsnd; |
173 val qualified = map_name o NameSpace.qualified; |
175 val qualified = map_name o NameSpace.qualified; |
174 |
176 |
|
177 fun is_nothing (Binding ((_, name), _)) = name = ""; |
|
178 |
|
179 fun namify naming (Binding ((prefix, name), _)) = |
|
180 let |
|
181 fun mk_prefix (prfx, true) = NameSpace.sticky_prefix prfx |
|
182 | mk_prefix (prfx, false) = NameSpace.add_path prfx; |
|
183 val naming' = fold mk_prefix prefix naming; |
|
184 in (naming', NameSpace.full naming' name) end; |
|
185 |
175 fun output (Binding ((prefix, name), _)) = |
186 fun output (Binding ((prefix, name), _)) = |
176 if null prefix orelse name = "" then name |
187 if null prefix orelse name = "" then name |
177 else NameSpace.implode (map fst prefix) ^ " / " ^ name; |
188 else NameSpace.implode (map fst prefix) ^ " / " ^ name; |
178 |
189 |
179 end; |
190 end; |