Provided by: tcllib_1.21+dfsg-1_all bug

NAME

       namespacex - Namespace utility commands

SYNOPSIS

       package require Tcl  8.5

       package require namespacex  ?0.3?

       ::namespacex hook add ?namespace? cmdprefix

       ::namespacex hook proc ?namespace? arguments body

       ::namespacex hook on ?namespace? guardcmdprefix actioncmdprefix

       ::namespacex hook next arg...

       ::namespacex import fromns cmdname ?newname ...?

       ::namespacex info allchildren namespace

       ::namespacex info allvars namespace

       ::namespacex normalize namespace

       ::namespacex info vars namespace ?pattern?

       ::namespacex state get namespace

       ::namespacex state set namespace dict

       ::namespacex state drop namespace

       ::namespacex strip prefix namespaces

_________________________________________________________________________________________________

DESCRIPTION

       This  package  provides  a  number  of  utility commands for working with namespaces.  The
       commands fall into four categories:

       [1]    Hook commands provide and manipulate a chain of commands which replaces the  single
              regular namespace unknown handler.

       [2]    An  import  command  provides  the  ability  to  import  any  command  from another
              namespace.

       [3]    Information commands allow querying of variables and child namespaces.

       [4]    State commands provide a means to serialize variable values in a namespace.

COMMANDS

       ::namespacex hook add ?namespace? cmdprefix
              Adds the cmdprefix to the chain of unknown command handlers that are  invoked  when
              the  namespace  would  otherwise  invoke  its unknown handler.  If namespace is not
              specified, then cmdprefix is added to the chain of handlers for  the  namespace  of
              the caller.

              The  chain  of  cmdprefix  are executed in reverse order of addition, i.e. the most
              recently  added  cmdprefix  is  executed  first.   When  executed,  cmdprefix   has
              additional arguments appended to it as would any namespace unknown handler.

       ::namespacex hook proc ?namespace? arguments body
              Adds  an  anonymous  procedure  to  the chain of namespace unknown handlers for the
              namespace.

              If namespace is not specified, then the handler is added to the chain  of  handlers
              for the namespace of the caller.

              The arguments and body are specified as for the core proc command.

       ::namespacex hook on ?namespace? guardcmdprefix actioncmdprefix
              Adds a guarded action to the chain of namespace unknown handlers for the namespace.

              If  namespace  is not specified, then the handler is added to the chain of handlers
              for the namespace of the caller.

              The guardcmdprefix is executed first. If it returns a value that can be interpreted
              as  false,  then  the  next  unknown  hander  in  the chain is executed. Otherwise,
              actioncmdprefix is executed and the return  value  of  the  handler  is  the  value
              returned by actioncmdprefix.

              When  executed,  both  guardcmdprefix  and actioncmdprefix have the same additional
              arguments appended as for any namespace unknown handler.

       ::namespacex hook next arg...
              This command is available to namespace hooks to execute the next hook in the  chain
              of handlers for the namespace.

       ::namespacex import fromns cmdname ?newname ...?
              Imports  the  command  cmdname  from the fromns namespace into the namespace of the
              caller.  The cmdname command is imported even if  the  fromns  did  not  originally
              export the command.

              If  newname  is  specified,  then  the imported command will be known by that name.
              Otherwise, the command retains is original name as given by cmdname.

              Additional pairs of cmdname / newname arguments may also be specified.

       ::namespacex info allchildren namespace
              Returns a list containing the names  of  all  child  namespaces  in  the  specified
              namespace and its children. The names are all fully qualified.

       ::namespacex info allvars namespace
              Returns a list containing the names of all variables in the specified namespace and
              its children. The names  are  all  given  relative  to  namespace,  and  not  fully
              qualified.

       ::namespacex normalize namespace
              Returns the absolute name of namespace, which is resolved relative to the namespace
              of the caller, with all unneeded colon characters removed.

       ::namespacex info vars namespace ?pattern?
              Returns a list containing the names of all variables in  the  specified  namespace.
              If  the  pattern  argument  is  specified, then only variables matching pattern are
              returned. Matching is determined using the same rules as for string match.

       ::namespacex state get namespace
              Returns a dictionary holding the names and values of all variables in the specified
              namespace and its child namespaces.

              Note that the names are all relative to namespace, and not fully qualified.

       ::namespacex state set namespace dict
              Takes a dictionary holding the names and values for a set of variables and replaces
              the current state of the specified namespace and its  child  namespaces  with  this
              state.  The result of the command is the empty string.

       ::namespacex state drop namespace
              Unsets  all  variables  in  the  specified namespace and its child namespaces.  The
              result of the command is the empty string.

       ::namespacex strip prefix namespaces
              Each item in namespaces must be the absolute normalized name of a  child  namespace
              of  namespace  prefix.   Returns  the corresponding list of relative names of child
              namespaces.

BUGS, IDEAS, FEEDBACK

       This document, and the package it describes,  will  undoubtedly  contain  bugs  and  other
       problems.   Please  report  such  in  the  category  namespacex  of  the  Tcllib  Trackers
       [http://core.tcl.tk/tcllib/reportlist].  Please also report any ideas for enhancements you
       may have for either package and/or documentation.

       When proposing code changes, please provide unified diffs, i.e the output of diff -u.

       Note further that attachments are strongly preferred over inlined patches. Attachments can
       be made by going to the Edit form of the ticket immediately after its creation,  and  then
       using the left-most button in the secondary navigation bar.

KEYWORDS

       extended namespace, info, namespace unknown, namespace utilities, state (de)serialization,
       unknown hooking, utilities

COPYRIGHT

       Copyright (c) 200? Neil Madden (http://wiki.tcl.tk/12790)
       Copyright (c) 200? Various (http://wiki.tcl.tk/1489)
       Copyright (c) 2010 Documentation, Andreas Kupries