Index: DESCRIPTION.txt
==================================================================
--- DESCRIPTION.txt
+++ DESCRIPTION.txt
@@ -2,11 +2,11 @@
Title: Tcl Standard Library
Description: This package is intended to be a collection of
Tcl packages that provide utility functions useful to a
large collection of Tcl programmers.
Rights: BSD
-Version: 1.18
+Version: 1.19
URL: http://core.tcl.tk/tcllib
Architecture: tcl
Contributor:
nameserv. All abilities of a
client are covered, from configuration to registration of names to
searching.
This name service facility has nothing to do with the Internet's -Domain Name System, otherwise known as DNS. If the +Domain Name System, otherwise known as DNS. If the reader is looking for a package dealing with that please see either of the packages dns and resolv, both found in Tcllib too.
nns was written with the following two main use cases in Index: embedded/www/tcllib/files/apps/nnsd.html ================================================================== --- embedded/www/tcllib/files/apps/nnsd.html +++ embedded/www/tcllib/files/apps/nnsd.html @@ -134,11 +134,11 @@ command line server for the nano name service facility provided by the Tcllib packages nameserv, and nameserv::server. Beyond that the application's sources also serve as an example of how to use the server package nameserv::server.
This name service facility has nothing to do with the Internet's -Domain Name System, otherwise known as DNS. If the +Domain Name System, otherwise known as DNS. If the reader is looking for a package dealing with that please see either of the packages dns and resolv, both found in Tcllib too.
nnsd was written with the following main use case in Index: embedded/www/tcllib/files/apps/nnslog.html ================================================================== --- embedded/www/tcllib/files/apps/nnslog.html +++ embedded/www/tcllib/files/apps/nnslog.html @@ -136,11 +136,11 @@
It essentially implements "nns search -continuous *", but uses a different output formatting. Instead of continuously showing the current contents of the server in the terminal it simply logs all received add/remove events to stdout.
This name service facility has nothing to do with the Internet's -Domain Name System, otherwise known as DNS. If the +Domain Name System, otherwise known as DNS. If the reader is looking for a package dealing with that please see either of the packages dns and resolv, both found in Tcllib too.
nnslog was written with the following main use case in mind.
Index: embedded/www/tcllib/files/apps/pt.html ================================================================== --- embedded/www/tcllib/files/apps/pt.html +++ embedded/www/tcllib/files/apps/pt.html @@ -485,11 +485,11 @@ The default value is 1.The oo format is executable code, a parser for the grammar. It -is a Tcl package holding a TclOO class, whose instances are +is a Tcl package holding a TclOO class, whose instances are parsers for the input grammar.
This result-format supports the following options:
Hashes, checksums, and encryption
Text processing
Text processing
Text processing
This package provides a Tcl-only implementation of the yEnc file encoding. This is a recently introduced method of encoding binary files for transmission through Usenet. This encoding packs binary data into a format that requires an 8-bit clean transmission layer but that -escapes characters special to the NNTP posting protocols. See +escapes characters special to the NNTP posting protocols. See http://www.yenc.org/ for details concerning the algorithm.
returns the yEnc encoded data.
Text processing
Copyright © 2002, Pat Thoyts
bench language, benchmark, performance, specification, testing
+bench language, benchmark, performance, specification, testing
Benchmark tools
Hashes, checksums, and encryption
Copyright © 2008 Andreas Kupries <andreas_kupries@users.sourceforge.net>
More than one comm channel (or listener) can be created in each Tcl interpreter. This allows flexibility to create full and -restricted channels. For instance, hook scripts are specific +restricted channels. For instance, hook scripts are specific to the channel they are defined against.
This creates a new channel and Tcl command with the given channel name. This new command controls the new channel and takes all the @@ -404,11 +404,11 @@
This is a mechanism for setting hooks for particular events:
This uses a syntax similar to Tk's bind command. Prefixing +
This uses a syntax similar to Tk's bind command. Prefixing script with a + causes the new script to be appended. Without this, a new script replaces any existing script. When invoked without a script, no change is made. In all cases, the new hook script is returned by the command.
When an event occurs, the script associated with it is @@ -1000,11 +1000,13 @@
Tcl-DP provides an RPC-based remote execution interface, but is a compiled Tcl extension. See http://www.cs.cornell.edu/Info/Projects/zeno/Projects/Tcl-DP.html.
Michael Doyle <miked@eolas.com> has code that implements the Tcl-DP -RPC interface using standard Tcl sockets, much like comm.
+RPC interface using standard Tcl sockets, much like comm. +The DpTcl package is available at +http://chiselapp.com/user/gwlester/repository/DpTcl.Andreas Kupries <andreas_kupries@users.sourceforge.net> uses comm and has built a simple nameserver as part of his Pool library. See http://www.purl.org/net/akupries/soft/pool/index.htm.
coroutine - Coroutine based event and IO handling
Data structures
checksum, cksum, crc, crc16, crc32, cyclic redundancy check, data integrity, security
+checksum, cksum, crc, crc16, crc32, cyclic redundancy check, data integrity, security
Hashes, checksums, and encryption
checksum, cksum, crc, crc32, cyclic redundancy check, data integrity, security, sum
+checksum, cksum, crc, crc32, cyclic redundancy check, data integrity, security, sum
Hashes, checksums, and encryption
cron - Tool for automating the period callback of commands
System
Copyright © 2016 Sean Woods <yoda@etoyoc.com>
+Copyright © 2016-2018 Sean Woods <yoda@etoyoc.com>
Beyond that it recognizing the various internal forms of method calls generated by the snit OO system and rewrites these to their original form, for better readability. -Similarly for TclOO.
+Similarly for TclOO.If args are specified then they are treated as the integer indices of command arguments to not show in the output. The referenced arguments are replaced by * instead. The main anticipiated use case for this is the exclusion of arguments expected to contain large Tcl values, i.e. long lists, large Index: embedded/www/tcllib/files/modules/debug/debug_heartbeat.html ================================================================== --- embedded/www/tcllib/files/modules/debug/debug_heartbeat.html +++ embedded/www/tcllib/files/modules/debug/debug_heartbeat.html @@ -156,11 +156,11 @@ 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.
debugging, tracing, and logging
Utilites
Resolve a domain name using the DNS protocol. query is +
Resolve a domain name using the DNS protocol. query is the domain name to be lookup up. This should be either a fully qualified domain name or a DNS URI.
Specify an alternative name server for this request.
resolver(5)
DNS, domain name service, resolver, rfc 1034, rfc 1035, rfc 1886, rfc 7858
+DNS, domain name service, resolver, rfc 1034, rfc 1035, rfc 1886, rfc 7858
Networking
Copyright © 2002, Pat Thoyts
The special commands which are available inside a catalogue are:
Declares that the code for a package with name name and version version is made up from those modules in the source @@ -558,11 +558,11 @@ contributed patch) that was computed for a generated file to the docstrip source. This can be useful if someone has edited a generated file, thus mistaking it for being the source. This command makes no presumptions which are specific for the case that the generated file is a Tcl script.
-patch requires that the source file to patch is kept as a +
patch requires that the source file to patch is kept as a list of lines in a variable, and the name of that variable in the calling context is what goes into the source-var argument. The terminals is the list of terminals used to extract the file that has been patched. The diff is the actual diff to apply (in a format as explained below) and the fromtext is @@ -615,11 +615,11 @@
The return value is in the form of a unified diff, containing only those hunks which were not applied or were only partially applied; a comment in the header of each hunk specifies which case is at hand. It is normally necessary to manually review both the return - value from patch and the patched text itself, as this command + value from patch and the patched text itself, as this command cannot adjust comment lines to match new content.
An example use would look like
set sourceL [split [docstrip::util::thefile from.dtx] \n] set terminals {foo bar baz} @@ -661,14 +661,14 @@
.ddt, .dtx, LaTeX, Tcl module, catalogue, diff, docstrip, doctools, documentation, literate programming, module, package indexing, patch, source
+.ddt, .dtx, LaTeX, Tcl module, catalogue, diff, docstrip, doctools, documentation, literate programming, module, package indexing, patch, source
Documentation tools
Copyright © 2003–2010 Lars Hellström <Lars dot Hellstrom at residenset dot net>
This package provides Tcl commands for the processing and reformatting -text in the format generated by the cvs log command.
+text in the format generated by the cvs log command.The commands ::doctools::cvs::scanLog and ::doctools::cvs::toChangeLog are derived from code found on the Tcl'ers Wiki. See the references at the end of the page.
The command takes the text and parses it under the assumption -that it contains a CVS log as generated by cvs log. The +that it contains a CVS log as generated by cvs log. The resulting information is stored in the variables whose names were specified via evar, cvar, and fvar.
Already existing information in the referenced variables is preserved, allowing the caller to merge data from multiple logs into one database.
@@ -195,14 +195,14 @@[uri, http://wiki.tcl.tk/log2changelog
Documentation tools
Copyright © 2003-2008 Andreas Kupries <andreas_kupries@users.sourceforge.net>
This package provides a class for the creation of objects able to process and convert text written in the docidx markup language -into any output format X for which a formatting engine is +into any output format X for which a formatting engine is available.
A reader interested in the markup language itself should start with the docidx language introduction and proceed from there to the formal specifications, i.e. the docidx language syntax and the docidx language command reference.
Index: embedded/www/tcllib/files/modules/doctools/docidx_lang_intro.html ================================================================== --- embedded/www/tcllib/files/modules/doctools/docidx_lang_intro.html +++ embedded/www/tcllib/files/modules/doctools/docidx_lang_intro.html @@ -169,11 +169,11 @@In the above example the command key is used to declare the keyword phrases we wish to be part of the index.
However a truly useful index does not only list the keyword phrases, but will also contain references to documents associated with the keywords. Here is a made-up index for all the manpages in the module -base64:
+base64:[index_begin tcllib/base64 {De- & Encoding}] [key base64] [manpage base64] [key encoding] Index: embedded/www/tcllib/files/modules/doctools/docidx_plugin_apiref.html ================================================================== --- embedded/www/tcllib/files/modules/doctools/docidx_plugin_apiref.html +++ embedded/www/tcllib/files/modules/doctools/docidx_plugin_apiref.html @@ -150,11 +150,11 @@
This document is intended for plugin writers, i.e. developers -wishing to write an index formatting engine for some output +wishing to write an index formatting engine for some output format X.
It specifies the interaction between the doctools::idx package and its plugins, i.e. the interface any index formatting engine has to comply with.
This document deals with version 1 of the interface.
@@ -430,14 +430,14 @@docidx_intro, docidx_lang_cmdref, docidx_lang_faq, docidx_lang_intro, docidx_lang_syntax, doctools::idx
formatting engine, index, index formatter, keywords, markup, plugin, semantic markup
+formatting engine, index, index formatter, keywords, markup, plugin, semantic markup
Documentation tools
Copyright © 2007 Andreas Kupries <andreas_kupries@users.sourceforge.net>
This package provides a class for the creation of objects able to process and convert text written in the doctoc markup language -into any output format X for which a formatting engine is +into any output format X for which a formatting engine is available.
A reader interested in the markup language itself should start with the doctoc language introduction and proceed from there to the formal specifications, i.e. the doctoc language syntax and the doctoc language command reference.
Index: embedded/www/tcllib/files/modules/doctools/doctoc_plugin_apiref.html ================================================================== --- embedded/www/tcllib/files/modules/doctools/doctoc_plugin_apiref.html +++ embedded/www/tcllib/files/modules/doctools/doctoc_plugin_apiref.html @@ -150,11 +150,11 @@This document is intended for plugin writers, i.e. developers -wishing to write a toc formatting engine for some output +wishing to write a toc formatting engine for some output format X.
It specifies the interaction between the doctools::toc package and its plugins, i.e. the interface any toc formatting engine has to comply with.
This document deals with version 1 of the interface.
@@ -430,14 +430,14 @@doctoc_intro, doctoc_lang_cmdref, doctoc_lang_faq, doctoc_lang_intro, doctoc_lang_syntax, doctools::toc
formatting engine, markup, plugin, semantic markup, table of contents, toc, toc formatter
+formatting engine, markup, plugin, semantic markup, table of contents, toc, toc formatter
Documentation tools
Copyright © 2007 Andreas Kupries <andreas_kupries@users.sourceforge.net>
This package provides a class for the creation of objects able to process and convert text written in the doctools markup language into any output format X for which a -formatting engine is available.
+formatting engine is available.A reader interested in the markup language itself should start with the doctools language introduction and proceed from there to the formal specifications, i.e. the doctools language syntax and the doctools language command reference.
If on the other hand the reader wishes to write her own formatting @@ -408,11 +408,11 @@
The value for this parameter has to be a list of triples specifying cross-reference information. This information is used by the engine to create more hyperlinks. Each triple is a list containing a pattern, symbolic filename and fragment reference, in this order. If a pattern -is specified multiple times the last occurence of the pattern will be +is specified multiple times the last occurrence of the pattern will be used.
The engine will consult the xref database when encountering specific commands and will create a link if the relevant text matches one of the patterns. No link will be created if no match was found. The link will go to the uri file#fragment listed in the relevant @@ -441,11 +441,11 @@
The command will look for the patterns sa,word, and word, in this order, for each word given to the command. If this fails if it will convert word to all lowercase and try again.
The command will look for the patterns kw,word, and word, in this order, for each word given to the command. If this fails if it will convert word to all lowercase and try again.
Text structure. List element. Itemized list. Automatically closes the previous list element.
Document information. Anywhere. This command registers all its plain text arguments as keywords applying to this document. Each argument is a single keyword. If this command is used multiple times all the arguments accumulate.
Text. The command is replaced with a left bracket. Use in free-form text. Index: embedded/www/tcllib/files/modules/doctools/doctools_lang_intro.html ================================================================== --- embedded/www/tcllib/files/modules/doctools/doctools_lang_intro.html +++ embedded/www/tcllib/files/modules/doctools/doctools_lang_intro.html @@ -452,17 +452,17 @@
The last two commands we have to discuss are for the declaration of cross-references between documents, explicit and implicit. They are -keywords and see_also. Both take an arbitrary number of +keywords and see_also. Both take an arbitrary number of arguments, all of which have to be plain unmarked text. I.e. it is not allowed to use markup on them. Both commands can be used multiple times in a document. If that is done all arguments of all occurrences of one of them are put together into a single set.
The arguments of this command are interpreted as keywords describing the document. A processor can use this information to create an index indirectly linking the containing document to all documents with the same keywords.
This document is intended for plugin writers, i.e. developers -wishing to write a doctools formatting engine for some output +wishing to write a doctools formatting engine for some output format X.
It specifies the interaction between the doctools package and its plugins, i.e. the interface any doctools formatting engine has to comply with.
This document deals with version 1 of the interface.
@@ -478,14 +478,14 @@doctools, doctools_intro, doctools_lang_cmdref, doctools_lang_faq, doctools_lang_intro, doctools_lang_syntax
document, formatter, formatting engine, manpage, markup, semantic markup
+document, formatter, formatting engine, manpage, markup, semantic markup
Documentation tools
Copyright © 2007-2010 Andreas Kupries <andreas_kupries@users.sourceforge.net>
The type of a reference can be one of two values,
The identifier of the reference is interpreted as symbolic file name, -refering to one of the documents the index was made for.
The identifier of the reference is interpreted as an url, refering to +
The identifier of the reference is interpreted as an url, referring to some external location, like a website, etc.
A keyword index consists of a (possibly empty) set of keywords.
A keyword index consists of a (possibly empty) set of keywords.
Each keyword in the set is identified by its name.
Each keyword has a (possibly empty) set of references.
A reference can be associated with more than one keyword.
A reference not associated with at least one keyword is not possible however.
The type of a reference can be one of two values,
The identifier of the reference is interpreted as symbolic file name, -refering to one of the documents the index was made for.
The identifier of the reference is interpreted as an url, refering to +
The identifier of the reference is interpreted as an url, referring to some external location, like a website, etc.
doctools::idx::export - Exporting keyword indices
A keyword index consists of a (possibly empty) set of keywords.
A keyword index consists of a (possibly empty) set of keywords.
Each keyword in the set is identified by its name.
Each keyword has a (possibly empty) set of references.
A reference can be associated with more than one keyword.
A reference not associated with at least one keyword is not possible however.
If no value is specified it simply returns the current value, without changing it.
Note that while the user can set the predefined configuration variables user and format doing so will have no -effect, these values will be internally overriden when invoking an +effect, these values will be internally overridden when invoking an import plugin.
This method unsets all configuration variables matching the specified glob patterns. If no pattern is specified it will unset all currently defined configuration variables.
The type of a reference can be one of two values,
The identifier of the reference is interpreted as symbolic file name, -refering to one of the documents the index was made for.
The identifier of the reference is interpreted as an url, refering to +
The identifier of the reference is interpreted as an url, referring to some external location, like a website, etc.
Documentation tools
Copyright © 2009 Andreas Kupries <andreas_kupries@users.sourceforge.net>
+Copyright © 2009-2018 Andreas Kupries <andreas_kupries@users.sourceforge.net>
The type of a reference can be one of two values,
The identifier of the reference is interpreted as symbolic file name, -refering to one of the documents the index was made for.
The identifier of the reference is interpreted as an url, refering to +
The identifier of the reference is interpreted as an url, referring to some external location, like a website, etc.
The type of a reference can be one of two values,
The identifier of the reference is interpreted as symbolic file name, -refering to one of the documents the index was made for.
The identifier of the reference is interpreted as an url, refering to +
The identifier of the reference is interpreted as an url, referring to some external location, like a website, etc.
The type of a reference can be one of two values,
The identifier of the reference is interpreted as symbolic file name, -refering to one of the documents the index was made for.
The identifier of the reference is interpreted as an url, refering to +
The identifier of the reference is interpreted as an url, referring to some external location, like a website, etc.
The type of a reference can be one of two values,
The identifier of the reference is interpreted as symbolic file name, -refering to one of the documents the index was made for.
The identifier of the reference is interpreted as an url, refering to +
The identifier of the reference is interpreted as an url, referring to some external location, like a website, etc.
The type of a reference can be one of two values,
The identifier of the reference is interpreted as symbolic file name, -refering to one of the documents the index was made for.
The identifier of the reference is interpreted as an url, refering to +
The identifier of the reference is interpreted as an url, referring to some external location, like a website, etc.
doctools::idx::import - Importing keyword indices
A keyword index consists of a (possibly empty) set of keywords.
A keyword index consists of a (possibly empty) set of keywords.
Each keyword in the set is identified by its name.
Each keyword has a (possibly empty) set of references.
A reference can be associated with more than one keyword.
A reference not associated with at least one keyword is not possible however.
If no value is specified it simply returns the current value, without changing it.
Note that while the user can set the predefined configuration variables user and format doing so will have no -effect, these values will be internally overriden when invoking an +effect, these values will be internally overridden when invoking an import plugin.
This method unsets all configuration variables matching the specified glob patterns. If no pattern is specified it will unset all currently defined configuration variables.
The type of a reference can be one of two values,
The identifier of the reference is interpreted as symbolic file name, -refering to one of the documents the index was made for.
The identifier of the reference is interpreted as an url, refering to +
The identifier of the reference is interpreted as an url, referring to some external location, like a website, etc.
Documentation tools
Copyright © 2009 Andreas Kupries <andreas_kupries@users.sourceforge.net>
+Copyright © 2009-2018 Andreas Kupries <andreas_kupries@users.sourceforge.net>
The type of a reference can be one of two values,
The identifier of the reference is interpreted as symbolic file name, -refering to one of the documents the index was made for.
The identifier of the reference is interpreted as an url, refering to +
The identifier of the reference is interpreted as an url, referring to some external location, like a website, etc.
DE, catalog package, docidx, doctools, i18n, internationalization, l10n, localization, message catalog, message package
+DE, catalog package, docidx, doctools, i18n, internationalization, l10n, localization, message catalog, message package
Documentation tools
The error code will be a list, each element describing a single error found in the input. The list has at least one element, possibly more.
Each error element will be a list containing six strings describing an error in detail. The strings will be
The path of the file the error occured in. This may be empty.
The path of the file the error occurred in. This may be empty.
The range of the token the error was found at. This range is a two-element list containing the offset of the first and last character in the range, counted from the beginning of the input (file). Offsets are counted from zero.
The line the first character after the error is on. @@ -297,13 +297,13 @@
The type of a reference can be one of two values,
The identifier of the reference is interpreted as symbolic file name, -refering to one of the documents the index was made for.
The identifier of the reference is interpreted as an url, refering to +
The identifier of the reference is interpreted as an url, referring to some external location, like a website, etc.
The type of a reference can be one of two values,
The identifier of the reference is interpreted as symbolic file name, -refering to one of the documents the index was made for.
The identifier of the reference is interpreted as an url, refering to +
The identifier of the reference is interpreted as an url, referring to some external location, like a website, etc.
The type of a reference can be one of two values,
The identifier of the reference is interpreted as symbolic file name, -refering to one of the documents the index was made for.
The identifier of the reference is interpreted as an url, refering to +
The identifier of the reference is interpreted as an url, referring to some external location, like a website, etc.
The result of the method is the empty string.
This method returns the handle of the parent for the element identified by its handle id, or the empty string if id -refered to the root element.
This method returns the handle of the right sibling for the element identified by its handle id, or the handle of the parent if the -element has no right sibling, or the empty string if id refered +element has no right sibling, or the empty string if id referred to the root element.
This method returns the handle of the left sibling for the element identified by its handle id, or the handle of the parent if the -element has no left sibling, or the empty string if id refered +element has no left sibling, or the empty string if id referred to the root element.
This method returns the handle of a child of the element identified by its handle id. The child itself is identified by a series of labels.
doctools::toc::export - Exporting tables of contents
If no value is specified it simply returns the current value, without changing it.
Note that while the user can set the predefined configuration variables user and format doing so will have no -effect, these values will be internally overriden when invoking an +effect, these values will be internally overridden when invoking an import plugin.
This method unsets all configuration variables matching the specified glob patterns. If no pattern is specified it will unset all currently defined configuration variables.
Documentation tools
Copyright © 2009 Andreas Kupries <andreas_kupries@users.sourceforge.net>
+Copyright © 2009-2018 Andreas Kupries <andreas_kupries@users.sourceforge.net>
doctools::toc::import - Importing keyword indices
If no value is specified it simply returns the current value, without changing it.
Note that while the user can set the predefined configuration variables user and format doing so will have no -effect, these values will be internally overriden when invoking an +effect, these values will be internally overridden when invoking an import plugin.
This method unsets all configuration variables matching the specified glob patterns. If no pattern is specified it will unset all currently defined configuration variables.
Documentation tools
Copyright © 2009 Andreas Kupries <andreas_kupries@users.sourceforge.net>
+Copyright © 2009-2018 Andreas Kupries <andreas_kupries@users.sourceforge.net>
DE, catalog package, doctoc, doctools, i18n, internationalization, l10n, localization, message catalog, message package
+DE, catalog package, doctoc, doctools, i18n, internationalization, l10n, localization, message catalog, message package
Documentation tools
The error code will be a list, each element describing a single error found in the input. The list has at least one element, possibly more.
Each error element will be a list containing six strings describing an error in detail. The strings will be
The path of the file the error occured in. This may be empty.
The path of the file the error occurred in. This may be empty.
The range of the token the error was found at. This range is a two-element list containing the offset of the first and last character in the range, counted from the beginning of the input (file). Offsets are counted from zero.
The line the first character after the error is on. Index: embedded/www/tcllib/files/modules/fileutil/fileutil.html ================================================================== --- embedded/www/tcllib/files/modules/fileutil/fileutil.html +++ embedded/www/tcllib/files/modules/fileutil/fileutil.html @@ -97,11 +97,11 @@ | Categories | Modules | Applications ]
fileutil - Procedures implementing some file utilities
An implementation of the unix command find. Adapted from the +
An implementation of the unix command find. Adapted from the Tcler's Wiki. Takes at most two arguments, the path to the directory to start searching from and a command to use to evaluate interest in each file. The path defaults to ".", i.e. the current directory. The command defaults to the empty string, which means that all files are of interest. The command takes care not to Index: embedded/www/tcllib/files/modules/fileutil/traverse.html ================================================================== --- embedded/www/tcllib/files/modules/fileutil/traverse.html +++ embedded/www/tcllib/files/modules/fileutil/traverse.html @@ -275,11 +275,11 @@ 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.
Programming tools
Networking
fileutil::magic::filetype - Procedures implementing file-type recognition
fileutil::magic::rt - Runtime core for file type recognition engines written in pure Tcl
The package exports a single ensemble command, generator. All functionality is provided as subcommands of this command. The core subcommands of the package are define, yield, and foreach. The -define command works like Tcl's proc command, but creates a +define command works like Tcl's proc command, but creates a generator procedure; that is, a procedure that returns a generator when called. The generator itself is a command that can be called multiple times: each time it returns the next value in the generated series. When the series has been exhausted, the generator command returns an empty list and then destroys itself. Rather than manually call a generator, however, the package @@ -223,11 +223,11 @@
Creates a new generator procedure. The arguments to the command are identical to -those for proc: a name, a list of parameters, and a body. The +those for proc: a name, a list of parameters, and a body. The parameter list format is identical to a procedure. In particular, default values and the ?args? syntax can be used as usual. Each time the resulting generator procedure is called it creates a new generator command (coroutine) that will yield a list of values on each call. Each result from a generator is guaranteed to be a non-empty list of values. When a generator is exhausted it Index: embedded/www/tcllib/files/modules/gpx/gpx.html ================================================================== --- embedded/www/tcllib/files/modules/gpx/gpx.html +++ embedded/www/tcllib/files/modules/gpx/gpx.html @@ -258,11 +258,11 @@ 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.
File formats
Aycock, Earley, Horspool, parser, compiler
ambiguous, aycock, earley, grammar, horspool, parser, parsing, transducer
+ambiguous, aycock, earley, grammar, horspool, parser, parsing, transducer
Grammars and finite automata
This document specifies various representations for the -abstract syntax trees (short AST) generated by +abstract syntax trees (short AST) generated by instances of ME virtual machines, independent of variant. Please go and read the document grammar::me_intro first if you do not know what a ME virtual machine is.
ASTs and all the representations we specify distinguish between two types of nodes, namely:
@@ -205,14 +205,14 @@ 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.Grammars and finite automata
Copyright © 2005 Andreas Kupries <andreas_kupries@users.sourceforge.net>
Because of the high degree of similarity in the actual implementations of the aforementioned virtual machine and the data structures they receive and generate these common parts are specified in a separate document which will be referenced by the documentation for packages actually implementing it.
Index: embedded/www/tcllib/files/modules/grammar_me/me_util.html ================================================================== --- embedded/www/tcllib/files/modules/grammar_me/me_util.html +++ embedded/www/tcllib/files/modules/grammar_me/me_util.html @@ -186,11 +186,11 @@ 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.Grammars and finite automata
Please go and read the document grammar::me_intro first for an overview of the various documents and their relations.
This document specifies a virtual machine for the controlled matching and parsing of token streams, creating an -abstract syntax tree (short AST) reflecting the +abstract syntax tree (short AST) reflecting the structure of the input. Special machine features are the caching and reuse of partial results, caching of the encountered input, and the ability to backtrack in both input and AST creation.
These features make the specified virtual machine especially useful to packrat parsers based on parsing expression grammars. It is however Index: embedded/www/tcllib/files/modules/grammar_peg/peg.html ================================================================== --- embedded/www/tcllib/files/modules/grammar_peg/peg.html +++ embedded/www/tcllib/files/modules/grammar_peg/peg.html @@ -513,11 +513,11 @@
For the mathematically inclined, a PEG is a 4-tuple (VN,VT,R,eS) where
VN is a set of nonterminal symbols,
VT is a set of terminal symbols,
R is a finite set of rules, where each rule is a pair (A,e), A in VN, -and e a parsing expression.
eS is a parsing expression, the start expression.
Further constraints are
The intersection of VN and VT is empty.
A nonterminal symbol A is a parsing expression.
e1e2 is a parsing expression for parsing expressions e1 and 2. This is called sequence.
e1/e2 is a parsing expression for parsing expressions e1 and 2. This is called ordered choice.
e* is a parsing expression for parsing expression -e. This is called zero-or-more repetitions, also known +
e* is a parsing expression for parsing expression +e. This is called zero-or-more repetitions, also known as kleene closure.
e+ is a parsing expression for parsing expression -e. This is called one-or-more repetitions, also known +
e+ is a parsing expression for parsing expression +e. This is called one-or-more repetitions, also known as positive kleene closure.
!e is a parsing expression for parsing expression +
!e is a parsing expression for parsing expression e1. This is called a not lookahead predicate.
&e is a parsing expression for parsing expression +
&e is a parsing expression for parsing expression e1. This is called an and lookahead predicate.
PEGs are used to define a grammatical structure for streams of symbols over VT. They are a modern phrasing of older formalisms invented by Alexander Birham. These formalisms were called TS (TMG recognition Index: embedded/www/tcllib/files/modules/hook/hook.html ================================================================== --- embedded/www/tcllib/files/modules/hook/hook.html +++ embedded/www/tcllib/files/modules/hook/hook.html @@ -170,28 +170,28 @@
The hook command manages a collection of hook bindings. A hook binding has four elements:
A subject: the name of the entity that will be calling the +
A subject: the name of the entity that will be calling the hook.
The hook itself. A hook usually reflects some occurrence in the -life of the subject that other entities might care to know -about. A hook has a name, and may also have arguments. Hook -names are arbitrary strings. Each subject must document the +
The hook itself. A hook usually reflects some occurrence in the +life of the subject that other entities might care to know +about. A hook has a name, and may also have arguments. Hook +names are arbitrary strings. Each subject must document the names and arguments of the hooks it can call.
The name of the observer that wishes to receive the hook -from the subject.
A command prefix to which the hook arguments will be appended +
The name of the observer that wishes to receive the hook +from the subject.
A command prefix to which the hook arguments will be appended when the binding is executed.
For convenience, this document collectively refers to subjects and observers as objects, while placing no requirements on how these objects are actually implemented. An object can be a -TclOO or Snit or XOTcl object, a Tcl +TclOO or Snit or XOTcl object, a Tcl command, a namespace, a module, a pseudo-object managed by some other object (as tags are managed by the Tk text widget) or simply a well-known name.
Subject and observer names are arbitrary strings; however, as hook might be used at the package level, it's necessary to have @@ -313,12 +313,12 @@ value, its value will be invoked for all errors and other exceptional returns in observer bindings. See hook configure, below, for more information on configuration options.
This command deletes any existing bindings in which the named -object appears as either the subject or the -observer. +object appears as either the subject or the +observer. Bindings deleted by this method will never be called again. In particular,
If an observer is forgotten during a call to hook call, any uncalled binding it might have had to the relevant subject and hook @@ -350,12 +350,12 @@ (thus preventing the error from arising a second time) and so forth.
The option's value should be a command prefix taking four arguments:
a subject,
a hook,
a subject,
a hook,
a list of the hook's argument values, and
a list of objects the hook was called for.
The command will be called for each hook that is called. This allows the application to trace hook execution for debugging purposes.
When the ::model calls the hook, the .views ModelUpdate subcommand will be called.
Later the .view megawidget is destroyed. In its destructor, -it tells the hook that it no longer exists:
+it tells the hook that it no longer exists:hook forget .view
All bindings involving .view are deleted.
callback, event, hook, observer, producer, publisher, subject, subscriber, uevent
+callback, event, hook, observer, producer, publisher, subject, subscriber, uevent
Programming tools
Copyright © 2010, by William H. Duquette
Generate a checkbox form element with the specified name and value. +
Generate a checkbox form element with the specified name and value. This uses ::html::checkValue.
Generate a set of checkbox form elements and associated labels. The +
Generate a set of checkbox form elements and associated labels. The list should contain an alternating list of labels and values. -This uses ::html::checkbox. All the checkbox buttons share the +This uses ::html::checkbox. All the checkbox buttons share the same key for their name. The sep is text used to separate the elements.
Generate the "name=name value=value" for a checkbox form +
Generate the "name=name value=value" for a checkbox form element. If the CGI variable name has the value value, then SELECTED is added to the return value. value defaults to "1".
Pop a tag off the stack created by ::html::openTag and generate @@ -306,11 +306,11 @@ ::html::keywords, ::html::description, or ::html::meta then additional tags are inserted into the head section. -This leaves an open html tag pushed on the stack with +This leaves an open html tag pushed on the stack with ::html::openTag.
Save a tag for inclusion in the head section generated by ::html::head. The string is everything in the tag except the enclosing angle brackets, < >.
Generate an input tag of type password. The name defaults to +
Generate an input tag of type password. The name defaults to "password".
Format a table row containing a label and an input tag of type -password. The name defaults to "password".
Quote special characters in value by replacing them with HTML entities for quotes, ampersand, and angle brackets.
Generate a set of input tags of type radio and an associated text @@ -502,11 +502,11 @@
CGI programming
Text processing
http(n)
Networking
tool - A TclOO and coroutine based web server
+This module implements a web server, suitable for embedding in an +application. The server is object oriented, and contains all of the +fundamentals needed for a full service website.
+Starting a web service requires starting a class of type +httpd::server, and providing that server with one or more URIs +to service, and httpd::reply derived classes to generate them.
++tool::define ::reply.hello { + method content {} { + my puts "<HTML><HEAD><TITLE>IRM Dispatch Server</TITLE></HEAD><BODY>" + my puts "<h1>Hello World!</h1>" + my puts </BODY></HTML> + } +} +::docserver::server create HTTPD port 8015 myaddr 127.0.0.1 +HTTPD add_uri /* [list mixin reply.hello] ++
This class is the root object of the webserver. It is responsible +for opening the socket and providing the initial connection negotiation.
+Build a new server object. ?port? is the port to listen on
Set the hander for a URI pattern. Information given in the dict is stored +in the data structure the dispatch method uses. If a field called +mixin is given, that class will be mixed into the reply object immediately +after construction.
Reply to an open socket. This method builds a coroutine to manage the remainder +of the connection. The coroutine's operations are driven by the Connect method.
This method reads HTTP headers, and then consults the dispatch method to +determine if the request is valid, and/or what kind of reply to generate. Under +normal cases, an object of class ::http::reply is created. +Fields the server are looking for in particular are: +class: A class to use instead of the server's own reply_class +mixin: A class to be mixed into the new object after construction. +All other fields are passed along to the http_info structure of the +reply object. +After the class is created and the mixin is mixed in, the server invokes the +reply objects dispatch method. This action passes control of the socket to +the reply object. The reply object manages the rest of the transaction, including +closing the socket.
Increment an internal counter.
Check open connections for a time out event.
Given a key/value list of information, return a data structure describing how +the server should reply.
Log an event. The input for args is free form. This method is intended +to be replaced by the user, and is a noop for a stock http::server object.
Return the actual port that httpd is listening on.
For the stock version, trim trailing /'s and *'s from a prefix. This +method can be replaced by the end user to perform any other transformations +needed for the application.
Open the socket listener.
Shut off the socket listener, and destroy any pending replies.
Return a template for the string page
Perform a search for the template that best matches page. This +can include local file searches, in-memory structures, or even +database lookups. The stock implementation simply looks for files +with a .tml or .html extension in the ?doc_root? directory.
Given a socket and an ip address, return true if this connection should +be terminated, or false if it should be allowed to continue. The stock +implementation always returns 0. This is intended for applications to +be able to implement black lists and/or provide security based on IP +address.
A class which shephards a request through the process of generating a +reply. +The socket associated with the reply is available at all times as the chan +variable. +The process of generating a reply begins with an httpd::server generating a +http::class object, mixing in a set of behaviors and then invoking the reply +object's dispatch method. +In normal operations the dispatch method:
+Invokes the reset method for the object to populate default headers.
Invokes the HttpHeaders method to stream the MIME headers out of the socket
Invokes the request parse method to convert the stream of MIME headers into a +dict that can be read via the request method.
Stores the raw stream of MIME headers in the rawrequest variable of the object.
Invokes the content method for the object, generating an call to the error +method if an exception is raised.
Invokes the output method for the object
The http::reply class and its derivatives maintain several variables as dictionaries +internally. Access to these dictionaries is managed through a dedicated ensemble. The +ensemble implements most of the same behaviors as the dict command. +Each ensemble implements the following methods above, beyond, or modifying standard dicts:
+Add element to a list stored in field, but only if it is not already present om the list.
Return the current contents of the data structure as a key/value list.
Return the value of the field field, or an empty string if it does not exist.
Return a key/value list of the default contents for this data structure.
Remove all instances of element from the list stored in field.
Replace the internal dict with the contents of keyvaluelist
Replace the internal dict with the default state.
Set the value of field to value.
Manages HTTP headers passed in by the server. +Ensemble Methods:
+Return the contents of this data structure as a netstring encoded block.
Managed data from MIME headers of the request.
+Replace the contents of the data structure with information encoded in a MIME +formatted block of text (string).
Manage the headers sent in the reply.
+Return the contents of this data structure as a MIME encoded block appropriate +for an HTTP response.
Terminate the transaction, and close the socket.
Stream MIME headers from the socket sock, stopping at an empty line. Returns +the stream as a block of text.
Take over control of the socket newsock, and store that as the chan variable +for the object. This method runs through all of the steps of reading HTTP headers, generating +content, and closing the connection. (See class writetup).
Generate an error message of the specified code, and display the message as the +reason for the exception. errorInfo is passed in from calls, but how or if it should be +displayed is a prerogative of the developer.
Generate the content for the reply. This method is intended to be replaced by the mixin. +Developers have the option of streaming output to a buffer via the puts method of the +reply, or simply populating the reply_body variable of the object. +The information returned by the content method is not interpreted in any way. +If an exception is thrown (via the error command in Tcl, for example) the caller will +auto-generate a 505 {Internal Error} message. +A typical implementation of content look like:
++tool::define ::test::content.file { + superclass ::httpd::content.file + # Return a file + # Note: this is using the content.file mixin which looks for the reply_file variable + # and will auto-compute the Content-Type + method content {} { + my reset + set doc_root [my http_info get doc_root] + my variable reply_file + set reply_file [file join $doc_root index.html] + } +} +tool::define ::test::content.time { + # return the current system time + method content {} { + my variable reply_body + my reply set Content-Type text/plain + set reply_body [clock seconds] + } +} +tool::define ::test::content.echo { + method content {} { + my variable reply_body + my reply set Content-Type [my request get Content-Type] + set reply_body [my PostData [my request get Content-Length]] + } +} +tool::define ::test::content.form_handler { + method content {} { + set form [my FormData] + my reply set Content-Type {text/html; charset=UTF-8} + my puts "<HTML><HEADER><TITLE>My Dynamic Page</TITLE></HEADER>" + my puts "<BODY>" + my puts "You Sent<p>" + my puts "<TABLE>" + foreach {f v} $form { + my puts "<TR><TH>$f</TH><TD><verbatim>$v</verbatim></TD>" + } + my puts "</TABLE><p>" + my puts "Send some info:<p>" + my puts "<FORM action=/[my http_info get REQUEST_PATH] method POST>" + my puts "<TABLE>" + foreach field {name rank serial_number} { + set line "<TR><TH>$field</TH><TD><input name=\"$field\" " + if {[dict exists $form $field]} { + append line " value=\"[dict get $form $field]\""" + } + append line " /></TD></TR>" + my puts $line + } + my puts "</TABLE>" + my puts "</BODY></HTML>" + } +} ++
Formulate a standard HTTP status header from he string provided.
For GET requests, converts the QUERY_DATA header into a key/value list. +For POST requests, reads the Post data and converts that information to +a key/value list for application/x-www-form-urlencoded posts. For multipart +posts, it composites all of the MIME headers of the post to a singular key/value +list, and provides MIME_* information as computed by the mime package, including +the MIME_TOKEN, which can be fed back into the mime package to read out the contents.
Converts a block of mime encoded text to a key/value list. If an exception is encountered, +the method will generate its own call to the error method, and immediately invoke +the output method to produce an error code and close the connection.
Schedules a call to DoOutput when chan becomes writeable
Generates the the HTTP reply, and streams that reply back across chan.
Stream length bytes from the chan socket, but only of the request is a +POST or PUSH. Returns an empty string otherwise.
Appends the value of string to the end of reply_body, as well as a trailing newline +character.
Clear the contents of the reply_body variable, and reset all headers in the reply +structure back to the defaults for this object.
Called from the http::server object which spawned this reply. Checks to see +if too much time has elapsed while waiting for data or generating a reply, and issues +a timeout error to the request if it has, as well as destroy the object and close the +chan socket.
Return the current system time in the format:
+%a, %d %b %Y %T %Z+
Intended to be invoked from chan copy as a callback. This closes every channel +fed to it on the command line, and then destroys the object.
++ ### + # Output the body + ### + chan configure $sock -translation binary -blocking 0 -buffering full -buffersize 4096 + chan configure $chan -translation binary -blocking 0 -buffering full -buffersize 4096 + if {$length} { + ### + # Send any POST/PUT/etc content + ### + chan copy $sock $chan -command [namespace code [list my TransferComplete $sock]] + } else { + catch {close $sock} + chan flush $chan + my destroy + } ++
De-httpizes a string.
The httpd module includes several ready to use implementations of content mixins +for common use cases. Options are passed in to the add_uri method of the server.
+An implementation to relay requests to process which will accept post data +streamed in vie stdin, and sent a reply streamed to stdout.
+Mandatory method to be replaced by the end user. If needed, activates the +process to proxy, and then returns a list of three values: +exec - The arguments to send to exec to fire off the responding process, minus the stdin/stdout redirection.
An implementation to deliver files from the local file system.
+The root directory on the local file system to be exposed via http.
The prefix of the URI portion to ignore when calculating relative file paths.
An implementation to relay requests to another HTTP server, and relay +the results back across the request channel.
+Mandatory method to be replaced by the end user. If needed, activates the +process to proxy, and then returns a list of three values: +proxyhost - The hostname where the proxy is located +proxyport - The port to connect to +proxyscript - A pre-amble block of text to send prior to the mirrored request
An implementation to relay requests to a server listening on a socket +expecting SCGI encoded requests, and relay +the results back across the request channel.
+Mandatory method to be replaced by the end user. If needed, activates the +process to proxy, and then returns a list of three values: +scgihost - The hostname where the scgi listener is located +scgiport - The port to connect to +scgiscript - The contents of the SCRIPT_NAME header to be sent
A placeholder for a future implementation to manage requests that can expect to be +promoted to a Websocket. Currently it is an empty class.
+The HTTP module also provides an SCGI server implementation, as well as an HTTP +implementation. To use the SCGI functions, create an object of the http::server.scgi +class instead of the http::server class.
+An modified http::reply implementation that understands how to deal with +netstring encoded headers.
+A modified http::server which is tailored to replying to request according to +the SCGI standard instead of the HTTP standard.
+Sean Woods
+This document, and the package it describes, will undoubtedly contain +bugs and other problems. +Please report such in the category network of the +Tcllib Trackers. +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.
+Networking
+Copyright © 2018 Sean Woods <yoda@etoyoc.com>
+inifile - Parsing of Windows INI files
Programming tools
irc - Create IRC connection and interface.
rfc 1459
Networking
rfc 1459
Networking
CGI programming
The json package provides a simple Tcl-only library for parsing the JSON http://www.json.org/ data exchange format as specified in RFC 4627 http://www.ietf.org/rfc/rfc4627.txt. There is some ambiguity in parsing JSON because JSON has type information that is not maintained by the Tcl conversion. The json package returns -data as a Tcl dict. Either the dict package or Tcl 8.5 is +data as a Tcl dict. Either the dict package or Tcl 8.5 is required for use.
This package provides two convenience commands to make the writing of -anonymous procedures, i.e. lambdas more proc-like. Instead of, +anonymous procedures, i.e. lambdas more proc-like. Instead of, for example, to write
set f {::apply {{x} { .... }}} @@ -196,14 +196,14 @@
apply(n), proc(n)
anonymous procedure, callback, command prefix, currying, lambda, partial application, proc
+anonymous procedure, callback, command prefix, currying, lambda, partial application, proc
Utility
Copyright © 2011 Andreas Kupries, BSD licensed
ldap - LDAP client
ldapx - LDAP extended object interface
Networking
Copyright © 2006 Pierre David <pdav@users.sourceforge.net>
+Copyright © 2006-2018 Pierre David <pdav@users.sourceforge.net>
Programming tools
This package provides a class for accessing geocoding services which implement -the Nominatim interface (see References)
+the Nominatim interface (see References)Creates a geocoding request object requestor, which will send its requests to -the Nominatim server.
+the Nominatim server.The result of the command is name.
Copyright © 2007 Kevin B. Kenny <kennykb@acm.org>
markdown - Converts Markdown text to HTML
The package Markdown provides a command to convert Markdown annotated text into HMTL.
This command takes in a block of Markdown text, and returns a block -of HTML.
The converter supports two types of syntax highlighting for +fenced code blocks: highlighting via a registered converter +(see ::Markdown::register), or pure JavaScript highlighting, +e.g. via "highlight.js", where the language specifier used in the +markup is set as CSS class of the "code" element in the returned markup.
+Register a language specific converter for prettifying a code block +(e.g. syntax highlighting). Markdown supports fenced code blocks with +an optional language specifier (e.g. "tcl"). When the markdown parser +processes such a code block and a converter for the specified langspec +is registered, the converter is called with the raw code block as +argument. The converter is supposed to return the markup of the code +block as result. The specified converter can be an arbitrary Tcl +command, the raw text block is added as last argument upon invocation.
Return a dict of language specifier and number of occurrences in +fenced code blocks. This function can be used e.g. to detect, whether +some CSS or JavaScript headers should be included for rendering +without the need of postprocessing the rendered result.
Reset the language counters.
This document, and the package it describes, will undoubtedly contain bugs and other problems. Index: embedded/www/tcllib/files/modules/math/bigfloat.html ================================================================== --- embedded/www/tcllib/files/modules/math/bigfloat.html +++ embedded/www/tcllib/files/modules/math/bigfloat.html @@ -158,11 +158,11 @@
The above functions return, respectively, the following : square root, logarithm, exponential, cosine, sine, tangent, cotangent, arc cosine, arc sine, arc tangent, hyperbolic cosine, hyperbolic sine, hyperbolic tangent, of a BigFloat named x.
Returns a BigFloat representing the Pi constant with n digits after the dot. n is a positive integer.
computations, floating-point, interval, math, multiprecision, tcl
+computations, floating-point, interval, math, multiprecision, tcl
Mathematics
Copyright © 2004-2008, by Stephane Arnold <stephanearnold at yahoo dot fr>
math::calculus - Integration and ordinary differential equations
romberg
Mathematics
Copyright © 2002,2003,2004 Arjen Markus
Mathematics
Mathematics
math::PCA - Package for Principal Component Analysis
+The PCA package provides a means to perform principal components analysis +in Tcl, using an object-oriented technique as facilitated by TclOO. It +actually defines a single public method, ::math::PCA::createPCA, +which constructs an object based on the data that are passed to perform +the actual analysis.
+The methods of the PCA objects that are created with this command allow one +to examine the principal components, to approximate (new) observations +using all or a selected number of components only and to examine the +properties of the components and the statistics of the approximations.
+The package has been modelled after the PCA example provided by the +original linear algebra package by Ed Hume.
+The math::PCA package provides one public command:
+Create a new object, based on the data that are passed via the data argument. +The principal components may be based on either correlations or covariances. +All observations will be normalised according to the mean and standard deviation +of the original data.
+- A list of observations (see the example below).
- A list of key-value pairs defining the options. Currently there is +only one key: -covariances. This indicates if covariances are to be used +(if the value is 1) or instead correlations (value is 0). The default is to use +correlations.
The PCA object that is created has the following methods:
+Set the number of components to be used in the analysis (the number of retained components). +Returns the number of components, also if no argument is given.
+- The number of components to be retained
- Select the number of components based on the minimum proportion +of variation that is retained by them. Should be a value between 0 and 1.
Return the eigenvectors as a list of lists.
+- By default only the retained components are returned. +If all eigenvectors are required, use the option -all.
Return the eigenvalues as a list of lists.
+- By default only the eigenvalues of the retained components are returned. +If all eigenvalues are required, use the option -all.
Return the proportions for all components, that is, the amount of variations that each +components can explain.
Return an approximation of the observation based on the retained components
+- The values for the observation.
Return an approximation of the original data, using the retained components. It is +a convenience method that works on the complete set of original data.
Return the scores per retained component for the given observation.
+- The values for the observation.
Return the distance between the given observation and its approximation. (Note: +this distance is based on the normalised vectors.)
+- The values for the observation.
Return the Q statistic, basically the square of the distance, for the given observation.
+- The values for the observation.
- If the observation is part of the original data, you may want +to use the corrected Q statistic. This is achieved with the option "-original".
TODO: NIST example
+This document, and the package it describes, will undoubtedly contain +bugs and other problems. +Please report such in the category PCA of the +Tcllib Trackers. +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.
+PCA, math, statistics, tcl
+Mathematics
+Mathematics
Mathematics
Mathematics
Mathematics
Mathematics
hashing, md5, message-digest, rfc 1320, rfc 1321, rfc 2104, security
+hashing, md5, message-digest, rfc 1320, rfc 1321, rfc 2104, security
Hashes, checksums, and encryption
Hashes, checksums, and encryption
email, internet, mail, mime, net, rfc 2045, rfc 2046, rfc 2049, rfc 821, rfc 822, smtp
+email, internet, mail, mime, net, rfc 2045, rfc 2046, rfc 2049, rfc 821, rfc 822, smtp
Text processing
Programming tools
CGI programming
nettool - Tools for networked applications
System
Copyright © 2015 Sean Woods <yoda@etoyoc.com>
+Copyright © 2015-2018 Sean Woods <yoda@etoyoc.com>
This command searches the name service for all registered names matching the specified glob-pattern. If not specified the pattern defaults to *, matching everything. The result of the command is a dictionary mapping the matching names to the data -associated with them at bind-time.
+associated with them at bind-time.If either option -async or -continuous were specified the result of this command changes and becomes the Tcl command of an object holding the actual result. These two options are supported if and only if the service the client is connected to supports the protocol feature @@ -236,11 +236,11 @@ name service yet. After contact has been made reconfiguration is not possible anymore. This means that this form of the command is for the initalization of the client before it use. The command forcing a contact with the name service are
The client automatically connects to the service when one of the commands below is run for the first time, or whenever one of the commands is run after the connection was lost, when it was lost.
The result is a boolean value indicating whether the search result has already arrived (True), or not (False).
Returns the data associated with the given name at -bind-time.
Returns a list containing all names known to the object at the time of the invokation.
Returns an integer value specifying the size of the result at the time of the invokation.
Returns a dictionary containing the search result at the time of the invokation, mapping the matching names to the data associated with -them at bind-time.
nns (short for nano nameservice) is a facility built for the package comm, adding a simple name service to it. It is also built on top of comm, using it for the exchange of messages between the client and server parts.
This name service facility has nothing to do with the Internet's -Domain Name System, otherwise known as DNS. If the +Domain Name System, otherwise known as DNS. If the reader is looking for a package dealing with that please see either of the packages dns and resolv, both found in Tcllib too.
Tcllib provides 2 applications and 4 packages which are working together and provide access to the facility at different levels.
Index: embedded/www/tcllib/files/modules/nntp/nntp.html ================================================================== --- embedded/www/tcllib/files/modules/nntp/nntp.html +++ embedded/www/tcllib/files/modules/nntp/nntp.html @@ -394,11 +394,11 @@ 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.Networking
oauth - oauth API base signature
Networking
Copyright © 2014 Javi P. <hxm@eggdrop.es>
oometa - oo::meta A data registry for classess
+The oo::meta package provides a data registry service for TclOO classes.
++oo::class create animal { + meta set biodata animal: 1 +} +oo::class create mammal { + superclass animal + meta set biodata mammal: 1 +} +oo::class create cat { + superclass mammal + meta set biodata diet: carnivore +} +cat create felix +puts [felix meta dump biodata] +> animal: 1 mammal: 1 diet: carnivore +felix meta set biodata likes: {birds mice} +puts [felix meta get biodata] +> animal: 1 mammal: 1 diet: carnivore likes: {bird mice} +# Modify a class +mammal meta set biodata metabolism: warm-blooded +puts [felix meta get biodata] +> animal: 1 mammal: 1 metabolism: warm-blooded diet: carnivore likes: {birds mice} +# Overwrite class info +felix meta set biodata mammal: yes +puts [felix meta get biodata] +> animal: 1 mammal: yes metabolism: warm-blooded diet: carnivore likes: {birds mice} ++
The concept behind oo::meta is that each class contributes a snippet of local data. +When oo::meta::metadata is called, the system walks through the linear ancestry produced by +oo::meta::ancestors, and recursively combines all of that local data for all of a class' +ancestors into a single dict. +Instances of oo::object can also combine class data with a local dict stored in the meta variable.
+oo::meta::info is intended to work on the metadata of a class in a manner similar to if the aggregate +pieces where assembled into a single dict. The system mimics all of the standard dict commands, and addes +the following:
Returns a dict representation of the element at args, but with any trailing : removed from field names.
++::oo::meta::info $myclass set option color {default: green widget: colorselect} +puts [::oo::meta::info $myclass get option color] +> {default: green widget: color} +puts [::oo::meta::info $myclass branchget option color] +> {default green widget color} ++
Merges dict with any other information contaned at node ?key...?, and adding a trailing : +to all field names.
++::oo::meta::info $myclass branchset option color {default green widget colorselect} +puts [::oo::meta::info $myclass get option color] +> {default: green widget: color} ++
Returns the complete snapshot of a class metadata, as producted by oo::meta::metadata
Returns a boolean true or false if the element ?args? would match string is type value
++::oo::meta::info $myclass set constant mammal 1 +puts [::oo::meta::info $myclass is true constant mammal] +> 1 ++
Combines all of the arguments into a single dict, which is then stored as the new +local representation for this class.
Forces the meta system to destroy any cached representation of a class' metadata before +the next access to oo::meta::metadata
Returns an aggregate picture of the metadata for class, combining its local data +with the local data from its ancestors.
The package injects a command oo::define::meta which works to provide a class in the +process of definition access to oo::meta::info, but without having to look the name up.
++oo::define myclass { + meta set foo bar: baz +} ++
The package injects a new method meta into oo::class which works to provide a class +instance access to oo::meta::info.
The package injects a new method meta into oo::object. oo::object combines the data +for its class (as provided by oo::meta::metadata), with a local variable meta to +produce a local picture of metadata. +This method provides the following additional commands:
Attempts to locate a singlar leaf, and return its value. For single option lookups, this +is faster than my meta getnull ?field? ?...? field], because +it performs a search instead directly instead of producing the recursive merge product +between the class metadata, the local meta variable, and THEN performing the search.
This document, and the package it describes, will undoubtedly contain +bugs and other problems. +Please report such in the category tcloo of the +Tcllib Trackers. +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.
+TclOO
+Copyright © 2015 Sean Woods <yoda@etoyoc.com>
+TclOO, callback, class methods, class variables, command prefix, currying, method reference, my method, singleton
+TclOO, callback, class methods, class variables, command prefix, currying, method reference, my method, singleton
Utility
Hashes, checksums, and encryption
Page Parser Generator
File formats
internet, network, pop3, protocol, rfc 1939, secure, ssl, tls
+internet, network, pop3, protocol, rfc 1939, secure, ssl, tls
Networking
Networking
Networking
practcl - The Practcl Module
The profiler package provides a simple Tcl source code profiler. It is a function-level profiler; that is, it collects only function-level information, not the more detailed line-level -information. It operates by redefining the Tcl proc command. +information. It operates by redefining the Tcl proc command. Profiling is initiated via the ::profiler::init command.
Programming tools
VN is a set of nonterminal symbols,
VT is a set of terminal symbols,
R is a finite set of rules, where each rule is a pair (A,e), A in VN, -and e a parsing expression.
eS is a parsing expression, the start expression.
Further constraints are
The intersection of VN and VT is empty.
A nonterminal symbol A is a parsing expression.
e1e2 is a parsing expression for parsing expressions e1 and 2. This is called sequence.
e1/e2 is a parsing expression for parsing expressions e1 and 2. This is called ordered choice.
e* is a parsing expression for parsing expression -e. This is called zero-or-more repetitions, also known +
e* is a parsing expression for parsing expression +e. This is called zero-or-more repetitions, also known as kleene closure.
e+ is a parsing expression for parsing expression -e. This is called one-or-more repetitions, also known +
e+ is a parsing expression for parsing expression +e. This is called one-or-more repetitions, also known as positive kleene closure.
!e is a parsing expression for parsing expression +
!e is a parsing expression for parsing expression e1. This is called a not lookahead predicate.
&e is a parsing expression for parsing expression +
&e is a parsing expression for parsing expression e1. This is called an and lookahead predicate.
PEGs are used to define a grammatical structure for streams of symbols over VT. They are a modern phrasing of older formalisms invented by Alexander Birham. These formalisms were called TS (TMG recognition Index: embedded/www/tcllib/files/modules/pt/pt_peg_to_cparam.html ================================================================== --- embedded/www/tcllib/files/modules/pt/pt_peg_to_cparam.html +++ embedded/www/tcllib/files/modules/pt/pt_peg_to_cparam.html @@ -583,11 +583,11 @@ 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.
CPARAM, EBNF, LL(k), PEG, TDPL, context-free languages, conversion, expression, format conversion, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, serialization, state, top-down parsing languages, transducer
+CPARAM, EBNF, LL(k), PEG, TDPL, context-free languages, conversion, expression, format conversion, grammar, matching, parser, parsing expression, parsing expression grammar, push down automaton, recursive descent, serialization, state, top-down parsing languages, transducer
Parsing and Grammars
pt::pgen - Parser Generator
The Revision Control System, short RCS, is a set of +
The Revision Control System, short RCS, is a set of applications and related data formats which allow a system to persist the history of changes to a text. It, and its relative SCCS are the -basis for many other such systems, like CVS, etc.
+basis for many other such systems, like CVS, etc.This package does not implement RCS.
It only provides a number of low level commands which should be useful in the implementation of any revision management system, namely:
The conversion of texts into and out of a data structures which allow @@ -178,12 +178,12 @@ of the command is the empty string.
Converts the text argument into a patch command list (PCL) as specified in the section RCS PATCH COMMAND LIST and returns this list as its result. -It is assumed that the input text is in diff -n format, also -known as RCS patch format, as specified in the section +It is assumed that the input text is in diff -n format, also +known as RCS patch format, as specified in the section RCS PATCH FORMAT. Please note that the command ignores no-ops in the input, in other words the resulting PCL contains only instructions doing something.
This command provides the complementary operation to @@ -236,23 +236,23 @@ representations, canonical or not.
The result of applying a patch to a text dictionary will in general cause the dictionary to become non-canonical.
A patch is in general a series of instructions how to transform +
A patch is in general a series of instructions how to transform an input text T into a different text T', and also encoded in text form as well.
The text format for patches understood by this package is a very -simple one, known under the names RCS patch or -diff -n format.
+simple one, known under the names RCS patch or +diff -n format.Patches in this format contain only two different commands, for the deletion of old text, and addition of new text. The replacement of some text by a different text is handled as combination of a deletion following by an addition.
The format is line oriented, with each line containing either a command or text data associated with the preceding command. -The first line of a RCS patch is always a command line.
+The first line of a RCS patch is always a command line.The commands are:
The empty line is a command which does nothing.
CVS, RCS, RCS patch, SCCS, diff -n format, patching, text conversion, text differences
+CVS, RCS, RCS patch, SCCS, diff -n format, patching, text conversion, text differences
Text processing
Copyright © 2005, Andreas Kupries <andreas_kupries@users.sourceforge.net>
Copyright © 2005, Colin McCormack <coldstore@users.sourceforge.net>
rest - define REST web APIs and call them inline or asychronously
Networking
Networking
As it constructs a temporary procedure, local variables defined at the start continue to exist in the loop.
Mathematics
Depth of the block (z-direction)
Mathematics
Networking
Defines a new Tcl procedure in the type's namespace.
The defined proc differs from a normal Tcl proc in that all type variables are automatically visible. The proc can access instance variables as well, provided that it is passed selfns (with precisely that name) as one of its arguments.
@@ -1707,11 +1707,11 @@Given this new macro, you can define a property in one line of code:
snit::type dog { property mood happy }-
Within a macro, the commands variable and proc refer to +
Within a macro, the commands variable and proc refer to the Snit type-definition commands, not the standard Tcl commands. To get the standard Tcl commands, use _variable and _proc.
Because a single slave interpreter is used for compiling all Snit types and widgets in the application, there's the possibility of macro name collisions. If you're writing a reuseable package using Snit, @@ -1924,11 +1924,11 @@
The next simplest way to create a new validation type is as a validation type command. A validation type is simply an object that has a validate method; the validate method must take one argument, a value, return the value if it is valid, and throw an error with -errorcode INVALID if the -value is invalid. This can be done with a simple proc. For +value is invalid. This can be done with a simple proc. For example, the snit::boolean validate type could have been implemented like this:
proc ::snit::boolean {"validate" value} { if {![string is boolean -strict $value]} { return -code error -errorcode INVALID "invalid boolean \"$value\", should be one of: 1, 0, ..." @@ -2063,14 +2063,14 @@ 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.
BWidget, C++, Incr Tcl, Snit, adaptors, class, mega widget, object, object oriented, type, widget, widget adaptors
+BWidget, C++, Incr Tcl, Snit, adaptors, class, mega widget, object, object oriented, type, widget, widget adaptors
Programming tools
Copyright © 2003-2009, by William H. Duquette
A dog can bark, and it can chase things.
-The method statement looks just like a normal Tcl proc, +
The method statement looks just like a normal Tcl proc, except that it appears in a snit::type definition. Notice that every instance method gets an implicit argument called self; this argument contains the object's name. (There's more on implicit method arguments below.)
Method argument lists are defined just like normal Tcl proc argument +
Method argument lists are defined just like normal Tcl proc argument lists; in particular, they can include arguments with default values and the args argument.
However, every method also has a number of implicit arguments provided by Snit in addition to those explicitly defined. The names of these implicit arguments may not used to name explicit arguments.
@@ -1190,11 +1190,11 @@The first is to define a single instance variable, an array, and store all of your instance data in the array. This way, you're only paying the declaration penalty for one variable--and you probably need the variable most of the time anyway. This method breaks down if your instance variables include multiple arrays; in Tcl 8.5, however, -the dict command might come to your rescue.
+the dict command might come to your rescue.The second method is to declare your instance variables explicitly in your instance code, while not including them in the type definition:
snit::type dog { constructor {} { @@ -1590,11 +1590,11 @@
Suppose the dog type maintains a list of the names of the dogs that have pedigrees. The pedigreedDogs type method returns this list.
The typemethod statement looks just like a normal Tcl -proc, except that it appears in a snit::type definition. +proc, except that it appears in a snit::type definition. Notice that every type method gets an implicit argument called type, which contains the fully-qualified type name.
The type method name becomes a subcommand of the type's command. For @@ -1624,11 +1624,11 @@ of the same object.
Snit doesn't implement any access control on type methods; by convention, the names of public methods begin with a lower-case letter, and the names of private methods begin with an upper-case letter.
-Alternatively, a Snit proc can be used as a private type method; see +
Alternatively, a Snit proc can be used as a private type method; see PROCS.
Method argument lists are defined just like normal Tcl proc argument lists; in particular, they can include arguments with default values @@ -1669,16 +1669,16 @@ INSTANCE METHODS for more.
A Snit proc is really just a Tcl proc defined within the type's +
A Snit proc is really just a Tcl proc defined within the type's namespace. You can use procs for private code that isn't related to any particular instance.
Procs are defined by including a proc statement in the type +
Procs are defined by including a proc statement in the type definition:
snit::type mytype { # Pops and returns the first item from the list stored in the # listvar, updating the listvar proc pop {listvar} { ... } @@ -1687,15 +1687,15 @@
Any name can be used, so long as it does not begin with Snit_; names beginning with Snit_ are reserved for Snit's own use. -However, the wise programmer will avoid proc names (set, +However, the wise programmer will avoid proc names (set, list, if, etc.) that would shadow standard Tcl command names.
-proc names, being private, should begin with a capital letter according -to convention; however, as there are typically no public procs +
proc names, being private, should begin with a capital letter according +to convention; however, as there are typically no public procs in the type's namespace it doesn't matter much either way.
Just like it calls any Tcl command. For example,
snit::type mytype { @@ -1710,11 +1710,11 @@ }
The myproc command returns a callback command for the -proc, just as mymethod does for a method.
+proc, just as mymethod does for a method.A type constructor is a body of code that initializes the type as a @@ -2472,11 +2472,11 @@
An instance of a snit::type can be destroyed by calling its destroy method. Instances of a snit::widget have no destroy method; use the Tk destroy command instead.
Every instance of a snit::widget has one predefined component called its hull component. -The hull is usually a Tk frame or toplevel widget; any other +The hull is usually a Tk frame or toplevel widget; any other widgets created as part of the snit::widget will usually be contained within the hull.
snit::widgets can have their options receive default values from THE TK OPTION DATABASE.
snit::widgetadaptors differ from snit::widgets chiefly in that any kind of widget can be used as the hull component; see WIDGET ADAPTORS.
A snit::widget's hull component will usually be a Tk frame +
A snit::widget's hull component will usually be a Tk frame widget; however, it may be any Tk widget that defines the -class option. You can explicitly choose the hull type you prefer by including the hulltype command in the widget definition:
snit::widget mytoplevel { hulltype toplevel # ... }-
If no hulltype command appears, the hull will be a frame.
+If no hulltype command appears, the hull will be a frame.
By default, Snit recognizes the following hull types: the Tk widgets -frame, labelframe, toplevel, and the Tile widgets +frame, labelframe, toplevel, and the Tile widgets ttk::frame, ttk::labelframe, and ttk::toplevel. To enable the use of some other kind of widget as the hull type, you can lappend the widget command to the variable snit::hulltypes (always provided the widget defines the -class option. For example, suppose Tk gets a new widget type called a prettyframe:
@@ -2603,13 +2603,13 @@Yes.
At times, it can be convenient to adapt a pre-existing widget instead of creating your own. For example, the Bwidget PagesManager widget manages a -set of frame widgets, only one of which is visible at a time. -The application chooses which frame is visible. All of the -These frames are created by the PagesManager itself, using +set of frame widgets, only one of which is visible at a time. +The application chooses which frame is visible. All of the +These frames are created by the PagesManager itself, using its add method. It's convenient to adapt these frames to do what we'd like them to do.
In a case like this, the Tk widget will already exist when the snit::widgetadaptor is created. Snit provides an alternate form of the installhull command for this purpose:
@@ -2702,11 +2702,11 @@ is defined, and how its options are delegated.The widget class of a snit::widgetadaptor is just the widget class of its hull widget; Snit has no control over this.
-Note that the widget class can be changed only for frame and +
Note that the widget class can be changed only for frame and toplevel widgets, which is why these are the valid hull types for snit::widgets.
Try to use snit::widgetadaptors only to make small modifications to another widget's behavior. Then, it will usually not make sense to change the widget's widget class anyway.
Index: embedded/www/tcllib/files/modules/stooop/stooop.html ================================================================== --- embedded/www/tcllib/files/modules/stooop/stooop.html +++ embedded/www/tcllib/files/modules/stooop/stooop.html @@ -150,39 +150,39 @@ namespace (which a class actually also is), contains member procedure definitions. Member procedures can also be defined outside the class body, by prefixing their name with class::, as you would proceed with namespace procedures.This is the constructor procedure for the class. It is invoked following a new invocation on the class. It must have the same name as the class and a first argument named this. Any number of base classes specifications, including arguments to be passed to their constructor, are allowed before the actual body of the procedure.
This is the destructor procedure for the class. It is invoked following a delete invocation. Its name must be the concatenation of a single ~ character followed by the class name (as in C++). It must have a single argument named this.
This is a member procedure of the class, as its first argument is named this. It allows a simple access of member data for the object referenced by this inside the procedure. For example:
set ($this,data) 0
This is a static (as in C++) member procedure of the class, as its first argument is not named this. Static (global) class data can be accessed as in:
set (data) 0
This is the optional copy procedure for the class. It must have the same name as the class and exactly 2 arguments named this and copy. It is invoked following a new invocation on an existing object of the class.
Text processing
Text processing
Copyright © 2007-2009, Sergei Golovan <sgolovan@nes.ru>
Copyright © 2007-2009, Sergei Golovan <sgolovan@nes.ru>
Copyright © 2007, Sergei Golovan <sgolovan@nes.ru>
Copyright © 2007, Sergei Golovan <sgolovan@nes.ru>
disjoint set, equivalence class, find, merge find, partition, partitioned set, union
+disjoint set, equivalence class, find, merge find, partition, partitioned set, union
Data structures
adjacent, arc, cgraph, degree, edge, graph, loop, neighbour, node, serialization, subgraph, vertex
+adjacent, arc, cgraph, degree, edge, graph, loop, neighbour, node, serialization, subgraph, vertex
Data structures
Data structures
The command will throw an error if one or more arcs in g have no weight associated with them.
A note regarding the result, the command refrains from explicitly listing the nodes of the MST as this information is implicitly @@ -253,11 +253,11 @@ forest (except for the 1-vertex components). Prim's algorithm is used to compute the tree or forest. This algorithm has a time complexity between O(E+V*log V) and O(V*V), depending on the implementation (Fibonacci heap + Adjacency list versus Adjacency Matrix). As usual V is the number of vertices and -E the number of edges in graph g.
+E the number of edges in graph g.The command will throw an error if one or more arcs in g have no weight associated with them.
A note regarding the result, the command refrains from explicitly listing the nodes of the MST as this information is implicitly provided in the arcs already.
@@ -367,11 +367,11 @@Searching for shortests paths between chosen node and all other nodes in graph G. Based on relaxation method. In comparison to struct::graph::op::dijkstra it doesn't need assumption that all weights on edges in input graph G have to be positive.
That generality sets the complexity of algorithm to - O(V*E), where V is the number of vertices -and E is number of edges in graph G.
+and E is number of edges in graph G.Directed, connected and edge weighted graph G, without any negative cycles ( presence of cycles with the negative sum @@ -555,11 +555,11 @@
The general idea of algorithm is finding the shortest augumenting paths in graph G, as long as they exist, and for each path updating the edge's weights along that path, with maximum possible throughput. The final (maximum) flow is found when there is no other augumenting path from source to sink.
-Note: Algorithm complexity : O(V*E), where V is the number of nodes and E is the number +
Note: Algorithm complexity : O(V*E), where V is the number of nodes and E is the number of edges in graph G.
Algorithm finds solution for a minimum cost flow problem. So, the goal is to find a flow, whose max value can be desiredFlow, from source node s to sink node t in given flow network G. That network except throughputs at edges has also defined a non-negative cost on each edge - cost of using that edge when @@ -604,11 +604,11 @@ for each node v, a list of nodes, which is a path between source node s and node v.
Breadth-First Search - algorithm creates the BFS Tree. -Memory and time complexity: O(V + E), where V is the number of nodes and E +Memory and time complexity: O(V + E), where V is the number of nodes and E is number of edges.
Note: Algorithm's complexity is O(n*m), where n is the number of nodes and m is the number of edges in flow network G.
Algorithm for given network G with source s and sink t, finds a blocking -flow, which can be used to obtain a maximum flow for that network G.
+flow, which can be used to obtain a maximum flow for that network G.Directed graph G representing the flow network. Each edge should have attribute @@ -818,11 +818,11 @@
Formally, given a weighted graph (let V be the set of vertices, and E a set of edges), +
Formally, given a weighted graph (let V be the set of vertices, and E a set of edges), and one vertice v of V, find a path P from v to a v' of V so that the sum of weights on edges along the path is minimal among all paths connecting v to v'.
The single-source shortest path problem, in which we have to find shortest paths from a source vertex v to all other vertices in the graph.
Data structures
Data structures
cardinality, difference, emptiness, exclusion, inclusion, intersection, membership, set, symmetric difference, union
+cardinality, difference, emptiness, exclusion, inclusion, intersection, membership, set, symmetric difference, union
Data structures
breadth-first, depth-first, in-order, node, post-order, pre-order, serialization, tree
+breadth-first, depth-first, in-order, node, post-order, pre-order, serialization, tree
Data structures
As the walk progresses, the command cmd will be evaluated at each node. Percent substitution will be performed on cmd before -evaluation, just as in a bind script. The following +evaluation, just as in a bind script. The following substitutions are recognized:
Insert the literal % character.
File formats
The TEPAM Doc Gen package provides the following commands:
This command generates the documentation for a specified procedure (name) in one of the supported formats (TXT, HTML, POD (Perl Doc), DT (TclLib DocTool), or in a custom specific format. The format is specified via ?format?. The flag ?-header_footer? adds to the documentation file header and footer. If ?dest_file? is specified the documentation is stored in a file (the file header and footer are added automatically in this case) and the file name is returned. Otherwise the documentation string is returned by generate.
This command inserts procedure documentations into an existing master document at the locations indicated by insertion placeholders which are matching the pattern of ?search_pattern?. The existing master document is either provided as data to the argument (?src_string?) or via a file (?src_file?). The final document is returned by patch if no destination file is defined (?dest_file?). Otherwise, the document is stored in the specified file, and the number of insertion placeholders that could be handled successfully is returned.
+This command inserts procedure documentations into an existing master document at the locations indicated by insertion placeholders which are matching the pattern of ?search_pattern?. The existing master document is either provided as data to the argument (?src_string?) or via a file (?src_file?). The final document is returned by patch if no destination file is defined (?dest_file?). Otherwise, the document is stored in the specified file, and the number of insertion placeholders that could be handled successfully is returned.
Any insertion placeholders of the master document are handled by default. By defining the argument ?name? the documentation insertion will be restricted to a particular procedure.
Section ADDING SUPPORT FOR NEW DOCUMENT FORMATS shows how support for additional formats can be added.
The documentation is by default generated in Tcl style (e.g. command arg1 arg2 ...). C-style documentation can be generated by setting this argument to 'C' (e.g. command(arg1,arg2,...)).
If ?dest_file? is defined the documentation is written into the specified destination file. Otherwise the documentation string is returned by the commands generate and patch.
If ?dest_file? is defined the documentation is written into the specified destination file. Otherwise the documentation string is returned by the commands generate and patch.
This is the name of the procedure for which the documentation has to be generated. This is a mandatory argument for generate, but an optional argument for patch.
This is the name of the procedure for which the documentation has to be generated. This is a mandatory argument for generate, but an optional argument for patch.
Generate adds to the generated procedure documentation the file header and footer only if a file is generated. By selecting the flag ?-header_footer? the header and footer are also generated if the documentation is returned as string by generate.
Patch inserts procedure documentations into an existing document that is either provided as string to the argument (?src_string?) or as a file (?src_file?). One of these two arguments need to be specified.
Patch inserts procedure documentations into an existing document that is either provided as string to the argument (?src_string?) or as a file (?src_file?). One of these two arguments need to be specified.
The argument ?search_pattern? defines the documentation insertion placeholder used in a document. It is a regular expression accepted by regexp and needs to contain a parenthesized sub-expression that contains the procedure name for which the documentation needs to be inserted.
The default insertion placeholder pattern is \{!(.*?)!\}, which means that the procedure name will be embedded between {! and !}. The section EXAMPLES contains a custom insertion placeholder pattern example.
While generate provides a limited number of possibilities to vary the document structure, patch offers more flexibility. Multiple documentations for different procedures and meta information can for example be added.
-The following listing shows how the patch command works. It defines first a HTML master document string that contains 2 procedure documentation placeholders ({*<ProcedureName>*}). There placeholders are replaced by patch with the generated documentation of the referred procedures. Since nonstandard placeholders are used, patch is called with an explicit placeholder pattern definition (argument search_pattern).
+While generate provides a limited number of possibilities to vary the document structure, patch offers more flexibility. Multiple documentations for different procedures and meta information can for example be added.
+The following listing shows how the patch command works. It defines first a HTML master document string that contains 2 procedure documentation placeholders ({*<ProcedureName>*}). There placeholders are replaced by patch with the generated documentation of the referred procedures. Since nonstandard placeholders are used, patch is called with an explicit placeholder pattern definition (argument search_pattern).
# Define the HTML master document set HtmlMasterDoc {\ <html> <head> @@ -392,14 +392,14 @@
automatic documentation, documentation, procedure documentation
+automatic documentation, documentation, procedure documentation
Documentation tools
Copyright © 2013, Andreas Drollinger
Procedure calls can be logged which is useful to get for interactively called procedures the command call lines.
Powerful and code efficient generation of complex parameter definition forms.
TEPAM's procedure declaration syntax is simple and self-explaining. Instead of declaring a procedure with the Tcl key word proc, a procedure is declared with the TEPAM command procedure which takes as proc also 3 arguments: The procedure name, the procedure header and the procedure body.
+TEPAM's procedure declaration syntax is simple and self-explaining. Instead of declaring a procedure with the Tcl key word proc, a procedure is declared with the TEPAM command procedure which takes as proc also 3 arguments: The procedure name, the procedure header and the procedure body.
The following example declares the subcommand message of the procedure display. This command has several named and unnamed arguments:
tepam::procedure {display message} { -return - -short_description "Displays a simple message box" -description "This procedure allows displaying a configurable message box." @@ -165,11 +165,11 @@ puts " $var=[set $var]" } } }
A call of procedure that has been declared in this way will first invoke the TEPAM argument manager, before the procedure body is executed. The argument manager parses the provided arguments, validates them, completes them eventually with some default values, and makes them finally available to the procedure body as local variables. In case an argument is missing or has a wrong type, the argument manager generates an error message that explains the reason for the error.
-As the example above shows, the TEPAM command procedure accepts subcommand definitions as procedure name and allows defining much more information than just the argument list inside the procedure header. The procedure body on the other hand is identical between a command declared with proc and a command declared with procedure.
+As the example above shows, the TEPAM command procedure accepts subcommand definitions as procedure name and allows defining much more information than just the argument list inside the procedure header. The procedure body on the other hand is identical between a command declared with proc and a command declared with procedure.
The procedure header allows defining in addition to the arguments some procedure attributes, like a description, information concerning the return value, etc. This information is basically used for the automatic generation of comprehensive help and usage texts.
A list of argument definition statements assigned to the -args argument is defining the procedure arguments. Each argument definition statement starts with the argument name, optionally followed by some argument attributes.
Three types of arguments can be defined: Unnamed arguments, named arguments and flags. The distinction between the named and unnamed arguments is made by the first argument name character which is simply "-" for named arguments. A flag is defined as named argument that has the type none.
Named and unnamed arguments are mandatory, unless they are declared with the -optional flag and unless they have a default value specified with the -default option. Named arguments and the last unnamed argument can have the attribute -multiple, which means that they can be defined multiple times. The expected argument data type is specified with the -type option. TEPAM defines a large set of standard data types which can easily be completed with application specific data types.
The argument declaration order has only an importance for unnamed arguments that are by default parsed after the named arguments (Tcl style). A variable allows changing this behavior in a way that unnamed arguments are parsed first, before the named arguments (Tk style).
@@ -339,14 +339,14 @@argument integrity, argument validation, arguments, entry mask, parameter entry form, procedure, subcommand
+argument integrity, argument validation, arguments, entry mask, parameter entry form, procedure, subcommand
Procedures, arguments, parameters, options
Copyright © 2009-2013, Andreas Drollinger
argument integrity, argument validation, arguments, procedure, subcommand
+argument integrity, argument validation, arguments, procedure, subcommand
Procedures, arguments, parameters, options
Terminal control
Terminal control
Terminal control
Documentation tools
regexp(n), split(n), string(n)
capitalize, chop, common prefix, formatting, prefix, string, uncapitalize
+capitalize, chop, common prefix, formatting, prefix, string, uncapitalize
Text processing
regexp(n), split(n), string(n)
Text processing
tool-ui - Abstractions to allow Tao to express Native Tk, HTML5, and Tao-Layout interfaces
The tool-ui package to allows Tao to express Native Tk, HTML5, and Tao-Layout interfaces.
@@ -149,14 +150,14 @@ 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.Copyright © 2014 Sean Woods <yoda@etoyoc.com>
+Copyright © 2014-2018 Sean Woods <yoda@etoyoc.com>
TclOO, callback, class methods, class variables, command prefix, currying, method reference, my method, singleton
+TclOO, callback, class methods, class variables, command prefix, currying, method reference, my method, singleton
Utility
Sean Woods
This document, and the package it describes, will undoubtedly contain bugs and other problems. -Please report such in the category tool of the +Please report such in the category tcloo of the Tcllib Trackers. 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.
@@ -336,14 +336,14 @@ 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.Copyright © 2015 Sean Woods <yoda@etoyoc.com>
Utility
This package provides objects holding enough information to enable them to either actively connect to a counterpart, or to passively wait for a connection from said counterpart. I.e. any object created by this packages is always in one of two -complementary modes, called active (the object initiates the -connection) and passive (the object receives the connection).
+complementary modes, called active (the object initiates the +connection) and passive (the object receives the connection).Of the two objects in a connecting pair one has to be configured for -active mode, and the other then has to be configured for -passive mode. This establishes which of the two partners -connects to whom (the active to the other), or, who is waiting -on whom (the passive on the other). +active mode, and the other then has to be configured for +passive mode. This establishes which of the two partners +connects to whom (the active to the other), or, who is waiting +on whom (the passive on the other). Note that this is completely independent of the direction of any data transmission using the connection after it has been established. An active object can, after establishing the connection, either transmit or receive data. Equivalently the passive object can do the same after the waiting for its partner has ended.
@@ -186,13 +186,13 @@This method destroys the object. -This is safe to do for an active object when a connection has +This is safe to do for an active object when a connection has been started, as the completion callback is synchronous. -For a passive object currently waiting for its partner to +For a passive object currently waiting for its partner to establish the connection however this is not safe and will cause errors later on, when the connection setup completes and tries to access the now missing data structures of the destroyed object.
This method starts the connection setup per the configuration of the @@ -200,15 +200,15 @@ will be invoked with one additional argument, the channel handle of the socket over which data can be transfered.
The detailed behaviour of the method depends on the configured mode.
The connection setup is done synchronously. The object waits until the connection is established. The method returns the empty string as its result.
The connection setup is done asynchronously. The method returns immediately after a listening socket has been set up. The connection will be established in the background. The method returns the port number of the listening socket, for use by the caller. One important use is the transfer of this information to @@ -245,16 +245,16 @@ The only option the object needs is -port, and it specifies the TCP port on which the listening socket is opened to await the connection from the partner.
This option specifies the host to connect to in active mode, -either by name or ip-address. An object configured for passive +
This option specifies the host to connect to in active mode, +either by name or ip-address. An object configured for passive mode ignores this option.
For active mode this option specifies the port the object is -expected to connect to. For passive mode however it is the port +
For active mode this option specifies the port the object is +expected to connect to. For passive mode however it is the port where the object creates the listening socket waiting for a connection. It defaults to 0, which allows the OS to choose the actual port to listen on.
This option allows the user to specify which command to use to open a @@ -325,14 +325,14 @@ 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.
active, channel, connection, passive, secure, ssl, tls, transfer
+active, channel, connection, passive, secure, ssl, tls, transfer
Transfer module
Copyright © 2006-2009 Andreas Kupries <andreas_kupries@users.sourceforge.net>
The result returned by the command is the empty string -if it was set to make an active connection, and the port the +if it was set to make an active connection, and the port the internal receiver object is listening on otherwise, i.e when it is -configured to connect passively. +configured to connect passively. See also the package transfer::connect and the description of the method connect for where this behaviour comes from.
This method is like stream channel, except that the received data is written to the file path, replacing any prior @@ -227,13 +227,13 @@ I.e. it is not possible to run two receptions in parallel, only in sequence. Errors will also be thrown if the configuration of the data destination is invalid, or if no completion callback was specified.
The result returned by the method is the empty string -for an object configured to make an active connection, and the port the +for an object configured to make an active connection, and the port the object is listening on otherwise, i.e when it is -configured to connect passively. +configured to connect passively. See also the package transfer::connect and the description of the method connect for where this behaviour comes from.
This method returns a boolean value telling us whether a reception is in progress (True), or not (False).
This option specifies the host to connect to in active mode, -either by name or ip-address. An object configured for passive +
This option specifies the host to connect to in active mode, +either by name or ip-address. An object configured for passive mode ignores this option.
For active mode this option specifies the port the object is -expected to connect to. For passive mode however it is the port +
For active mode this option specifies the port the object is +expected to connect to. For passive mode however it is the port where the object creates the listening socket waiting for a connection. It defaults to 0, which allows the OS to choose the actual port to listen on.
This option allows the user to specify which command to use to open a Index: embedded/www/tcllib/files/modules/transfer/transmitter.html ================================================================== --- embedded/www/tcllib/files/modules/transfer/transmitter.html +++ embedded/www/tcllib/files/modules/transfer/transmitter.html @@ -185,13 +185,13 @@ same option of the transmitter object. This callback is only given the number of bytes and transfered, and possibly an error message. No reference to the internally used transmitter object is made.
The result returned by the command is the empty string -if it was set to make an active connection, and the port the +if it was set to make an active connection, and the port the internal transmitter object is listening on otherwise, i.e when it is -configured to connect passively. +configured to connect passively. See also the package transfer::connect and the description of the method connect for where this behaviour comes from.
This method is like stream channel, except that the data contained in the file path is transfered.
The result returned by the method is the empty string -for an object configured to make an active connection, and the port the +for an object configured to make an active connection, and the port the object is listening on otherwise, i.e when it is -configured to connect passively. +configured to connect passively. See also the package transfer::connect and the description of the method connect for where this behaviour comes from.
This method returns a boolean value telling us whether a transmission is in progress (True), or not (False).
This option specifies the host to connect to in active mode, -either by name or ip-address. An object configured for passive +
This option specifies the host to connect to in active mode, +either by name or ip-address. An object configured for passive mode ignores this option.
For active mode this option specifies the port the object is -expected to connect to. For passive mode however it is the port +
For active mode this option specifies the port the object is +expected to connect to. For passive mode however it is the port where the object creates the listening socket waiting for a connection. It defaults to 0, which allows the OS to choose the actual port to listen on.
This option allows the user to specify which command to use to open a @@ -369,14 +369,14 @@ 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.
channel, copy, data source, secure, ssl, tls, transfer, transmitter
+channel, copy, data source, secure, ssl, tls, transfer, transmitter
Transfer module
Copyright © 2006-2009 Andreas Kupries <andreas_kupries@users.sourceforge.net>
Cost, DOM, TreeQL, XPath, XSLT, structured queries, tree, tree query language
+Cost, DOM, TreeQL, XPath, XSLT, structured queries, tree, tree query language
Data structures
cron - Tool for automating the period callback of commands
System
Copyright © 2016 Sean Woods <yoda@etoyoc.com>
+Copyright © 2016-2018 Sean Woods <yoda@etoyoc.com>