tcl::prefix - facilities for prefix matching
Contents
Description
This document describes commands looking up a prefix in a list of strings. The following commands are
supported:
::tcl::prefixalltablestring
Returns a list of all elements in table that begin with the prefix string.
::tcl::prefixlongesttablestring
Returns the longest common prefix of all elements in table that begin with the prefix string.
::tcl::prefixmatch ?option...? tablestring
If string equals one element in table or is a prefix to exactly one element, the matched element
is returned. If not, the result depends on the -error option. (It is recommended that the table be
sorted before use with this subcommand, so that the list of matches presented in the error message
also becomes sorted, though this is not strictly necessary for the operation of this subcommand
itself.) The following options are supported:
-exact Accept only exact matches.
-messagestring
Use string in the error message at a mismatch. Default is “option”.
-erroroptions
The options are used when no match is found. If options is empty, no error is generated and
an empty string is returned. Otherwise the options are used as return options when
generating the error message. The default corresponds to setting “-level 0”. Example: If
“-error {-errorcode MyError -level 1}” is used, an error would be generated as:
return -errorcode MyError -level 1 -code error \
"ambiguous option ..."
Examples
Basic use:
namespace import ::tcl::prefix
prefixmatch {apa bepa cepa} apa
→apaprefixmatch {apa bepa cepa} a
→apaprefixmatch -exact {apa bepa cepa} a
→badoption"a":mustbeapa,bepa,orcepaprefixmatch -message "switch" {apa ada bepa cepa} a
→ambiguousswitch"a":mustbeapa,ada,bepa,orcepaprefixlongest {fblocked fconfigure fcopy file fileevent flush} fc
→fcoprefixall {fblocked fconfigure fcopy file fileevent flush} fc
→fconfigurefcopy
Simplifying option matching:
array set opts {-apa 1 -bepa "" -cepa 0}
foreach {arg val} $args {
set opts([prefixmatch {-apa -bepa -cepa} $arg]) $val
}
Creating a switch that supports prefixes:
switch [prefixmatch {apa bepa cepa} $arg] {
apa { }
bepa { }
cepa { }
}
Keywords
prefix, table lookup
Tcl 8.6 prefix(3tcl)
Name
tcl::prefix - facilities for prefix matching
See Also
lsearch(3tcl), namespace(3tcl), string(3tcl), Tcl_GetIndexFromObj(3tcl)
Synopsis
::tcl::prefixalltablestring::tcl::prefixlongesttablestring::tcl::prefixmatch ?option...? tablestring ________________________________________________________________________________________________________________
