Synopsis edit
-
- namespace qualifiers string
Description edit
namespace qualifiers is the complement (almost - see below) of
namespace tail. It returns the leading namespace qualifiers for
string, or, when
string is
::, the
empty string. Qualifiers are namespace names separated by
::. The operation of
namespace qualifiers is purely lexical. It does not check whether the namespace names exist.
Examples edit
The value of
namespace qualifiers ::foo::bar::x
is
::foo::bar
Namespace qualifiers is inconsistent when applied to names in the root namespace:
% namespace qualifiers ::foo::bar
::foo
% namespace qualifiers foo::bar
foo
% namespace qualifiers foo
% namespace qualifiers ::foo
This makes it a bit tricky to use correctly. Using
ensemble extend it's not hard to write a more ergonomic version:
extend namespace {
proc join {prefix name} {
if {[string match ::* $name]} {
return $name
}
if {$prefix eq "::"} {
return ::$name
}
return ${prefix}::$name
}
proc prefix {name} {
string range $name 0 end-[string length [namespace tail $name]]
}
}
With these two procs,
$x is always equal to:
namespace join [
namespace prefix $x
] [
namespace tail $x
]
See Also edit
- namespace