232 changed files with 15375 additions and 1824 deletions
@ -0,0 +1,37 @@ |
|||||||
|
[comment {--- punk::docgen generated from inline doctools comments ---}] |
||||||
|
[comment {--- punk::docgen DO NOT EDIT DOCS HERE UNLESS YOU REMOVE THESE COMMENT LINES ---}] |
||||||
|
[comment {--- punk::docgen overwrites this file ---}] |
||||||
|
[manpage_begin modpod_module_modpod 0 0.1.3] |
||||||
|
[copyright "2024"] |
||||||
|
[titledesc {Module API}] [comment {-- Name section and table of contents description --}] |
||||||
|
[moddesc {-}] [comment {-- Description at end of page heading --}] |
||||||
|
[require modpod] |
||||||
|
[keywords module] |
||||||
|
[description] |
||||||
|
[para] - |
||||||
|
[section Overview] |
||||||
|
[para] overview of modpod |
||||||
|
[subsection Concepts] |
||||||
|
[para] - |
||||||
|
[subsection dependencies] |
||||||
|
[para] packages used by modpod |
||||||
|
[list_begin itemized] |
||||||
|
[item] [package {Tcl 8.6-}] |
||||||
|
[list_end] |
||||||
|
[section API] |
||||||
|
[subsection {Namespace modpod::class}] |
||||||
|
[para] class definitions |
||||||
|
[list_begin enumerated] |
||||||
|
[list_end] [comment {--- end class enumeration ---}] |
||||||
|
[subsection {Namespace modpod}] |
||||||
|
[para] Core API functions for modpod |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace modpod ---}] |
||||||
|
[subsection {Namespace modpod::lib}] |
||||||
|
[para] Secondary functions that are part of the API |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace modpod::lib ---}] |
||||||
|
[section Internal] |
||||||
|
[subsection {Namespace modpod::system}] |
||||||
|
[para] Internal functions that are not part of the API |
||||||
|
[manpage_end] |
||||||
@ -0,0 +1,49 @@ |
|||||||
|
[comment {--- punk::docgen generated from inline doctools comments ---}] |
||||||
|
[comment {--- punk::docgen DO NOT EDIT DOCS HERE UNLESS YOU REMOVE THESE COMMENT LINES ---}] |
||||||
|
[comment {--- punk::docgen overwrites this file ---}] |
||||||
|
[manpage_begin overtype_module_overtype 0 1.6.6] |
||||||
|
[copyright "2024"] |
||||||
|
[titledesc {overtype text layout - ansi aware}] [comment {-- Name section and table of contents description --}] |
||||||
|
[moddesc {overtype text layout}] [comment {-- Description at end of page heading --}] |
||||||
|
[require overtype] |
||||||
|
[keywords module text ansi] |
||||||
|
[description] |
||||||
|
[para] - |
||||||
|
[section Overview] |
||||||
|
[para] overview of overtype |
||||||
|
[subsection Concepts] |
||||||
|
[para] - |
||||||
|
[subsection dependencies] |
||||||
|
[para] packages used by overtype |
||||||
|
[list_begin itemized] |
||||||
|
[item] [package {Tcl 8.6}] |
||||||
|
[item] [package textutil] |
||||||
|
[item] [package punk::ansi] |
||||||
|
[para] - required to detect, split, strip and calculate lengths of text possibly containing ansi codes |
||||||
|
[item] [package punk::char] |
||||||
|
[para] - box drawing - and also unicode character width determination for proper layout of text with double-column-width chars |
||||||
|
[list_end] |
||||||
|
[section API] |
||||||
|
[subsection {Namespace overtype}] |
||||||
|
[para] Core API functions for overtype |
||||||
|
[list_begin definitions] |
||||||
|
[call [fun overtype::renderspace] [arg args] ] |
||||||
|
[para] usage: ?-transparent [lb]0|1[rb]? ?-expand_right [lb]1|0[rb]? ?-ellipsis [lb]1|0[rb]? ?-ellipsistext ...? undertext overtext |
||||||
|
[call [fun overtype::renderline] [arg args] ] |
||||||
|
[para] renderline is the core engine for overtype string processing (frames & textblocks), and the raw mode commandline repl for the Tcl Punk Shell |
||||||
|
[para] It is also a central part of an ansi (micro) virtual terminal-emulator of sorts |
||||||
|
[para] This system does a half decent job at rendering 90's ANSI art to manipulable colour text blocks that can be joined & framed for layout display within a unix or windows terminal |
||||||
|
[para] Renderline helps maintain ANSI text styling reset/replay codes so that the styling of one block doesn't affect another. |
||||||
|
[para] Calling on the punk::ansi library - it can coalesce codes to keep the size down. |
||||||
|
[para] It is a giant mess of doing exactly what common wisdom says not to do... lots at once. |
||||||
|
[para] renderline is part of the Unicode and ANSI aware Overtype system which 'renders' a block of text onto a static underlay |
||||||
|
[para] The underlay is generally expected to be an ordered set of lines or a rectangular text block analogous to a terminal screen - but it can also be ragged in line length, or just blank. |
||||||
|
[para] The overlay couuld be similar - in which case it may often be used to overwrite a column or section of the underlay. |
||||||
|
[para] The overlay could however be a sequence of ANSI-laden text that jumps all over the place. |
||||||
|
|
||||||
|
[para] renderline itself only deals with a single line - or sometimes a single character. It is generally called from a loop that does further terminal-like or textblock processing. |
||||||
|
[para] By suppyling the -info 1 option - it can return various fields indicating the state of the render. |
||||||
|
[para] The main 3 are the result, overflow_right, and unapplied. |
||||||
|
[para] Renderline handles cursor movements from either keystrokes or ANSI sequences but for a full system the aforementioned loop will need to be in place to manage the set of lines under manipulation. |
||||||
|
[list_end] [comment {--- end definitions namespace overtype ---}] |
||||||
|
[manpage_end] |
||||||
@ -0,0 +1,32 @@ |
|||||||
|
[comment {--- punk::docgen generated from inline doctools comments ---}] |
||||||
|
[comment {--- punk::docgen DO NOT EDIT DOCS HERE UNLESS YOU REMOVE THESE COMMENT LINES ---}] |
||||||
|
[comment {--- punk::docgen overwrites this file ---}] |
||||||
|
[manpage_begin shellspy_module_picalc 0 0.1.0] |
||||||
|
[copyright "2025"] |
||||||
|
[titledesc {Module API}] [comment {-- Name section and table of contents description --}] |
||||||
|
[moddesc {-}] [comment {-- Description at end of page heading --}] |
||||||
|
[require picalc] |
||||||
|
[keywords module] |
||||||
|
[description] |
||||||
|
[para] - |
||||||
|
[section Overview] |
||||||
|
[para] overview of picalc |
||||||
|
[subsection Concepts] |
||||||
|
[para] - |
||||||
|
[subsection dependencies] |
||||||
|
[para] packages used by picalc |
||||||
|
[list_begin itemized] |
||||||
|
[item] [package {Tcl 8.6}] |
||||||
|
[item] [package {punk::lib}] |
||||||
|
[item] [package {punk::args}] |
||||||
|
[list_end] |
||||||
|
[section API] |
||||||
|
[subsection {Namespace picalc}] |
||||||
|
[para] Core API functions for picalc |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace picalc ---}] |
||||||
|
[subsection {Namespace picalc::lib}] |
||||||
|
[para] Secondary functions that are part of the API |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace picalc::lib ---}] |
||||||
|
[manpage_end] |
||||||
@ -0,0 +1,44 @@ |
|||||||
|
[comment {--- punk::docgen generated from inline doctools comments ---}] |
||||||
|
[comment {--- punk::docgen DO NOT EDIT DOCS HERE UNLESS YOU REMOVE THESE COMMENT LINES ---}] |
||||||
|
[comment {--- punk::docgen overwrites this file ---}] |
||||||
|
[manpage_begin shellspy_module_pipe 0 1.0] |
||||||
|
[copyright "2025"] |
||||||
|
[titledesc {Module API}] [comment {-- Name section and table of contents description --}] |
||||||
|
[moddesc {-}] [comment {-- Description at end of page heading --}] |
||||||
|
[require pipe] |
||||||
|
[keywords module] |
||||||
|
[description] |
||||||
|
[para] - |
||||||
|
[section Overview] |
||||||
|
[para] overview of pipe |
||||||
|
[subsection Concepts] |
||||||
|
[para] - |
||||||
|
[subsection dependencies] |
||||||
|
[para] packages used by pipe |
||||||
|
[list_begin itemized] |
||||||
|
[item] [package {Tcl 8.6}] |
||||||
|
[list_end] |
||||||
|
[section API] |
||||||
|
[subsection {Namespace pipe::class}] |
||||||
|
[para] class definitions |
||||||
|
if {[tcl::info::commands [tcl::namespace::current]::interface_sample1] eq ""} { |
||||||
|
*** !doctools |
||||||
|
[list_begin enumerated] |
||||||
|
[list_end] [comment {--- end class enumeration ---}] |
||||||
|
} |
||||||
|
} |
||||||
|
++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ |
||||||
|
[subsection {Namespace pipe}] |
||||||
|
[para] Core API functions for pipe |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace pipe ---}] |
||||||
|
[subsection {Namespace pipe::lib}] |
||||||
|
[para] Secondary functions that are part of the API |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace pipe::lib ---}] |
||||||
|
[section Internal] |
||||||
|
tcl::namespace::eval pipe::system { |
||||||
|
*** !doctools |
||||||
|
[subsection {Namespace pipe::system}] |
||||||
|
[para] Internal functions that are not part of the API |
||||||
|
[manpage_end] |
||||||
@ -1,46 +0,0 @@ |
|||||||
[comment {--- punk::docgen generated from inline doctools comments ---}] |
|
||||||
[comment {--- punk::docgen DO NOT EDIT DOCS HERE UNLESS YOU REMOVE THESE COMMENT LINES ---}] |
|
||||||
[comment {--- punk::docgen overwrites this file ---}] |
|
||||||
[manpage_begin punkshell_module_textblock 0 0.1.1] |
|
||||||
[copyright "2024"] |
|
||||||
[titledesc {punk textblock functions}] [comment {-- Name section and table of contents description --}] |
|
||||||
[moddesc {punk textblock}] [comment {-- Description at end of page heading --}] |
|
||||||
[require textblock] |
|
||||||
[keywords module utility lib] |
|
||||||
[description] |
|
||||||
[para] Ansi-aware terminal textblock manipulation |
|
||||||
[section Overview] |
|
||||||
[para] overview of textblock |
|
||||||
[subsection Concepts] |
|
||||||
[para] |
|
||||||
[subsection dependencies] |
|
||||||
[para] packages used by textblock |
|
||||||
[list_begin itemized] |
|
||||||
[item] [package {Tcl 8.6-}] |
|
||||||
[item] [package {punk::args}] |
|
||||||
[item] [package {punk::char}] |
|
||||||
[item] [package {punk::ansi}] |
|
||||||
[item] [package {punk::lib}] |
|
||||||
[item] [package {overtype}] |
|
||||||
[item] [package {term::ansi::code::macros}] |
|
||||||
[item] [package {textutil}] |
|
||||||
[list_end] |
|
||||||
[section API] |
|
||||||
[subsection {Namespace textblock::class}] |
|
||||||
[para] class definitions |
|
||||||
[list_begin itemized] [comment {- textblock::class groupings -}] |
|
||||||
[item] |
|
||||||
[para] [emph {handler_classes}] |
|
||||||
[list_begin enumerated] |
|
||||||
[enum] CLASS [class textblock::class::table] |
|
||||||
[list_begin definitions] |
|
||||||
[para] [emph METHODS] |
|
||||||
[call class::table [method constructor] [arg args]] |
|
||||||
[call class::table [method add_column] [arg args]] |
|
||||||
[call class::table [method add_row] [arg args]] |
|
||||||
[list_end] |
|
||||||
[list_end] [comment {- end enumeration provider_classes }] |
|
||||||
[list_end] [comment {- end itemized list textblock::class groupings -}] |
|
||||||
Already uniform blocks will join faster than textblock::join, and ragged blocks will join in a ragged manner |
|
||||||
" |
|
||||||
[manpage_end] |
|
||||||
@ -0,0 +1,74 @@ |
|||||||
|
[comment {--- punk::docgen generated from inline doctools comments ---}] |
||||||
|
[comment {--- punk::docgen DO NOT EDIT DOCS HERE UNLESS YOU REMOVE THESE COMMENT LINES ---}] |
||||||
|
[comment {--- punk::docgen overwrites this file ---}] |
||||||
|
[manpage_begin tomlish_module_tomlish 0 1.1.3] |
||||||
|
[copyright "2024"] |
||||||
|
[titledesc {tomlish toml parser}] [comment {-- Name section and table of contents description --}] |
||||||
|
[moddesc {tomlish}] [comment {-- Description at end of page heading --}] |
||||||
|
[require tomlish] |
||||||
|
[keywords module parsing toml configuration] |
||||||
|
[description] |
||||||
|
[para] tomlish is an intermediate representation of toml data in a tree structure (tagged lists representing type information) |
||||||
|
[para] The design goals are for tomlish to be whitespace and comment preserving ie byte-for byte preservation during roundtrips from toml to tomlish and back to toml |
||||||
|
[para] The tomlish representation can then be converted to a Tcl dict structure or to other formats such as json, |
||||||
|
[para] although these other formats are generally unlikely to retain whitespace or comments |
||||||
|
[para] The other formats also won't preserve roundtripability e.g \t and a literal tab coming from a toml file will be indistinguishable. |
||||||
|
[para] A further goal is to allow at least a useful subset of in-place editing operations which also preserve whitespace and comments. |
||||||
|
[para] e.g leaf key value editing, and table reordering/sorting, key-renaming at any level, key insertions/deletions |
||||||
|
[para] The API for editing (tomldoc object?) may require explicit setting of type if accessing an existing key |
||||||
|
[para] e.g setting a key that already exists and is a different type (especially if nested structure such as a table or array) |
||||||
|
[para] will need a -type option (-force ?) to force overriding with another type such as an int. |
||||||
|
[section Overview] |
||||||
|
[para] overview of tomlish |
||||||
|
[subsection Concepts] |
||||||
|
[para] - |
||||||
|
[subsection dependencies] |
||||||
|
[para] packages used by tomlish |
||||||
|
[list_begin itemized] |
||||||
|
[item] [package {Tcl 8.6-}] |
||||||
|
[item] [package {struct::stack}] |
||||||
|
[list_end] |
||||||
|
[section API] |
||||||
|
[subsection {Namespace tomlish}] |
||||||
|
[para] Core API functions for tomlish |
||||||
|
[list_begin definitions] |
||||||
|
[call [fun json_to_toml] [arg json]] |
||||||
|
[para] |
||||||
|
[list_end] [comment {--- end definitions namespace tomlish ---}] |
||||||
|
[subsection {Namespace tomlish::encode}] |
||||||
|
[para] |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace tomlish::encode ---}] |
||||||
|
[subsection {Namespace tomlish::decode}] |
||||||
|
[para] |
||||||
|
[list_begin definitions] |
||||||
|
[call [fun toml] [arg arg...]] |
||||||
|
[para] return a Tcl list of tomlish tokens |
||||||
|
[list_end] [comment {--- end definitions namespace tomlish::decode ---}] |
||||||
|
[subsection {Namespace tomlish::utils}] |
||||||
|
[para] |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace tomlish::utils ---}] |
||||||
|
[subsection {Namespace tomlish::parse}] |
||||||
|
[para] |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace tomlish::parse ---}] |
||||||
|
[subsection {Namespace tomlish::app}] |
||||||
|
[para] |
||||||
|
[list_begin definitions] |
||||||
|
[call app::[fun decoder] [arg args]] |
||||||
|
[para] read toml on stdin until EOF |
||||||
|
[para] on error - returns non-zero exit code and writes error on stderr |
||||||
|
[para] on success - returns zero exit code and writes JSON encoding of the data on stdout |
||||||
|
[para] This decoder is intended to be compatible with toml-test |
||||||
|
[call app::[fun encoder] [arg args]] |
||||||
|
[para] read JSON on stdin until EOF |
||||||
|
[para] return non-zero exitcode if JSON data cannot be converted to a valid TOML representation |
||||||
|
[para] return zero exitcode and TOML data on stdout if JSON data can be converted. |
||||||
|
[para] This encoder is intended to be compatible with toml-test |
||||||
|
[list_end] [comment {--- end definitions namespace tomlish::app ---}] |
||||||
|
[subsection {Namespace tomlish::lib}] |
||||||
|
[para] Secondary functions that are part of the API |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace tomlish::lib ---}] |
||||||
|
[manpage_end] |
||||||
@ -0,0 +1,74 @@ |
|||||||
|
[comment {--- punk::docgen generated from inline doctools comments ---}] |
||||||
|
[comment {--- punk::docgen DO NOT EDIT DOCS HERE UNLESS YOU REMOVE THESE COMMENT LINES ---}] |
||||||
|
[comment {--- punk::docgen overwrites this file ---}] |
||||||
|
[manpage_begin tomlish_module_tomlish 0 1.1.4] |
||||||
|
[copyright "2024"] |
||||||
|
[titledesc {tomlish toml parser}] [comment {-- Name section and table of contents description --}] |
||||||
|
[moddesc {tomlish}] [comment {-- Description at end of page heading --}] |
||||||
|
[require tomlish] |
||||||
|
[keywords module parsing toml configuration] |
||||||
|
[description] |
||||||
|
[para] tomlish is an intermediate representation of toml data in a tree structure (tagged lists representing type information) |
||||||
|
[para] The design goals are for tomlish to be whitespace and comment preserving ie byte-for byte preservation during roundtrips from toml to tomlish and back to toml |
||||||
|
[para] The tomlish representation can then be converted to a Tcl dict structure or to other formats such as json, |
||||||
|
[para] although these other formats are generally unlikely to retain whitespace or comments |
||||||
|
[para] The other formats also won't preserve roundtripability e.g \t and a literal tab coming from a toml file will be indistinguishable. |
||||||
|
[para] A further goal is to allow at least a useful subset of in-place editing operations which also preserve whitespace and comments. |
||||||
|
[para] e.g leaf key value editing, and table reordering/sorting, key-renaming at any level, key insertions/deletions |
||||||
|
[para] The API for editing (tomldoc object?) may require explicit setting of type if accessing an existing key |
||||||
|
[para] e.g setting a key that already exists and is a different type (especially if nested structure such as a table or array) |
||||||
|
[para] will need a -type option (-force ?) to force overriding with another type such as an int. |
||||||
|
[section Overview] |
||||||
|
[para] overview of tomlish |
||||||
|
[subsection Concepts] |
||||||
|
[para] - |
||||||
|
[subsection dependencies] |
||||||
|
[para] packages used by tomlish |
||||||
|
[list_begin itemized] |
||||||
|
[item] [package {Tcl 8.6-}] |
||||||
|
[item] [package {struct::stack}] |
||||||
|
[list_end] |
||||||
|
[section API] |
||||||
|
[subsection {Namespace tomlish}] |
||||||
|
[para] Core API functions for tomlish |
||||||
|
[list_begin definitions] |
||||||
|
[call [fun json_to_toml] [arg json]] |
||||||
|
[para] |
||||||
|
[list_end] [comment {--- end definitions namespace tomlish ---}] |
||||||
|
[subsection {Namespace tomlish::encode}] |
||||||
|
[para] |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace tomlish::encode ---}] |
||||||
|
[subsection {Namespace tomlish::decode}] |
||||||
|
[para] |
||||||
|
[list_begin definitions] |
||||||
|
[call [fun toml] [arg arg...]] |
||||||
|
[para] return a Tcl list of tomlish tokens |
||||||
|
[list_end] [comment {--- end definitions namespace tomlish::decode ---}] |
||||||
|
[subsection {Namespace tomlish::utils}] |
||||||
|
[para] |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace tomlish::utils ---}] |
||||||
|
[subsection {Namespace tomlish::parse}] |
||||||
|
[para] |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace tomlish::parse ---}] |
||||||
|
[subsection {Namespace tomlish::app}] |
||||||
|
[para] |
||||||
|
[list_begin definitions] |
||||||
|
[call app::[fun decoder] [arg args]] |
||||||
|
[para] read toml on stdin until EOF |
||||||
|
[para] on error - returns non-zero exit code and writes error on stderr |
||||||
|
[para] on success - returns zero exit code and writes JSON encoding of the data on stdout |
||||||
|
[para] This decoder is intended to be compatible with toml-test |
||||||
|
[call app::[fun encoder] [arg args]] |
||||||
|
[para] read JSON on stdin until EOF |
||||||
|
[para] return non-zero exitcode if JSON data cannot be converted to a valid TOML representation |
||||||
|
[para] return zero exitcode and TOML data on stdout if JSON data can be converted. |
||||||
|
[para] This encoder is intended to be compatible with toml-test |
||||||
|
[list_end] [comment {--- end definitions namespace tomlish::app ---}] |
||||||
|
[subsection {Namespace tomlish::lib}] |
||||||
|
[para] Secondary functions that are part of the API |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace tomlish::lib ---}] |
||||||
|
[manpage_end] |
||||||
@ -0,0 +1,64 @@ |
|||||||
|
[comment {--- punk::docgen generated from inline doctools comments ---}] |
||||||
|
[comment {--- punk::docgen DO NOT EDIT DOCS HERE UNLESS YOU REMOVE THESE COMMENT LINES ---}] |
||||||
|
[comment {--- punk::docgen overwrites this file ---}] |
||||||
|
[manpage_begin tomlish_module_tomlish 0 1.1.5] |
||||||
|
[copyright "2024"] |
||||||
|
[titledesc {tomlish toml parser}] [comment {-- Name section and table of contents description --}] |
||||||
|
[moddesc {tomlish}] [comment {-- Description at end of page heading --}] |
||||||
|
[require tomlish] |
||||||
|
[keywords module parsing toml configuration] |
||||||
|
[description] |
||||||
|
[para] tomlish is an intermediate representation of toml data in a tree structure (tagged lists representing type information) |
||||||
|
[para] The design goals are for tomlish to be whitespace and comment preserving ie byte-for byte preservation during roundtrips from toml to tomlish and back to toml |
||||||
|
[para] The tomlish representation can then be converted to a Tcl dict structure or to other formats such as json, |
||||||
|
[para] although these other formats are generally unlikely to retain whitespace or comments |
||||||
|
[para] The other formats also won't preserve roundtripability e.g \t and a literal tab coming from a toml file will be indistinguishable. |
||||||
|
[para] A further goal is to allow at least a useful subset of in-place editing operations which also preserve whitespace and comments. |
||||||
|
[para] e.g leaf key value editing, and table reordering/sorting, key-renaming at any level, key insertions/deletions |
||||||
|
[para] The API for editing (tomldoc object?) may require explicit setting of type if accessing an existing key |
||||||
|
[para] e.g setting a key that already exists and is a different type (especially if nested structure such as a table or array) |
||||||
|
[para] will need a -type option (-force ?) to force overriding with another type such as an int. |
||||||
|
[section Overview] |
||||||
|
[para] overview of tomlish |
||||||
|
[subsection Concepts] |
||||||
|
[para] - |
||||||
|
[subsection dependencies] |
||||||
|
[para] packages used by tomlish |
||||||
|
[list_begin itemized] |
||||||
|
[item] [package {Tcl 8.6-}] |
||||||
|
[item] [package {struct::stack}] |
||||||
|
[list_end] |
||||||
|
[section API] |
||||||
|
[subsection {Namespace tomlish}] |
||||||
|
[para] Core API functions for tomlish |
||||||
|
[list_begin definitions] |
||||||
|
[call [fun json_to_toml] [arg json]] |
||||||
|
[para] |
||||||
|
[list_end] [comment {--- end definitions namespace tomlish ---}] |
||||||
|
[subsection {Namespace tomlish::encode}] |
||||||
|
[para] |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace tomlish::encode ---}] |
||||||
|
[subsection {Namespace tomlish::decode}] |
||||||
|
[para] |
||||||
|
[list_begin definitions] |
||||||
|
[call [fun toml] [arg arg...]] |
||||||
|
[para] return a Tcl list of tomlish tokens |
||||||
|
[list_end] [comment {--- end definitions namespace tomlish::decode ---}] |
||||||
|
[subsection {Namespace tomlish::utils}] |
||||||
|
[para] |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace tomlish::utils ---}] |
||||||
|
[subsection {Namespace tomlish::parse}] |
||||||
|
[para] |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace tomlish::parse ---}] |
||||||
|
[subsection {Namespace tomlish::app}] |
||||||
|
[para] |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace tomlish::app ---}] |
||||||
|
[subsection {Namespace tomlish::lib}] |
||||||
|
[para] Secondary functions that are part of the API |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace tomlish::lib ---}] |
||||||
|
[manpage_end] |
||||||
@ -0,0 +1,73 @@ |
|||||||
|
[comment {--- punk::docgen generated from inline doctools comments ---}] |
||||||
|
[comment {--- punk::docgen DO NOT EDIT DOCS HERE UNLESS YOU REMOVE THESE COMMENT LINES ---}] |
||||||
|
[comment {--- punk::docgen overwrites this file ---}] |
||||||
|
[manpage_begin tomlish_module_tomlish 0 1.1.6] |
||||||
|
[copyright "2024"] |
||||||
|
[titledesc {tomlish toml parser}] [comment {-- Name section and table of contents description --}] |
||||||
|
[moddesc {tomlish}] [comment {-- Description at end of page heading --}] |
||||||
|
[require tomlish] |
||||||
|
[keywords module parsing toml configuration] |
||||||
|
[description] |
||||||
|
[para] tomlish is an intermediate representation of toml data in a tree structure (tagged lists representing type information) |
||||||
|
[para] The design goals are for tomlish to be whitespace and comment preserving ie byte-for byte preservation during roundtrips from toml to tomlish and back to toml |
||||||
|
[para] The tomlish representation can then be converted to a Tcl dict structure or to other formats such as json, |
||||||
|
[para] although these other formats are generally unlikely to retain whitespace or comments |
||||||
|
[para] The other formats also won't preserve roundtripability e.g \t and a literal tab coming from a toml file will be indistinguishable. |
||||||
|
[para] A further goal is to allow at least a useful subset of in-place editing operations which also preserve whitespace and comments. |
||||||
|
[para] e.g leaf key value editing, and table reordering/sorting, key-renaming at any level, key insertions/deletions |
||||||
|
[para] The API for editing (tomldoc object?) may require explicit setting of type if accessing an existing key |
||||||
|
[para] e.g setting a key that already exists and is a different type (especially if nested structure such as a table or array) |
||||||
|
[para] will need a -type option (-force ?) to force overriding with another type such as an int. |
||||||
|
[section Overview] |
||||||
|
[para] overview of tomlish |
||||||
|
[subsection Concepts] |
||||||
|
[para] - |
||||||
|
[subsection dependencies] |
||||||
|
[para] packages used by tomlish |
||||||
|
[list_begin itemized] |
||||||
|
[item] [package {Tcl 8.6-}] |
||||||
|
[item] [package {struct::stack}] |
||||||
|
[list_end] |
||||||
|
[section API] |
||||||
|
[subsection {Namespace tomlish}] |
||||||
|
[para] Core API functions for tomlish |
||||||
|
[list_begin definitions] |
||||||
|
[call [fun typedjson_to_toml] [arg json]] |
||||||
|
[para] |
||||||
|
[list_end] [comment {--- end definitions namespace tomlish ---}] |
||||||
|
[subsection {Namespace tomlish::encode}] |
||||||
|
[para] |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace tomlish::encode ---}] |
||||||
|
[subsection {Namespace tomlish::decode}] |
||||||
|
[para] |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace tomlish::decode ---}] |
||||||
|
[subsection {Namespace tomlish::utils}] |
||||||
|
[para] |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace tomlish::utils ---}] |
||||||
|
[subsection {Namespace tomlish::parse}] |
||||||
|
[para] |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace tomlish::parse ---}] |
||||||
|
[subsection {Namespace tomlish::app}] |
||||||
|
[para] |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace tomlish::app ---}] |
||||||
|
[subsection {Namespace tomlish::lib}] |
||||||
|
[para] Secondary functions that are part of the API |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace tomlish::lib ---}] |
||||||
|
[subsection {Namespace tomlish::system}] |
||||||
|
[para] |
||||||
|
[list_begin definitions] |
||||||
|
[call [fun lindex_resolve_basic] [arg list] [arg index]] |
||||||
|
[para] Accepts index of the forms accepted by Tcl's list commands. (e.g compound indices such as 3+1 end-2) |
||||||
|
[para] returns -1 for out of range at either end, or a valid integer index |
||||||
|
[para] Unlike lindex_resolve; lindex_resolve_basic can't determine if an out of range index was out of range at the lower or upper bound |
||||||
|
[para] This is only likely to be faster than average over lindex_resolve for Tcl which has the builtin lseq command |
||||||
|
[para] The performance advantage is more likely to be present when using compound indexes such as $x+1 or end-1 |
||||||
|
[para] For pure integer indices the performance should be equivalent |
||||||
|
[list_end] [comment {--- end definitions namespace tomlish::system ---}] |
||||||
|
[manpage_end] |
||||||
@ -0,0 +1,44 @@ |
|||||||
|
[comment {--- punk::docgen generated from inline doctools comments ---}] |
||||||
|
[comment {--- punk::docgen DO NOT EDIT DOCS HERE UNLESS YOU REMOVE THESE COMMENT LINES ---}] |
||||||
|
[comment {--- punk::docgen overwrites this file ---}] |
||||||
|
[manpage_begin shellspy_module_punk::icomm 0 0.1.0] |
||||||
|
[copyright "2025"] |
||||||
|
[titledesc {Module API}] [comment {-- Name section and table of contents description --}] |
||||||
|
[moddesc {-}] [comment {-- Description at end of page heading --}] |
||||||
|
[require punk::icomm] |
||||||
|
[keywords module] |
||||||
|
[description] |
||||||
|
[para] - |
||||||
|
[section Overview] |
||||||
|
[para] overview of punk::icomm |
||||||
|
[subsection Concepts] |
||||||
|
[para] - |
||||||
|
[subsection dependencies] |
||||||
|
[para] packages used by punk::icomm |
||||||
|
[list_begin itemized] |
||||||
|
[item] [package {Tcl 8.6}] |
||||||
|
[item] [package {punk::args}] |
||||||
|
[list_end] |
||||||
|
[section API] |
||||||
|
[subsection {Namespace punk::icomm::class}] |
||||||
|
[para] class definitions |
||||||
|
if {[tcl::info::commands [tcl::namespace::current]::interface_sample1] eq ""} { |
||||||
|
*** !doctools |
||||||
|
[list_begin enumerated] |
||||||
|
[list_end] [comment {--- end class enumeration ---}] |
||||||
|
} |
||||||
|
} |
||||||
|
[subsection {Namespace punk::icomm}] |
||||||
|
[para] Core API functions for punk::icomm |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace punk::icomm ---}] |
||||||
|
[subsection {Namespace punk::icomm::lib}] |
||||||
|
[para] Secondary functions that are part of the API |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace punk::icomm::lib ---}] |
||||||
|
[section Internal] |
||||||
|
tcl::namespace::eval punk::icomm::system { |
||||||
|
*** !doctools |
||||||
|
[subsection {Namespace punk::icomm::system}] |
||||||
|
[para] Internal functions that are not part of the API |
||||||
|
[manpage_end] |
||||||
@ -0,0 +1,32 @@ |
|||||||
|
[comment {--- punk::docgen generated from inline doctools comments ---}] |
||||||
|
[comment {--- punk::docgen DO NOT EDIT DOCS HERE UNLESS YOU REMOVE THESE COMMENT LINES ---}] |
||||||
|
[comment {--- punk::docgen overwrites this file ---}] |
||||||
|
[manpage_begin punkshell_module_punk::imap4 0 0.9] |
||||||
|
[copyright "2025"] |
||||||
|
[titledesc {IMAP4 client}] [comment {-- Name section and table of contents description --}] |
||||||
|
[moddesc {IMAP4 client}] [comment {-- Description at end of page heading --}] |
||||||
|
[require punk::imap4] |
||||||
|
[keywords module mail imap imap4 client mailclient] |
||||||
|
[description] |
||||||
|
[para] An implementation of IMAP4 (rev1+?) client protocol |
||||||
|
[section Overview] |
||||||
|
[para] overview of punk::imap4 |
||||||
|
[subsection Concepts] |
||||||
|
[para] - |
||||||
|
[subsection dependencies] |
||||||
|
[para] packages used by punk::imap4 |
||||||
|
[list_begin itemized] |
||||||
|
[item] [package {Tcl 8.6.2-}] |
||||||
|
[item] [package {punk::args}] |
||||||
|
[item] [package {punk::lib}] |
||||||
|
[list_end] |
||||||
|
[section API] |
||||||
|
[subsection {Namespace punk::imap4}] |
||||||
|
[para] Core API functions for punk::imap4 |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace punk::imap4 ---}] |
||||||
|
[subsection {Namespace punk::imap4::lib}] |
||||||
|
[para] Secondary functions that are part of the API |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace punk::imap4::lib ---}] |
||||||
|
[manpage_end] |
||||||
@ -0,0 +1,194 @@ |
|||||||
|
[comment {--- punk::docgen generated from inline doctools comments ---}] |
||||||
|
[comment {--- punk::docgen DO NOT EDIT DOCS HERE UNLESS YOU REMOVE THESE COMMENT LINES ---}] |
||||||
|
[comment {--- punk::docgen overwrites this file ---}] |
||||||
|
[manpage_begin punkshell_module_punk::lib 0 0.1.2] |
||||||
|
[copyright "2024"] |
||||||
|
[titledesc {punk general utility functions}] [comment {-- Name section and table of contents description --}] |
||||||
|
[moddesc {punk library}] [comment {-- Description at end of page heading --}] |
||||||
|
[require punk::lib] |
||||||
|
[keywords module utility lib] |
||||||
|
[description] |
||||||
|
[para]This is a set of utility functions that are commonly used across punk modules or are just considered to be general-purpose functions. |
||||||
|
[para]The base set includes string and math functions but has no specific theme |
||||||
|
[section Overview] |
||||||
|
[para] overview of punk::lib |
||||||
|
[subsection Concepts] |
||||||
|
[para]The punk::lib modules should have no strong dependencies other than Tcl |
||||||
|
[para]Dependendencies that only affect display or additional functionality may be included - but should fail gracefully if not present, and only when a function is called that uses one of these soft dependencies. |
||||||
|
[para]This requirement for no strong dependencies, means that many utility functions that might otherwise seem worthy of inclusion here are not present. |
||||||
|
[subsection dependencies] |
||||||
|
[para] packages used by punk::lib |
||||||
|
[list_begin itemized] |
||||||
|
[item] [package {Tcl 8.6-}] |
||||||
|
[item] [package {punk::args}] |
||||||
|
[list_end] |
||||||
|
[section API] |
||||||
|
[subsection {Namespace punk::lib::compat}] |
||||||
|
[para] compatibility functions for features that may not be available in earlier Tcl versions |
||||||
|
[para] These are generally 'forward compatibility' functions ie allowing earlier versions to use later features/idioms by using a Tcl-only version of a missing builtin. |
||||||
|
[para] Such Tcl-only versions will inevitably be less performant - perhaps significantly so. |
||||||
|
[list_begin definitions] |
||||||
|
[call [fun lremove] [arg list] [opt {index ...}]] |
||||||
|
[para] Forwards compatible lremove for versions 8.6 or less to support equivalent 8.7 lremove |
||||||
|
[call [fun lpop] [arg listvar] [opt {index}]] |
||||||
|
[para] Forwards compatible lpop for versions 8.6 or less to support equivalent 8.7 lpop |
||||||
|
[list_end] [comment {--- end definitions namespace punk::lib::compat ---}] |
||||||
|
[subsection {Namespace punk::lib}] |
||||||
|
[para] Core API functions for punk::lib |
||||||
|
[list_begin definitions] |
||||||
|
[call [fun invoke] [arg command]] |
||||||
|
[para]Invoke an external command (using tcl open command) capturing stdout,stderr and the exitcode |
||||||
|
[example { |
||||||
|
set script { |
||||||
|
puts stdout {hello on stdout} |
||||||
|
puts stderr {hello on stderr} |
||||||
|
exit 42 |
||||||
|
} |
||||||
|
invoke [list tclsh <<$script] |
||||||
|
}] |
||||||
|
[call [fun lindex_resolve] [arg len] [arg index]] |
||||||
|
[para]Resolve an index which may be of the forms accepted by Tcl list commands such as end-2 or 2+2 to the actual integer index for the supplied list/string length |
||||||
|
[para]Users may define procs which accept a list/string index and wish to accept the forms understood by Tcl. |
||||||
|
[para]This means the proc may be called with something like $x+2 end-$y etc |
||||||
|
[para]Sometimes the actual integer index is desired. |
||||||
|
[para]We want to resolve the index used, without passing arbitrary expressions into the 'expr' function - which could have security risks. |
||||||
|
[para]lindex_resolve will parse the index expression and return: |
||||||
|
[para] a) -3 if the supplied index expression is below the lower bound for the supplied list. (< 0) |
||||||
|
[para] b) -2 if the supplied index expression is above the upper bound for the supplied list. (> end) |
||||||
|
[para] We don't return -1 - as the similar function lindex_resolve_basic uses this to denote out of range at either end of the list/string |
||||||
|
[para]Otherwise it will return an integer corresponding to the position in the list. |
||||||
|
[para]This is in stark contrast to Tcl list function indices which will return empty strings for out of bounds indices, or in the case of lrange, return results anyway. |
||||||
|
[para]Like Tcl list commands - it will produce an error if the form of the index is not acceptable |
||||||
|
[para]For empty lists, end and end+x indices are considered to be out of bounds on the upper side - thus returning -2 |
||||||
|
[call [fun lindex_resolve_basic] [arg len] [arg index]] |
||||||
|
[para] Accepts index of the forms accepted by Tcl's list commands. (e.g compound indices such as 3+1 end-2) |
||||||
|
[para] returns -1 for out of range at either end, or a valid integer index |
||||||
|
[para] Unlike lindex_resolve; lindex_resolve_basic can't determine if an out of range index was out of range at the lower or upper bound |
||||||
|
[para] This is only likely to be faster than average over lindex_resolve for small lists and for Tcl which has the builtin lseq command |
||||||
|
[para] The performance advantage is more likely to be present when using compound indexes such as $x+1 or end-1 |
||||||
|
[para] For pure integer indices the performance should be equivalent |
||||||
|
[call [fun K] [arg x] [arg y]] |
||||||
|
[para]The K-combinator function - returns the first argument, x and discards y |
||||||
|
[para]see [uri https://wiki.tcl-lang.org/page/K] |
||||||
|
[para]It is used in cases where command-substitution at the calling-point performs some desired effect. |
||||||
|
[call [fun is_utf8_multibyteprefix] [arg str]] |
||||||
|
[para] Returns a boolean if str is potentially a prefix for a multibyte utf-8 character |
||||||
|
[para] ie - tests if it is possible that appending more data will result in a utf-8 codepoint |
||||||
|
[para] Will return false for an already complete utf-8 codepoint |
||||||
|
[para] It is assumed the incomplete sequence is at the beginning of the bytes argument |
||||||
|
[para] Suitable input for this might be from the unreturned tail portion of get_utf8_leading $testbytes |
||||||
|
[para] e.g using: set head [lb]get_utf8_leading $testbytes[rb] ; set tail [lb]string range $testbytes [lb]string length $head[rb] end[rb] |
||||||
|
[call [fun is_utf8_single] [arg 1234bytes]] |
||||||
|
[para] Tests input of 1,2,3 or 4 bytes and responds with a boolean indicating if it is a valid utf-8 character (codepoint) |
||||||
|
[call [fun get_utf8_leading] [arg rawbytes]] |
||||||
|
[para] return the leading portion of rawbytes that is a valid utf8 sequence. |
||||||
|
[para] This will stop at the point at which the bytes can't be interpreted as a complete utf-8 codepoint |
||||||
|
[para] e.g It will not return the first byte or 2 of a 3-byte utf-8 character if the last byte is missing, and will return only the valid utf-8 string from before the first byte of the incomplete character. |
||||||
|
[para] It will also only return the prefix before any bytes that cannot be part of a utf-8 sequence at all. |
||||||
|
[para] Note that while this will return valid utf8 - it has no knowledge of grapheme clusters or diacritics |
||||||
|
[para] This means if it is being used to process bytes split at some arbitrary point - the trailing data that isn't returned could be part of a grapheme cluster that belongs with the last character of the leading string already returned |
||||||
|
[para] The utf-8 BOM \xEF\xBB\xBF is a valid UTF8 3-byte sequence and so can also be returned as part of the leading utf8 bytes |
||||||
|
[call [fun hex2dec] [opt {option value...}] [arg list_largeHex]] |
||||||
|
[para]Convert a list of (possibly large) unprefixed hex strings to their decimal values |
||||||
|
[para]hex2dec accepts and ignores internal underscores in the same manner as Tcl 8.7+ numbers e.g hex2dec FF_FF returns 65535 |
||||||
|
[para]Leading and trailing underscores are ignored as a matter of implementation convenience - but this shouldn't be relied upon. |
||||||
|
[para]Leading or trailing whitespace in each list member is allowed e.g hex2dec " F" returns 15 |
||||||
|
[para]Internal whitespace e.g "F F" is not permitted - but a completely empty element "" is allowed and will return 0 |
||||||
|
[call [fun dex2hex] [opt {option value...}] [arg list_decimals]] |
||||||
|
[para]Convert a list of decimal integers to a list of hex values |
||||||
|
[para] -width <int> can be used to make each hex value at least int characters wide, with leading zeroes. |
||||||
|
[para] -case upper|lower determines the case of the hex letters in the output |
||||||
|
[call [fun log2] [arg x]] |
||||||
|
[para]log base2 of x |
||||||
|
[para]This uses a 'live' proc body - the divisor for the change of base is computed once at definition time |
||||||
|
[para](courtesy of RS [uri https://wiki.tcl-lang.org/page/Additional+math+functions]) |
||||||
|
[call [fun logbase] [arg b] [arg x]] |
||||||
|
[para]log base b of x |
||||||
|
[para]This function uses expr's natural log and the change of base division. |
||||||
|
[para]This means for example that we can get results like: logbase 10 1000 = 2.9999999999999996 |
||||||
|
[para]Use expr's log10() function or tcl::mathfunc::log10 for base 10 |
||||||
|
[call [fun factors] [arg x]] |
||||||
|
[para]Return a sorted list of the positive factors of x where x > 0 |
||||||
|
[para]For x = 0 we return only 0 and 1 as technically any number divides zero and there are an infinite number of factors. (including zero itself in this context)* |
||||||
|
[para]This is a simple brute-force implementation that iterates all numbers below the square root of x to check the factors |
||||||
|
[para]Because the implementation is so simple - the performance is very reasonable for numbers below at least a few 10's of millions |
||||||
|
[para]See tcllib math::numtheory::factors for a more complex implementation - which seems to be slower for 'small' numbers |
||||||
|
[para]Comparisons were done with some numbers below 17 digits long |
||||||
|
[para]For seriously big numbers - this simple algorithm would no doubt be outperformed by more complex algorithms. |
||||||
|
[para]The numtheory library stores some data about primes etc with each call - so may become faster when being used on more numbers |
||||||
|
but has the disadvantage of being slower for 'small' numbers and using more memory. |
||||||
|
[para]If the largest factor below x is needed - the greatestOddFactorBelow and GreatestFactorBelow functions are a faster way to get there than computing the whole list, even for small values of x |
||||||
|
[para]* Taking x=0; Notion of x being divisible by integer y being: There exists an integer p such that x = py |
||||||
|
[para] In other mathematical contexts zero may be considered not to divide anything. |
||||||
|
[call [fun oddFactors] [arg x]] |
||||||
|
[para]Return a list of odd integer factors of x, sorted in ascending order |
||||||
|
[call [fun greatestFactorBelow] [arg x]] |
||||||
|
[para]Return the largest factor of x excluding itself |
||||||
|
[para]factor functions can be useful for console layout calculations |
||||||
|
[para]See Tcllib math::numtheory for more extensive implementations |
||||||
|
[call [fun greatestOddFactorBelow] [arg x]] |
||||||
|
[para]Return the largest odd integer factor of x excluding x itself |
||||||
|
[call [fun greatestOddFactor] [arg x]] |
||||||
|
[para]Return the largest odd integer factor of x |
||||||
|
[para]For an odd value of x - this will always return x |
||||||
|
[call [fun gcd] [arg n] [arg m]] |
||||||
|
[para]Return the greatest common divisor of m and n |
||||||
|
[para]Straight from Lars Hellström's math::numtheory library in Tcllib |
||||||
|
[para]Graphical use: |
||||||
|
[para]An a by b rectangle can be covered with square tiles of side-length c, |
||||||
|
[para]only if c is a common divisor of a and b |
||||||
|
[call [fun gcd] [arg n] [arg m]] |
||||||
|
[para]Return the lowest common multiple of m and n |
||||||
|
[para]Straight from Lars Hellström's math::numtheory library in Tcllib |
||||||
|
[para] |
||||||
|
[call [fun commonDivisors] [arg x] [arg y]] |
||||||
|
[para]Return a list of all the common factors of x and y |
||||||
|
[para](equivalent to factors of their gcd) |
||||||
|
[call [fun hasglobs] [arg str]] |
||||||
|
[para]Return a boolean indicating whether str contains any of the glob characters: * ? [lb] [rb] |
||||||
|
[para]hasglobs uses append to preserve Tcls internal representation for str - so it should help avoid shimmering in the few cases where this may matter. |
||||||
|
[call [fun trimzero] [arg number]] |
||||||
|
[para]Return number with left-hand-side zeros trimmed off - unless all zero |
||||||
|
[para]If number is all zero - a single 0 is returned |
||||||
|
[call [fun substring_count] [arg str] [arg substring]] |
||||||
|
[para]Search str and return number of occurrences of substring |
||||||
|
[call [fun dict_merge_ordered] [arg defaults] [arg main]] |
||||||
|
[para]The standard dict merge accepts multiple dicts with values from dicts to the right (2nd argument) taking precedence. |
||||||
|
[para]When merging with a dict of default values - this means that any default key/vals that weren't in the main dict appear in the output before the main data. |
||||||
|
[para]This function merges the two dicts whilst maintaining the key order of main followed by defaults. |
||||||
|
[call [fun askuser] [arg question]] |
||||||
|
[para]A basic utility to read an answer from stdin |
||||||
|
[para]The prompt is written to the terminal and then it waits for a user to type something |
||||||
|
[para]stdin is temporarily configured to blocking and then put back in its original state in case it wasn't already so. |
||||||
|
[para]If the terminal is using punk::console and is in raw mode - the terminal will temporarily be put in line mode. |
||||||
|
[para](Generic terminal raw vs linemode detection not yet present) |
||||||
|
[para]The user must hit enter to submit the response |
||||||
|
[para]The return value is the string if any that was typed prior to hitting enter. |
||||||
|
[para]The question argument can be manually colourised using the various punk::ansi funcitons |
||||||
|
[example_begin] |
||||||
|
set answer [lb]punk::lib::askuser "[lb]a+ green bold[rb]Do you want to proceed? (Y|N)[lb]a[rb]"[rb] |
||||||
|
if {[lb]string match y* [lb]string tolower $answer[rb][rb]} { |
||||||
|
puts "Proceeding" |
||||||
|
} else { |
||||||
|
puts "Cancelled by user" |
||||||
|
} |
||||||
|
[example_end] |
||||||
|
[call [fun linesort] [opt {sortoption ?val?...}] [arg textblock]] |
||||||
|
[para]Sort lines in textblock |
||||||
|
[para]Returns another textblock with lines sorted |
||||||
|
[para]options are flags as accepted by lsort ie -ascii -command -decreasing -dictionary -index -indices -integer -nocase -real -stride -unique |
||||||
|
[call [fun list_as_lines] [opt {-joinchar char}] [arg linelist]] |
||||||
|
[para]This simply joins the elements of the list with -joinchar |
||||||
|
[para]It is mainly intended for use in pipelines where the primary argument comes at the end - but it can also be used as a general replacement for join $lines <le> |
||||||
|
[para]The sister function lines_as_list takes a block of text and splits it into lines - but with more options related to trimming the block and/or each line. |
||||||
|
[call [fun lines_as_list] [opt {option value ...}] [arg text]] |
||||||
|
[para]Returns a list of possibly trimmed lines depeding on options |
||||||
|
[para]The concept of lines is raw lines from splitting on newline after crlf is mapped to lf |
||||||
|
[para]- not console lines which may be entirely different due to control characters such as vertical tabs or ANSI movements |
||||||
|
[list_end] [comment {--- end definitions namespace punk::lib ---}] |
||||||
|
[section Internal] |
||||||
|
[subsection {Namespace punk::lib::system}] |
||||||
|
[para] Internal functions that are not part of the API |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace punk::lib::system ---}] |
||||||
|
[manpage_end] |
||||||
@ -0,0 +1,26 @@ |
|||||||
|
[comment {--- punk::docgen generated from inline doctools comments ---}] |
||||||
|
[comment {--- punk::docgen DO NOT EDIT DOCS HERE UNLESS YOU REMOVE THESE COMMENT LINES ---}] |
||||||
|
[comment {--- punk::docgen overwrites this file ---}] |
||||||
|
[manpage_begin shellspy_module_punk::libunknown 0 0.1] |
||||||
|
[copyright "2025"] |
||||||
|
[titledesc {Module API}] [comment {-- Name section and table of contents description --}] |
||||||
|
[moddesc {-}] [comment {-- Description at end of page heading --}] |
||||||
|
[require punk::libunknown] |
||||||
|
[keywords module] |
||||||
|
[description] |
||||||
|
[para] - |
||||||
|
[section Overview] |
||||||
|
[para] overview of punk::libunknown |
||||||
|
[subsection Concepts] |
||||||
|
[para] - |
||||||
|
[subsection dependencies] |
||||||
|
[para] packages used by punk::libunknown |
||||||
|
[list_begin itemized] |
||||||
|
[item] [package {Tcl 8.6}] |
||||||
|
[list_end] |
||||||
|
[section API] |
||||||
|
[subsection {Namespace punk::libunknown}] |
||||||
|
[para] Core API functions for punk::libunknown |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace punk::libunknown ---}] |
||||||
|
[manpage_end] |
||||||
@ -0,0 +1,43 @@ |
|||||||
|
[comment {--- punk::docgen generated from inline doctools comments ---}] |
||||||
|
[comment {--- punk::docgen DO NOT EDIT DOCS HERE UNLESS YOU REMOVE THESE COMMENT LINES ---}] |
||||||
|
[comment {--- punk::docgen overwrites this file ---}] |
||||||
|
[manpage_begin shellspy_module_punk::netbox 0 0.1.0] |
||||||
|
[copyright "2025"] |
||||||
|
[titledesc {Module API}] [comment {-- Name section and table of contents description --}] |
||||||
|
[moddesc {-}] [comment {-- Description at end of page heading --}] |
||||||
|
[require punk::netbox] |
||||||
|
[keywords module] |
||||||
|
[description] |
||||||
|
[para] - |
||||||
|
[section Overview] |
||||||
|
[para] overview of punk::netbox |
||||||
|
[subsection Concepts] |
||||||
|
[para] - |
||||||
|
[subsection dependencies] |
||||||
|
[para] packages used by punk::netbox |
||||||
|
[list_begin itemized] |
||||||
|
[item] [package {Tcl 8.6}] |
||||||
|
[item] [package {http}] |
||||||
|
[list_end] |
||||||
|
[section API] |
||||||
|
[subsection {Namespace punk::netbox::class}] |
||||||
|
[para] class definitions |
||||||
|
if {[tcl::info::commands [tcl::namespace::current]::interface_sample1] eq ""} { |
||||||
|
*** !doctools |
||||||
|
[list_begin enumerated] |
||||||
|
[list_end] [comment {--- end class enumeration ---}] |
||||||
|
} |
||||||
|
} |
||||||
|
++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ |
||||||
|
[section Internal] |
||||||
|
[subsection {Namespace punk::netbox::system}] |
||||||
|
[para] Internal functions that are not part of the API |
||||||
|
[subsection {Namespace punk::netbox}] |
||||||
|
[para] Core API functions for punk::netbox |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace punk::netbox ---}] |
||||||
|
[subsection {Namespace punk::netbox::lib}] |
||||||
|
[para] Secondary functions that are part of the API |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace punk::netbox::lib ---}] |
||||||
|
[manpage_end] |
||||||
@ -0,0 +1,44 @@ |
|||||||
|
[comment {--- punk::docgen generated from inline doctools comments ---}] |
||||||
|
[comment {--- punk::docgen DO NOT EDIT DOCS HERE UNLESS YOU REMOVE THESE COMMENT LINES ---}] |
||||||
|
[comment {--- punk::docgen overwrites this file ---}] |
||||||
|
[manpage_begin shellspy_module_punk::pcon 0 1.0] |
||||||
|
[copyright "2025"] |
||||||
|
[titledesc {Module API}] [comment {-- Name section and table of contents description --}] |
||||||
|
[moddesc {-}] [comment {-- Description at end of page heading --}] |
||||||
|
[require punk::pcon] |
||||||
|
[keywords module] |
||||||
|
[description] |
||||||
|
[para] - |
||||||
|
[section Overview] |
||||||
|
[para] overview of punk::pcon |
||||||
|
[subsection Concepts] |
||||||
|
[para] - |
||||||
|
[subsection dependencies] |
||||||
|
[para] packages used by punk::pcon |
||||||
|
[list_begin itemized] |
||||||
|
[item] [package {Tcl 8.6}] |
||||||
|
[list_end] |
||||||
|
[section API] |
||||||
|
[subsection {Namespace punk::pcon::class}] |
||||||
|
[para] class definitions |
||||||
|
if {[tcl::info::commands [tcl::namespace::current]::interface_sample1] eq ""} { |
||||||
|
*** !doctools |
||||||
|
[list_begin enumerated] |
||||||
|
[list_end] [comment {--- end class enumeration ---}] |
||||||
|
} |
||||||
|
} |
||||||
|
++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ |
||||||
|
[subsection {Namespace punk::pcon}] |
||||||
|
[para] Core API functions for punk::pcon |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace punk::pcon ---}] |
||||||
|
[subsection {Namespace punk::pcon::lib}] |
||||||
|
[para] Secondary functions that are part of the API |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace punk::pcon::lib ---}] |
||||||
|
[section Internal] |
||||||
|
tcl::namespace::eval punk::pcon::system { |
||||||
|
*** !doctools |
||||||
|
[subsection {Namespace punk::pcon::system}] |
||||||
|
[para] Internal functions that are not part of the API |
||||||
|
[manpage_end] |
||||||
@ -0,0 +1,44 @@ |
|||||||
|
[comment {--- punk::docgen generated from inline doctools comments ---}] |
||||||
|
[comment {--- punk::docgen DO NOT EDIT DOCS HERE UNLESS YOU REMOVE THESE COMMENT LINES ---}] |
||||||
|
[comment {--- punk::docgen overwrites this file ---}] |
||||||
|
[manpage_begin shellspy_module_punk::pipe 0 1.0] |
||||||
|
[copyright "2025"] |
||||||
|
[titledesc {Module API}] [comment {-- Name section and table of contents description --}] |
||||||
|
[moddesc {-}] [comment {-- Description at end of page heading --}] |
||||||
|
[require punk::pipe] |
||||||
|
[keywords module] |
||||||
|
[description] |
||||||
|
[para] - |
||||||
|
[section Overview] |
||||||
|
[para] overview of punk::pipe |
||||||
|
[subsection Concepts] |
||||||
|
[para] - |
||||||
|
[subsection dependencies] |
||||||
|
[para] packages used by punk::pipe |
||||||
|
[list_begin itemized] |
||||||
|
[item] [package {Tcl 8.6}] |
||||||
|
[list_end] |
||||||
|
[section API] |
||||||
|
[subsection {Namespace punk::pipe::class}] |
||||||
|
[para] class definitions |
||||||
|
if {[tcl::info::commands [tcl::namespace::current]::interface_sample1] eq ""} { |
||||||
|
*** !doctools |
||||||
|
[list_begin enumerated] |
||||||
|
[list_end] [comment {--- end class enumeration ---}] |
||||||
|
} |
||||||
|
} |
||||||
|
++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ |
||||||
|
[subsection {Namespace punk::pipe}] |
||||||
|
[para] Core API functions for punk::pipe |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace punk::pipe ---}] |
||||||
|
[subsection {Namespace punk::pipe::lib}] |
||||||
|
[para] Secondary functions that are part of the API |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace punk::pipe::lib ---}] |
||||||
|
[section Internal] |
||||||
|
tcl::namespace::eval punk::pipe::system { |
||||||
|
*** !doctools |
||||||
|
[subsection {Namespace punk::pipe::system}] |
||||||
|
[para] Internal functions that are not part of the API |
||||||
|
[manpage_end] |
||||||
@ -0,0 +1,44 @@ |
|||||||
|
[comment {--- punk::docgen generated from inline doctools comments ---}] |
||||||
|
[comment {--- punk::docgen DO NOT EDIT DOCS HERE UNLESS YOU REMOVE THESE COMMENT LINES ---}] |
||||||
|
[comment {--- punk::docgen overwrites this file ---}] |
||||||
|
[manpage_begin shellspy_module_punk::winshell 0 0.1.0] |
||||||
|
[copyright "2025"] |
||||||
|
[titledesc {Module API}] [comment {-- Name section and table of contents description --}] |
||||||
|
[moddesc {-}] [comment {-- Description at end of page heading --}] |
||||||
|
[require punk::winshell] |
||||||
|
[keywords module] |
||||||
|
[description] |
||||||
|
[para] - |
||||||
|
[section Overview] |
||||||
|
[para] overview of punk::winshell |
||||||
|
[subsection Concepts] |
||||||
|
[para] - |
||||||
|
[subsection dependencies] |
||||||
|
[para] packages used by punk::winshell |
||||||
|
[list_begin itemized] |
||||||
|
[item] [package {Tcl 8.6}] |
||||||
|
[list_end] |
||||||
|
[section API] |
||||||
|
[subsection {Namespace punk::winshell::class}] |
||||||
|
[para] class definitions |
||||||
|
if {[tcl::info::commands [tcl::namespace::current]::interface_sample1] eq ""} { |
||||||
|
*** !doctools |
||||||
|
[list_begin enumerated] |
||||||
|
[list_end] [comment {--- end class enumeration ---}] |
||||||
|
} |
||||||
|
} |
||||||
|
++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ |
||||||
|
[subsection {Namespace punk::winshell}] |
||||||
|
[para] Core API functions for punk::winshell |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace punk::winshell ---}] |
||||||
|
[subsection {Namespace punk::winshell::lib}] |
||||||
|
[para] Secondary functions that are part of the API |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace punk::winshell::lib ---}] |
||||||
|
[section Internal] |
||||||
|
tcl::namespace::eval punk::winshell::system { |
||||||
|
*** !doctools |
||||||
|
[subsection {Namespace punk::winshell::system}] |
||||||
|
[para] Internal functions that are not part of the API |
||||||
|
[manpage_end] |
||||||
@ -1,67 +0,0 @@ |
|||||||
[comment {--- punk::docgen generated from inline doctools comments ---}] |
|
||||||
[comment {--- punk::docgen DO NOT EDIT DOCS HERE UNLESS YOU REMOVE THESE COMMENT LINES ---}] |
|
||||||
[comment {--- punk::docgen overwrites this file ---}] |
|
||||||
[manpage_begin shellspy_module_punk::zip 0 0.1.0] |
|
||||||
[copyright "2024"] |
|
||||||
[titledesc {Module API}] [comment {-- Name section and table of contents description --}] |
|
||||||
[moddesc {-}] [comment {-- Description at end of page heading --}] |
|
||||||
[require punk::zip] |
|
||||||
[keywords module] |
|
||||||
[description] |
|
||||||
[para] - |
|
||||||
[section Overview] |
|
||||||
[para] overview of punk::zip |
|
||||||
[subsection Concepts] |
|
||||||
[para] - |
|
||||||
[subsection dependencies] |
|
||||||
[para] packages used by punk::zip |
|
||||||
[list_begin itemized] |
|
||||||
[item] [package {Tcl 8.6}] |
|
||||||
[item] [package {punk::args}] |
|
||||||
[list_end] |
|
||||||
[section API] |
|
||||||
[subsection {Namespace punk::zip::class}] |
|
||||||
[para] class definitions |
|
||||||
if {[tcl::info::commands [tcl::namespace::current]::interface_sample1] eq ""} { |
|
||||||
[list_begin enumerated] |
|
||||||
[list_end] [comment {--- end class enumeration ---}] |
|
||||||
} |
|
||||||
} |
|
||||||
++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ |
|
||||||
[subsection {Namespace punk::zip}] |
|
||||||
[para] Core API functions for punk::zip |
|
||||||
[list_begin definitions] |
|
||||||
[call [fun Timet_to_dos] [arg time_t]] |
|
||||||
[para] convert a unix timestamp into a DOS timestamp for ZIP times. |
|
||||||
[example { |
|
||||||
DOS timestamps are 32 bits split into bit regions as follows: |
|
||||||
24 16 8 0 |
|
||||||
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ |
|
||||||
|Y|Y|Y|Y|Y|Y|Y|m| |m|m|m|d|d|d|d|d| |h|h|h|h|h|m|m|m| |m|m|m|s|s|s|s|s| |
|
||||||
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ |
|
||||||
}] |
|
||||||
[call [fun walk] [arg ?options?] [arg base]] |
|
||||||
[para] Walk a directory tree rooted at base |
|
||||||
[para] the -excludes list can be a set of glob expressions to match against files and avoid |
|
||||||
[para] e.g |
|
||||||
[example { |
|
||||||
punk::zip::walk -exclude {CVS/* *~.#*} library |
|
||||||
}] |
|
||||||
[call [fun Mkzipfile] [arg zipchan] [arg base] [arg path] [arg ?comment?]] |
|
||||||
[para] Add a single file to a zip archive |
|
||||||
[para] The zipchan channel should already be open and binary. |
|
||||||
[para] You can provide a -comment for the file. |
|
||||||
[para] The return value is the central directory record that will need to be used when finalizing the zip archive. |
|
||||||
[call [fun mkzip] [arg ?options?] [arg filename]] |
|
||||||
[para] Create a zip archive in 'filename' |
|
||||||
[para] If a file already exists, an error will be raised. |
|
||||||
[list_end] [comment {--- end definitions namespace punk::zip ---}] |
|
||||||
[subsection {Namespace punk::zip::lib}] |
|
||||||
[para] Secondary functions that are part of the API |
|
||||||
[list_begin definitions] |
|
||||||
[list_end] [comment {--- end definitions namespace punk::zip::lib ---}] |
|
||||||
[section Internal] |
|
||||||
tcl::namespace::eval punk::zip::system { |
|
||||||
[subsection {Namespace punk::zip::system}] |
|
||||||
[para] Internal functions that are not part of the API |
|
||||||
[manpage_end] |
|
||||||
@ -0,0 +1,30 @@ |
|||||||
|
[comment {--- punk::docgen generated from inline doctools comments ---}] |
||||||
|
[comment {--- punk::docgen DO NOT EDIT DOCS HERE UNLESS YOU REMOVE THESE COMMENT LINES ---}] |
||||||
|
[comment {--- punk::docgen overwrites this file ---}] |
||||||
|
[manpage_begin shellspy_module_::punk::ansi::colourmap 0 0.1.0] |
||||||
|
[copyright "2025"] |
||||||
|
[titledesc {Module API}] [comment {-- Name section and table of contents description --}] |
||||||
|
[moddesc {-}] [comment {-- Description at end of page heading --}] |
||||||
|
[require ::punk::ansi::colourmap] |
||||||
|
[keywords module] |
||||||
|
[description] |
||||||
|
[para] - |
||||||
|
[section Overview] |
||||||
|
[para] overview of ::punk::ansi::colourmap |
||||||
|
[subsection Concepts] |
||||||
|
[para] - |
||||||
|
[subsection dependencies] |
||||||
|
[para] packages used by ::punk::ansi::colourmap |
||||||
|
[list_begin itemized] |
||||||
|
[item] [package {Tcl 8.6}] |
||||||
|
[list_end] |
||||||
|
[section API] |
||||||
|
[subsection {Namespace ::punk::ansi::colourmap}] |
||||||
|
[para] Core API functions for ::punk::ansi::colourmap |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace ::punk::ansi::colourmap ---}] |
||||||
|
[subsection {Namespace ::punk::ansi::colourmap::lib}] |
||||||
|
[para] Secondary functions that are part of the API |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace ::punk::ansi::colourmap::lib ---}] |
||||||
|
[manpage_end] |
||||||
@ -0,0 +1,37 @@ |
|||||||
|
[comment {--- punk::docgen generated from inline doctools comments ---}] |
||||||
|
[comment {--- punk::docgen DO NOT EDIT DOCS HERE UNLESS YOU REMOVE THESE COMMENT LINES ---}] |
||||||
|
[comment {--- punk::docgen overwrites this file ---}] |
||||||
|
[manpage_begin shellspy_module_punk::args::tkcore 0 0.1.0] |
||||||
|
[copyright "2025"] |
||||||
|
[titledesc {Module API}] [comment {-- Name section and table of contents description --}] |
||||||
|
[moddesc {-}] [comment {-- Description at end of page heading --}] |
||||||
|
[require punk::args::tkcore] |
||||||
|
[keywords module] |
||||||
|
[description] |
||||||
|
[para] - |
||||||
|
[section Overview] |
||||||
|
[para] overview of punk::args::tkcore |
||||||
|
[subsection Concepts] |
||||||
|
[para] - |
||||||
|
[subsection dependencies] |
||||||
|
[para] packages used by punk::args::tkcore |
||||||
|
[list_begin itemized] |
||||||
|
[item] [package {Tcl 8.6}] |
||||||
|
[item] [package {punk::args}] |
||||||
|
[item] [package {textblock}] |
||||||
|
[list_end] |
||||||
|
[section API] |
||||||
|
[subsection {Namespace punk::args::tkcore}] |
||||||
|
[para] Core API functions for punk::args::tkcore |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace punk::args::tkcore ---}] |
||||||
|
[subsection {Namespace punk::args::tkcore::lib}] |
||||||
|
[para] Secondary functions that are part of the API |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace punk::args::tkcore::lib ---}] |
||||||
|
[section Internal] |
||||||
|
tcl::namespace::eval punk::args::tkcore::system { |
||||||
|
*** !doctools |
||||||
|
[subsection {Namespace punk::args::tkcore::system}] |
||||||
|
[para] Internal functions that are not part of the API |
||||||
|
[manpage_end] |
||||||
@ -0,0 +1,26 @@ |
|||||||
|
[comment {--- punk::docgen generated from inline doctools comments ---}] |
||||||
|
[comment {--- punk::docgen DO NOT EDIT DOCS HERE UNLESS YOU REMOVE THESE COMMENT LINES ---}] |
||||||
|
[comment {--- punk::docgen overwrites this file ---}] |
||||||
|
[manpage_begin shellspy_module_punk::args::tzint 0 1.1.1] |
||||||
|
[copyright "2025"] |
||||||
|
[titledesc {Module API}] [comment {-- Name section and table of contents description --}] |
||||||
|
[moddesc {-}] [comment {-- Description at end of page heading --}] |
||||||
|
[require punk::args::tzint] |
||||||
|
[keywords module] |
||||||
|
[description] |
||||||
|
[para] - |
||||||
|
[section Overview] |
||||||
|
[para] overview of punk::args::tzint |
||||||
|
[subsection Concepts] |
||||||
|
[para] - |
||||||
|
[subsection dependencies] |
||||||
|
[para] packages used by punk::args::tzint |
||||||
|
[list_begin itemized] |
||||||
|
[item] [package {Tcl 8.6}] |
||||||
|
[list_end] |
||||||
|
[section API] |
||||||
|
[subsection {Namespace punk::args::tzint}] |
||||||
|
[para] Core API functions for punk::args::tzint |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace punk::args::tzint ---}] |
||||||
|
[manpage_end] |
||||||
@ -0,0 +1,45 @@ |
|||||||
|
[comment {--- punk::docgen generated from inline doctools comments ---}] |
||||||
|
[comment {--- punk::docgen DO NOT EDIT DOCS HERE UNLESS YOU REMOVE THESE COMMENT LINES ---}] |
||||||
|
[comment {--- punk::docgen overwrites this file ---}] |
||||||
|
[manpage_begin shellspy_module_punk::netbox::man 0 0.1.0] |
||||||
|
[copyright "2025"] |
||||||
|
[titledesc {Module API}] [comment {-- Name section and table of contents description --}] |
||||||
|
[moddesc {-}] [comment {-- Description at end of page heading --}] |
||||||
|
[require punk::netbox::man] |
||||||
|
[keywords module] |
||||||
|
[description] |
||||||
|
[para] - |
||||||
|
[section Overview] |
||||||
|
[para] overview of punk::netbox::man |
||||||
|
[subsection Concepts] |
||||||
|
[para] - |
||||||
|
[subsection dependencies] |
||||||
|
[para] packages used by punk::netbox::man |
||||||
|
[list_begin itemized] |
||||||
|
[item] [package {Tcl 8.6}] |
||||||
|
[item] [package {punk::netbox}] |
||||||
|
[list_end] |
||||||
|
[section API] |
||||||
|
[subsection {Namespace punk::netbox::man::class}] |
||||||
|
[para] class definitions |
||||||
|
if {[tcl::info::commands [tcl::namespace::current]::interface_sample1] eq ""} { |
||||||
|
*** !doctools |
||||||
|
[list_begin enumerated] |
||||||
|
[list_end] [comment {--- end class enumeration ---}] |
||||||
|
} |
||||||
|
} |
||||||
|
++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ |
||||||
|
[subsection {Namespace punk::netbox::man}] |
||||||
|
[para] Core API functions for punk::netbox::man |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace punk::netbox::man ---}] |
||||||
|
[subsection {Namespace punk::netbox::man::lib}] |
||||||
|
[para] Secondary functions that are part of the API |
||||||
|
[list_begin definitions] |
||||||
|
[list_end] [comment {--- end definitions namespace punk::netbox::man::lib ---}] |
||||||
|
[section Internal] |
||||||
|
tcl::namespace::eval punk::netbox::man::system { |
||||||
|
*** !doctools |
||||||
|
[subsection {Namespace punk::netbox::man::system}] |
||||||
|
[para] Internal functions that are not part of the API |
||||||
|
[manpage_end] |
||||||
@ -0,0 +1,354 @@ |
|||||||
|
'\" |
||||||
|
'\" Generated from file '_module_overtype-1\&.6\&.6\&.tm\&.man' by tcllib/doctools with format 'nroff' |
||||||
|
'\" Copyright (c) 2024 |
||||||
|
'\" |
||||||
|
.TH "overtype_module_overtype" 0 1\&.6\&.6 doc "overtype text layout" |
||||||
|
.\" The -*- nroff -*- definitions below are for supplemental macros used |
||||||
|
.\" in Tcl/Tk manual entries. |
||||||
|
.\" |
||||||
|
.\" .AP type name in/out ?indent? |
||||||
|
.\" Start paragraph describing an argument to a library procedure. |
||||||
|
.\" type is type of argument (int, etc.), in/out is either "in", "out", |
||||||
|
.\" or "in/out" to describe whether procedure reads or modifies arg, |
||||||
|
.\" and indent is equivalent to second arg of .IP (shouldn't ever be |
||||||
|
.\" needed; use .AS below instead) |
||||||
|
.\" |
||||||
|
.\" .AS ?type? ?name? |
||||||
|
.\" Give maximum sizes of arguments for setting tab stops. Type and |
||||||
|
.\" name are examples of largest possible arguments that will be passed |
||||||
|
.\" to .AP later. If args are omitted, default tab stops are used. |
||||||
|
.\" |
||||||
|
.\" .BS |
||||||
|
.\" Start box enclosure. From here until next .BE, everything will be |
||||||
|
.\" enclosed in one large box. |
||||||
|
.\" |
||||||
|
.\" .BE |
||||||
|
.\" End of box enclosure. |
||||||
|
.\" |
||||||
|
.\" .CS |
||||||
|
.\" Begin code excerpt. |
||||||
|
.\" |
||||||
|
.\" .CE |
||||||
|
.\" End code excerpt. |
||||||
|
.\" |
||||||
|
.\" .VS ?version? ?br? |
||||||
|
.\" Begin vertical sidebar, for use in marking newly-changed parts |
||||||
|
.\" of man pages. The first argument is ignored and used for recording |
||||||
|
.\" the version when the .VS was added, so that the sidebars can be |
||||||
|
.\" found and removed when they reach a certain age. If another argument |
||||||
|
.\" is present, then a line break is forced before starting the sidebar. |
||||||
|
.\" |
||||||
|
.\" .VE |
||||||
|
.\" End of vertical sidebar. |
||||||
|
.\" |
||||||
|
.\" .DS |
||||||
|
.\" Begin an indented unfilled display. |
||||||
|
.\" |
||||||
|
.\" .DE |
||||||
|
.\" End of indented unfilled display. |
||||||
|
.\" |
||||||
|
.\" .SO ?manpage? |
||||||
|
.\" Start of list of standard options for a Tk widget. The manpage |
||||||
|
.\" argument defines where to look up the standard options; if |
||||||
|
.\" omitted, defaults to "options". The options follow on successive |
||||||
|
.\" lines, in three columns separated by tabs. |
||||||
|
.\" |
||||||
|
.\" .SE |
||||||
|
.\" End of list of standard options for a Tk widget. |
||||||
|
.\" |
||||||
|
.\" .OP cmdName dbName dbClass |
||||||
|
.\" Start of description of a specific option. cmdName gives the |
||||||
|
.\" option's name as specified in the class command, dbName gives |
||||||
|
.\" the option's name in the option database, and dbClass gives |
||||||
|
.\" the option's class in the option database. |
||||||
|
.\" |
||||||
|
.\" .UL arg1 arg2 |
||||||
|
.\" Print arg1 underlined, then print arg2 normally. |
||||||
|
.\" |
||||||
|
.\" .QW arg1 ?arg2? |
||||||
|
.\" Print arg1 in quotes, then arg2 normally (for trailing punctuation). |
||||||
|
.\" |
||||||
|
.\" .PQ arg1 ?arg2? |
||||||
|
.\" Print an open parenthesis, arg1 in quotes, then arg2 normally |
||||||
|
.\" (for trailing punctuation) and then a closing parenthesis. |
||||||
|
.\" |
||||||
|
.\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. |
||||||
|
.if t .wh -1.3i ^B |
||||||
|
.nr ^l \n(.l |
||||||
|
.ad b |
||||||
|
.\" # Start an argument description |
||||||
|
.de AP |
||||||
|
.ie !"\\$4"" .TP \\$4 |
||||||
|
.el \{\ |
||||||
|
. ie !"\\$2"" .TP \\n()Cu |
||||||
|
. el .TP 15 |
||||||
|
.\} |
||||||
|
.ta \\n()Au \\n()Bu |
||||||
|
.ie !"\\$3"" \{\ |
||||||
|
\&\\$1 \\fI\\$2\\fP (\\$3) |
||||||
|
.\".b |
||||||
|
.\} |
||||||
|
.el \{\ |
||||||
|
.br |
||||||
|
.ie !"\\$2"" \{\ |
||||||
|
\&\\$1 \\fI\\$2\\fP |
||||||
|
.\} |
||||||
|
.el \{\ |
||||||
|
\&\\fI\\$1\\fP |
||||||
|
.\} |
||||||
|
.\} |
||||||
|
.. |
||||||
|
.\" # define tabbing values for .AP |
||||||
|
.de AS |
||||||
|
.nr )A 10n |
||||||
|
.if !"\\$1"" .nr )A \\w'\\$1'u+3n |
||||||
|
.nr )B \\n()Au+15n |
||||||
|
.\" |
||||||
|
.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n |
||||||
|
.nr )C \\n()Bu+\\w'(in/out)'u+2n |
||||||
|
.. |
||||||
|
.AS Tcl_Interp Tcl_CreateInterp in/out |
||||||
|
.\" # BS - start boxed text |
||||||
|
.\" # ^y = starting y location |
||||||
|
.\" # ^b = 1 |
||||||
|
.de BS |
||||||
|
.br |
||||||
|
.mk ^y |
||||||
|
.nr ^b 1u |
||||||
|
.if n .nf |
||||||
|
.if n .ti 0 |
||||||
|
.if n \l'\\n(.lu\(ul' |
||||||
|
.if n .fi |
||||||
|
.. |
||||||
|
.\" # BE - end boxed text (draw box now) |
||||||
|
.de BE |
||||||
|
.nf |
||||||
|
.ti 0 |
||||||
|
.mk ^t |
||||||
|
.ie n \l'\\n(^lu\(ul' |
||||||
|
.el \{\ |
||||||
|
.\" Draw four-sided box normally, but don't draw top of |
||||||
|
.\" box if the box started on an earlier page. |
||||||
|
.ie !\\n(^b-1 \{\ |
||||||
|
\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' |
||||||
|
.\} |
||||||
|
.el \}\ |
||||||
|
\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' |
||||||
|
.\} |
||||||
|
.\} |
||||||
|
.fi |
||||||
|
.br |
||||||
|
.nr ^b 0 |
||||||
|
.. |
||||||
|
.\" # VS - start vertical sidebar |
||||||
|
.\" # ^Y = starting y location |
||||||
|
.\" # ^v = 1 (for troff; for nroff this doesn't matter) |
||||||
|
.de VS |
||||||
|
.if !"\\$2"" .br |
||||||
|
.mk ^Y |
||||||
|
.ie n 'mc \s12\(br\s0 |
||||||
|
.el .nr ^v 1u |
||||||
|
.. |
||||||
|
.\" # VE - end of vertical sidebar |
||||||
|
.de VE |
||||||
|
.ie n 'mc |
||||||
|
.el \{\ |
||||||
|
.ev 2 |
||||||
|
.nf |
||||||
|
.ti 0 |
||||||
|
.mk ^t |
||||||
|
\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' |
||||||
|
.sp -1 |
||||||
|
.fi |
||||||
|
.ev |
||||||
|
.\} |
||||||
|
.nr ^v 0 |
||||||
|
.. |
||||||
|
.\" # Special macro to handle page bottom: finish off current |
||||||
|
.\" # box/sidebar if in box/sidebar mode, then invoked standard |
||||||
|
.\" # page bottom macro. |
||||||
|
.de ^B |
||||||
|
.ev 2 |
||||||
|
'ti 0 |
||||||
|
'nf |
||||||
|
.mk ^t |
||||||
|
.if \\n(^b \{\ |
||||||
|
.\" Draw three-sided box if this is the box's first page, |
||||||
|
.\" draw two sides but no top otherwise. |
||||||
|
.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c |
||||||
|
.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c |
||||||
|
.\} |
||||||
|
.if \\n(^v \{\ |
||||||
|
.nr ^x \\n(^tu+1v-\\n(^Yu |
||||||
|
\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c |
||||||
|
.\} |
||||||
|
.bp |
||||||
|
'fi |
||||||
|
.ev |
||||||
|
.if \\n(^b \{\ |
||||||
|
.mk ^y |
||||||
|
.nr ^b 2 |
||||||
|
.\} |
||||||
|
.if \\n(^v \{\ |
||||||
|
.mk ^Y |
||||||
|
.\} |
||||||
|
.. |
||||||
|
.\" # DS - begin display |
||||||
|
.de DS |
||||||
|
.RS |
||||||
|
.nf |
||||||
|
.sp |
||||||
|
.. |
||||||
|
.\" # DE - end display |
||||||
|
.de DE |
||||||
|
.fi |
||||||
|
.RE |
||||||
|
.sp |
||||||
|
.. |
||||||
|
.\" # SO - start of list of standard options |
||||||
|
.de SO |
||||||
|
'ie '\\$1'' .ds So \\fBoptions\\fR |
||||||
|
'el .ds So \\fB\\$1\\fR |
||||||
|
.SH "STANDARD OPTIONS" |
||||||
|
.LP |
||||||
|
.nf |
||||||
|
.ta 5.5c 11c |
||||||
|
.ft B |
||||||
|
.. |
||||||
|
.\" # SE - end of list of standard options |
||||||
|
.de SE |
||||||
|
.fi |
||||||
|
.ft R |
||||||
|
.LP |
||||||
|
See the \\*(So manual entry for details on the standard options. |
||||||
|
.. |
||||||
|
.\" # OP - start of full description for a single option |
||||||
|
.de OP |
||||||
|
.LP |
||||||
|
.nf |
||||||
|
.ta 4c |
||||||
|
Command-Line Name: \\fB\\$1\\fR |
||||||
|
Database Name: \\fB\\$2\\fR |
||||||
|
Database Class: \\fB\\$3\\fR |
||||||
|
.fi |
||||||
|
.IP |
||||||
|
.. |
||||||
|
.\" # CS - begin code excerpt |
||||||
|
.de CS |
||||||
|
.RS |
||||||
|
.nf |
||||||
|
.ta .25i .5i .75i 1i |
||||||
|
.. |
||||||
|
.\" # CE - end code excerpt |
||||||
|
.de CE |
||||||
|
.fi |
||||||
|
.RE |
||||||
|
.. |
||||||
|
.\" # UL - underline word |
||||||
|
.de UL |
||||||
|
\\$1\l'|0\(ul'\\$2 |
||||||
|
.. |
||||||
|
.\" # QW - apply quotation marks to word |
||||||
|
.de QW |
||||||
|
.ie '\\*(lq'"' ``\\$1''\\$2 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el \\*(lq\\$1\\*(rq\\$2 |
||||||
|
.. |
||||||
|
.\" # PQ - apply parens and quotation marks to word |
||||||
|
.de PQ |
||||||
|
.ie '\\*(lq'"' (``\\$1''\\$2)\\$3 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el (\\*(lq\\$1\\*(rq\\$2)\\$3 |
||||||
|
.. |
||||||
|
.\" # QR - quoted range |
||||||
|
.de QR |
||||||
|
.ie '\\*(lq'"' ``\\$1''\\-``\\$2''\\$3 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el \\*(lq\\$1\\*(rq\\-\\*(lq\\$2\\*(rq\\$3 |
||||||
|
.. |
||||||
|
.\" # MT - "empty" string |
||||||
|
.de MT |
||||||
|
.QW "" |
||||||
|
.. |
||||||
|
.BS |
||||||
|
.SH NAME |
||||||
|
overtype_module_overtype \- overtype text layout - ansi aware |
||||||
|
.SH SYNOPSIS |
||||||
|
package require \fBovertype\fR |
||||||
|
.sp |
||||||
|
\fBovertype::renderspace\fR \fIargs\fR |
||||||
|
.sp |
||||||
|
\fBovertype::renderline\fR \fIargs\fR |
||||||
|
.sp |
||||||
|
.BE |
||||||
|
.SH DESCRIPTION |
||||||
|
.PP |
||||||
|
- |
||||||
|
.SH OVERVIEW |
||||||
|
.PP |
||||||
|
overview of overtype |
||||||
|
.SS CONCEPTS |
||||||
|
.PP |
||||||
|
- |
||||||
|
.SS DEPENDENCIES |
||||||
|
.PP |
||||||
|
packages used by overtype |
||||||
|
.IP \(bu |
||||||
|
\fBTcl 8\&.6\fR |
||||||
|
.IP \(bu |
||||||
|
\fBtextutil\fR |
||||||
|
.IP \(bu |
||||||
|
\fBpunk::ansi\fR |
||||||
|
.sp |
||||||
|
- required to detect, split, strip and calculate lengths of text possibly containing ansi codes |
||||||
|
.IP \(bu |
||||||
|
\fBpunk::char\fR |
||||||
|
.sp |
||||||
|
- box drawing - and also unicode character width determination for proper layout of text with double-column-width chars |
||||||
|
.PP |
||||||
|
.SH API |
||||||
|
.SS "NAMESPACE OVERTYPE" |
||||||
|
.PP |
||||||
|
Core API functions for overtype |
||||||
|
.TP |
||||||
|
\fBovertype::renderspace\fR \fIargs\fR |
||||||
|
.sp |
||||||
|
usage: ?-transparent [0|1]? ?-expand_right [1|0]? ?-ellipsis [1|0]? ?-ellipsistext \&.\&.\&.? undertext overtext |
||||||
|
.TP |
||||||
|
\fBovertype::renderline\fR \fIargs\fR |
||||||
|
.sp |
||||||
|
renderline is the core engine for overtype string processing (frames & textblocks), and the raw mode commandline repl for the Tcl Punk Shell |
||||||
|
.sp |
||||||
|
It is also a central part of an ansi (micro) virtual terminal-emulator of sorts |
||||||
|
.sp |
||||||
|
This system does a half decent job at rendering 90's ANSI art to manipulable colour text blocks that can be joined & framed for layout display within a unix or windows terminal |
||||||
|
.sp |
||||||
|
Renderline helps maintain ANSI text styling reset/replay codes so that the styling of one block doesn't affect another\&. |
||||||
|
.sp |
||||||
|
Calling on the punk::ansi library - it can coalesce codes to keep the size down\&. |
||||||
|
.sp |
||||||
|
It is a giant mess of doing exactly what common wisdom says not to do\&.\&.\&. lots at once\&. |
||||||
|
.sp |
||||||
|
renderline is part of the Unicode and ANSI aware Overtype system which 'renders' a block of text onto a static underlay |
||||||
|
.sp |
||||||
|
The underlay is generally expected to be an ordered set of lines or a rectangular text block analogous to a terminal screen - but it can also be ragged in line length, or just blank\&. |
||||||
|
.sp |
||||||
|
The overlay couuld be similar - in which case it may often be used to overwrite a column or section of the underlay\&. |
||||||
|
.sp |
||||||
|
The overlay could however be a sequence of ANSI-laden text that jumps all over the place\&. |
||||||
|
.sp |
||||||
|
renderline itself only deals with a single line - or sometimes a single character\&. It is generally called from a loop that does further terminal-like or textblock processing\&. |
||||||
|
.sp |
||||||
|
By suppyling the -info 1 option - it can return various fields indicating the state of the render\&. |
||||||
|
.sp |
||||||
|
The main 3 are the result, overflow_right, and unapplied\&. |
||||||
|
.sp |
||||||
|
Renderline handles cursor movements from either keystrokes or ANSI sequences but for a full system the aforementioned loop will need to be in place to manage the set of lines under manipulation\&. |
||||||
|
.PP |
||||||
|
.SH KEYWORDS |
||||||
|
ansi, module, text |
||||||
|
.SH COPYRIGHT |
||||||
|
.nf |
||||||
|
Copyright (c) 2024 |
||||||
|
|
||||||
|
.fi |
||||||
@ -0,0 +1,314 @@ |
|||||||
|
'\" |
||||||
|
'\" Generated from file '_module_picalc-0\&.1\&.0\&.tm\&.man' by tcllib/doctools with format 'nroff' |
||||||
|
'\" Copyright (c) 2025 |
||||||
|
'\" |
||||||
|
.TH "shellspy_module_picalc" 0 0\&.1\&.0 doc "-" |
||||||
|
.\" The -*- nroff -*- definitions below are for supplemental macros used |
||||||
|
.\" in Tcl/Tk manual entries. |
||||||
|
.\" |
||||||
|
.\" .AP type name in/out ?indent? |
||||||
|
.\" Start paragraph describing an argument to a library procedure. |
||||||
|
.\" type is type of argument (int, etc.), in/out is either "in", "out", |
||||||
|
.\" or "in/out" to describe whether procedure reads or modifies arg, |
||||||
|
.\" and indent is equivalent to second arg of .IP (shouldn't ever be |
||||||
|
.\" needed; use .AS below instead) |
||||||
|
.\" |
||||||
|
.\" .AS ?type? ?name? |
||||||
|
.\" Give maximum sizes of arguments for setting tab stops. Type and |
||||||
|
.\" name are examples of largest possible arguments that will be passed |
||||||
|
.\" to .AP later. If args are omitted, default tab stops are used. |
||||||
|
.\" |
||||||
|
.\" .BS |
||||||
|
.\" Start box enclosure. From here until next .BE, everything will be |
||||||
|
.\" enclosed in one large box. |
||||||
|
.\" |
||||||
|
.\" .BE |
||||||
|
.\" End of box enclosure. |
||||||
|
.\" |
||||||
|
.\" .CS |
||||||
|
.\" Begin code excerpt. |
||||||
|
.\" |
||||||
|
.\" .CE |
||||||
|
.\" End code excerpt. |
||||||
|
.\" |
||||||
|
.\" .VS ?version? ?br? |
||||||
|
.\" Begin vertical sidebar, for use in marking newly-changed parts |
||||||
|
.\" of man pages. The first argument is ignored and used for recording |
||||||
|
.\" the version when the .VS was added, so that the sidebars can be |
||||||
|
.\" found and removed when they reach a certain age. If another argument |
||||||
|
.\" is present, then a line break is forced before starting the sidebar. |
||||||
|
.\" |
||||||
|
.\" .VE |
||||||
|
.\" End of vertical sidebar. |
||||||
|
.\" |
||||||
|
.\" .DS |
||||||
|
.\" Begin an indented unfilled display. |
||||||
|
.\" |
||||||
|
.\" .DE |
||||||
|
.\" End of indented unfilled display. |
||||||
|
.\" |
||||||
|
.\" .SO ?manpage? |
||||||
|
.\" Start of list of standard options for a Tk widget. The manpage |
||||||
|
.\" argument defines where to look up the standard options; if |
||||||
|
.\" omitted, defaults to "options". The options follow on successive |
||||||
|
.\" lines, in three columns separated by tabs. |
||||||
|
.\" |
||||||
|
.\" .SE |
||||||
|
.\" End of list of standard options for a Tk widget. |
||||||
|
.\" |
||||||
|
.\" .OP cmdName dbName dbClass |
||||||
|
.\" Start of description of a specific option. cmdName gives the |
||||||
|
.\" option's name as specified in the class command, dbName gives |
||||||
|
.\" the option's name in the option database, and dbClass gives |
||||||
|
.\" the option's class in the option database. |
||||||
|
.\" |
||||||
|
.\" .UL arg1 arg2 |
||||||
|
.\" Print arg1 underlined, then print arg2 normally. |
||||||
|
.\" |
||||||
|
.\" .QW arg1 ?arg2? |
||||||
|
.\" Print arg1 in quotes, then arg2 normally (for trailing punctuation). |
||||||
|
.\" |
||||||
|
.\" .PQ arg1 ?arg2? |
||||||
|
.\" Print an open parenthesis, arg1 in quotes, then arg2 normally |
||||||
|
.\" (for trailing punctuation) and then a closing parenthesis. |
||||||
|
.\" |
||||||
|
.\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. |
||||||
|
.if t .wh -1.3i ^B |
||||||
|
.nr ^l \n(.l |
||||||
|
.ad b |
||||||
|
.\" # Start an argument description |
||||||
|
.de AP |
||||||
|
.ie !"\\$4"" .TP \\$4 |
||||||
|
.el \{\ |
||||||
|
. ie !"\\$2"" .TP \\n()Cu |
||||||
|
. el .TP 15 |
||||||
|
.\} |
||||||
|
.ta \\n()Au \\n()Bu |
||||||
|
.ie !"\\$3"" \{\ |
||||||
|
\&\\$1 \\fI\\$2\\fP (\\$3) |
||||||
|
.\".b |
||||||
|
.\} |
||||||
|
.el \{\ |
||||||
|
.br |
||||||
|
.ie !"\\$2"" \{\ |
||||||
|
\&\\$1 \\fI\\$2\\fP |
||||||
|
.\} |
||||||
|
.el \{\ |
||||||
|
\&\\fI\\$1\\fP |
||||||
|
.\} |
||||||
|
.\} |
||||||
|
.. |
||||||
|
.\" # define tabbing values for .AP |
||||||
|
.de AS |
||||||
|
.nr )A 10n |
||||||
|
.if !"\\$1"" .nr )A \\w'\\$1'u+3n |
||||||
|
.nr )B \\n()Au+15n |
||||||
|
.\" |
||||||
|
.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n |
||||||
|
.nr )C \\n()Bu+\\w'(in/out)'u+2n |
||||||
|
.. |
||||||
|
.AS Tcl_Interp Tcl_CreateInterp in/out |
||||||
|
.\" # BS - start boxed text |
||||||
|
.\" # ^y = starting y location |
||||||
|
.\" # ^b = 1 |
||||||
|
.de BS |
||||||
|
.br |
||||||
|
.mk ^y |
||||||
|
.nr ^b 1u |
||||||
|
.if n .nf |
||||||
|
.if n .ti 0 |
||||||
|
.if n \l'\\n(.lu\(ul' |
||||||
|
.if n .fi |
||||||
|
.. |
||||||
|
.\" # BE - end boxed text (draw box now) |
||||||
|
.de BE |
||||||
|
.nf |
||||||
|
.ti 0 |
||||||
|
.mk ^t |
||||||
|
.ie n \l'\\n(^lu\(ul' |
||||||
|
.el \{\ |
||||||
|
.\" Draw four-sided box normally, but don't draw top of |
||||||
|
.\" box if the box started on an earlier page. |
||||||
|
.ie !\\n(^b-1 \{\ |
||||||
|
\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' |
||||||
|
.\} |
||||||
|
.el \}\ |
||||||
|
\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' |
||||||
|
.\} |
||||||
|
.\} |
||||||
|
.fi |
||||||
|
.br |
||||||
|
.nr ^b 0 |
||||||
|
.. |
||||||
|
.\" # VS - start vertical sidebar |
||||||
|
.\" # ^Y = starting y location |
||||||
|
.\" # ^v = 1 (for troff; for nroff this doesn't matter) |
||||||
|
.de VS |
||||||
|
.if !"\\$2"" .br |
||||||
|
.mk ^Y |
||||||
|
.ie n 'mc \s12\(br\s0 |
||||||
|
.el .nr ^v 1u |
||||||
|
.. |
||||||
|
.\" # VE - end of vertical sidebar |
||||||
|
.de VE |
||||||
|
.ie n 'mc |
||||||
|
.el \{\ |
||||||
|
.ev 2 |
||||||
|
.nf |
||||||
|
.ti 0 |
||||||
|
.mk ^t |
||||||
|
\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' |
||||||
|
.sp -1 |
||||||
|
.fi |
||||||
|
.ev |
||||||
|
.\} |
||||||
|
.nr ^v 0 |
||||||
|
.. |
||||||
|
.\" # Special macro to handle page bottom: finish off current |
||||||
|
.\" # box/sidebar if in box/sidebar mode, then invoked standard |
||||||
|
.\" # page bottom macro. |
||||||
|
.de ^B |
||||||
|
.ev 2 |
||||||
|
'ti 0 |
||||||
|
'nf |
||||||
|
.mk ^t |
||||||
|
.if \\n(^b \{\ |
||||||
|
.\" Draw three-sided box if this is the box's first page, |
||||||
|
.\" draw two sides but no top otherwise. |
||||||
|
.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c |
||||||
|
.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c |
||||||
|
.\} |
||||||
|
.if \\n(^v \{\ |
||||||
|
.nr ^x \\n(^tu+1v-\\n(^Yu |
||||||
|
\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c |
||||||
|
.\} |
||||||
|
.bp |
||||||
|
'fi |
||||||
|
.ev |
||||||
|
.if \\n(^b \{\ |
||||||
|
.mk ^y |
||||||
|
.nr ^b 2 |
||||||
|
.\} |
||||||
|
.if \\n(^v \{\ |
||||||
|
.mk ^Y |
||||||
|
.\} |
||||||
|
.. |
||||||
|
.\" # DS - begin display |
||||||
|
.de DS |
||||||
|
.RS |
||||||
|
.nf |
||||||
|
.sp |
||||||
|
.. |
||||||
|
.\" # DE - end display |
||||||
|
.de DE |
||||||
|
.fi |
||||||
|
.RE |
||||||
|
.sp |
||||||
|
.. |
||||||
|
.\" # SO - start of list of standard options |
||||||
|
.de SO |
||||||
|
'ie '\\$1'' .ds So \\fBoptions\\fR |
||||||
|
'el .ds So \\fB\\$1\\fR |
||||||
|
.SH "STANDARD OPTIONS" |
||||||
|
.LP |
||||||
|
.nf |
||||||
|
.ta 5.5c 11c |
||||||
|
.ft B |
||||||
|
.. |
||||||
|
.\" # SE - end of list of standard options |
||||||
|
.de SE |
||||||
|
.fi |
||||||
|
.ft R |
||||||
|
.LP |
||||||
|
See the \\*(So manual entry for details on the standard options. |
||||||
|
.. |
||||||
|
.\" # OP - start of full description for a single option |
||||||
|
.de OP |
||||||
|
.LP |
||||||
|
.nf |
||||||
|
.ta 4c |
||||||
|
Command-Line Name: \\fB\\$1\\fR |
||||||
|
Database Name: \\fB\\$2\\fR |
||||||
|
Database Class: \\fB\\$3\\fR |
||||||
|
.fi |
||||||
|
.IP |
||||||
|
.. |
||||||
|
.\" # CS - begin code excerpt |
||||||
|
.de CS |
||||||
|
.RS |
||||||
|
.nf |
||||||
|
.ta .25i .5i .75i 1i |
||||||
|
.. |
||||||
|
.\" # CE - end code excerpt |
||||||
|
.de CE |
||||||
|
.fi |
||||||
|
.RE |
||||||
|
.. |
||||||
|
.\" # UL - underline word |
||||||
|
.de UL |
||||||
|
\\$1\l'|0\(ul'\\$2 |
||||||
|
.. |
||||||
|
.\" # QW - apply quotation marks to word |
||||||
|
.de QW |
||||||
|
.ie '\\*(lq'"' ``\\$1''\\$2 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el \\*(lq\\$1\\*(rq\\$2 |
||||||
|
.. |
||||||
|
.\" # PQ - apply parens and quotation marks to word |
||||||
|
.de PQ |
||||||
|
.ie '\\*(lq'"' (``\\$1''\\$2)\\$3 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el (\\*(lq\\$1\\*(rq\\$2)\\$3 |
||||||
|
.. |
||||||
|
.\" # QR - quoted range |
||||||
|
.de QR |
||||||
|
.ie '\\*(lq'"' ``\\$1''\\-``\\$2''\\$3 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el \\*(lq\\$1\\*(rq\\-\\*(lq\\$2\\*(rq\\$3 |
||||||
|
.. |
||||||
|
.\" # MT - "empty" string |
||||||
|
.de MT |
||||||
|
.QW "" |
||||||
|
.. |
||||||
|
.BS |
||||||
|
.SH NAME |
||||||
|
shellspy_module_picalc \- Module API |
||||||
|
.SH SYNOPSIS |
||||||
|
package require \fBpicalc\fR |
||||||
|
.sp |
||||||
|
.BE |
||||||
|
.SH DESCRIPTION |
||||||
|
.PP |
||||||
|
- |
||||||
|
.SH OVERVIEW |
||||||
|
.PP |
||||||
|
overview of picalc |
||||||
|
.SS CONCEPTS |
||||||
|
.PP |
||||||
|
- |
||||||
|
.SS DEPENDENCIES |
||||||
|
.PP |
||||||
|
packages used by picalc |
||||||
|
.IP \(bu |
||||||
|
\fBTcl 8\&.6\fR |
||||||
|
.IP \(bu |
||||||
|
\fBpunk::lib\fR |
||||||
|
.IP \(bu |
||||||
|
\fBpunk::args\fR |
||||||
|
.PP |
||||||
|
.SH API |
||||||
|
.SS "NAMESPACE PICALC" |
||||||
|
.PP |
||||||
|
Core API functions for picalc |
||||||
|
.PP |
||||||
|
.SS "NAMESPACE PICALC::LIB" |
||||||
|
.PP |
||||||
|
Secondary functions that are part of the API |
||||||
|
.PP |
||||||
|
.SH KEYWORDS |
||||||
|
module |
||||||
|
.SH COPYRIGHT |
||||||
|
.nf |
||||||
|
Copyright (c) 2025 |
||||||
|
|
||||||
|
.fi |
||||||
@ -0,0 +1,325 @@ |
|||||||
|
'\" |
||||||
|
'\" Generated from file '_module_pipe-1\&.0\&.tm\&.man' by tcllib/doctools with format 'nroff' |
||||||
|
'\" Copyright (c) 2025 |
||||||
|
'\" |
||||||
|
.TH "shellspy_module_pipe" 0 1\&.0 doc "-" |
||||||
|
.\" The -*- nroff -*- definitions below are for supplemental macros used |
||||||
|
.\" in Tcl/Tk manual entries. |
||||||
|
.\" |
||||||
|
.\" .AP type name in/out ?indent? |
||||||
|
.\" Start paragraph describing an argument to a library procedure. |
||||||
|
.\" type is type of argument (int, etc.), in/out is either "in", "out", |
||||||
|
.\" or "in/out" to describe whether procedure reads or modifies arg, |
||||||
|
.\" and indent is equivalent to second arg of .IP (shouldn't ever be |
||||||
|
.\" needed; use .AS below instead) |
||||||
|
.\" |
||||||
|
.\" .AS ?type? ?name? |
||||||
|
.\" Give maximum sizes of arguments for setting tab stops. Type and |
||||||
|
.\" name are examples of largest possible arguments that will be passed |
||||||
|
.\" to .AP later. If args are omitted, default tab stops are used. |
||||||
|
.\" |
||||||
|
.\" .BS |
||||||
|
.\" Start box enclosure. From here until next .BE, everything will be |
||||||
|
.\" enclosed in one large box. |
||||||
|
.\" |
||||||
|
.\" .BE |
||||||
|
.\" End of box enclosure. |
||||||
|
.\" |
||||||
|
.\" .CS |
||||||
|
.\" Begin code excerpt. |
||||||
|
.\" |
||||||
|
.\" .CE |
||||||
|
.\" End code excerpt. |
||||||
|
.\" |
||||||
|
.\" .VS ?version? ?br? |
||||||
|
.\" Begin vertical sidebar, for use in marking newly-changed parts |
||||||
|
.\" of man pages. The first argument is ignored and used for recording |
||||||
|
.\" the version when the .VS was added, so that the sidebars can be |
||||||
|
.\" found and removed when they reach a certain age. If another argument |
||||||
|
.\" is present, then a line break is forced before starting the sidebar. |
||||||
|
.\" |
||||||
|
.\" .VE |
||||||
|
.\" End of vertical sidebar. |
||||||
|
.\" |
||||||
|
.\" .DS |
||||||
|
.\" Begin an indented unfilled display. |
||||||
|
.\" |
||||||
|
.\" .DE |
||||||
|
.\" End of indented unfilled display. |
||||||
|
.\" |
||||||
|
.\" .SO ?manpage? |
||||||
|
.\" Start of list of standard options for a Tk widget. The manpage |
||||||
|
.\" argument defines where to look up the standard options; if |
||||||
|
.\" omitted, defaults to "options". The options follow on successive |
||||||
|
.\" lines, in three columns separated by tabs. |
||||||
|
.\" |
||||||
|
.\" .SE |
||||||
|
.\" End of list of standard options for a Tk widget. |
||||||
|
.\" |
||||||
|
.\" .OP cmdName dbName dbClass |
||||||
|
.\" Start of description of a specific option. cmdName gives the |
||||||
|
.\" option's name as specified in the class command, dbName gives |
||||||
|
.\" the option's name in the option database, and dbClass gives |
||||||
|
.\" the option's class in the option database. |
||||||
|
.\" |
||||||
|
.\" .UL arg1 arg2 |
||||||
|
.\" Print arg1 underlined, then print arg2 normally. |
||||||
|
.\" |
||||||
|
.\" .QW arg1 ?arg2? |
||||||
|
.\" Print arg1 in quotes, then arg2 normally (for trailing punctuation). |
||||||
|
.\" |
||||||
|
.\" .PQ arg1 ?arg2? |
||||||
|
.\" Print an open parenthesis, arg1 in quotes, then arg2 normally |
||||||
|
.\" (for trailing punctuation) and then a closing parenthesis. |
||||||
|
.\" |
||||||
|
.\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. |
||||||
|
.if t .wh -1.3i ^B |
||||||
|
.nr ^l \n(.l |
||||||
|
.ad b |
||||||
|
.\" # Start an argument description |
||||||
|
.de AP |
||||||
|
.ie !"\\$4"" .TP \\$4 |
||||||
|
.el \{\ |
||||||
|
. ie !"\\$2"" .TP \\n()Cu |
||||||
|
. el .TP 15 |
||||||
|
.\} |
||||||
|
.ta \\n()Au \\n()Bu |
||||||
|
.ie !"\\$3"" \{\ |
||||||
|
\&\\$1 \\fI\\$2\\fP (\\$3) |
||||||
|
.\".b |
||||||
|
.\} |
||||||
|
.el \{\ |
||||||
|
.br |
||||||
|
.ie !"\\$2"" \{\ |
||||||
|
\&\\$1 \\fI\\$2\\fP |
||||||
|
.\} |
||||||
|
.el \{\ |
||||||
|
\&\\fI\\$1\\fP |
||||||
|
.\} |
||||||
|
.\} |
||||||
|
.. |
||||||
|
.\" # define tabbing values for .AP |
||||||
|
.de AS |
||||||
|
.nr )A 10n |
||||||
|
.if !"\\$1"" .nr )A \\w'\\$1'u+3n |
||||||
|
.nr )B \\n()Au+15n |
||||||
|
.\" |
||||||
|
.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n |
||||||
|
.nr )C \\n()Bu+\\w'(in/out)'u+2n |
||||||
|
.. |
||||||
|
.AS Tcl_Interp Tcl_CreateInterp in/out |
||||||
|
.\" # BS - start boxed text |
||||||
|
.\" # ^y = starting y location |
||||||
|
.\" # ^b = 1 |
||||||
|
.de BS |
||||||
|
.br |
||||||
|
.mk ^y |
||||||
|
.nr ^b 1u |
||||||
|
.if n .nf |
||||||
|
.if n .ti 0 |
||||||
|
.if n \l'\\n(.lu\(ul' |
||||||
|
.if n .fi |
||||||
|
.. |
||||||
|
.\" # BE - end boxed text (draw box now) |
||||||
|
.de BE |
||||||
|
.nf |
||||||
|
.ti 0 |
||||||
|
.mk ^t |
||||||
|
.ie n \l'\\n(^lu\(ul' |
||||||
|
.el \{\ |
||||||
|
.\" Draw four-sided box normally, but don't draw top of |
||||||
|
.\" box if the box started on an earlier page. |
||||||
|
.ie !\\n(^b-1 \{\ |
||||||
|
\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' |
||||||
|
.\} |
||||||
|
.el \}\ |
||||||
|
\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' |
||||||
|
.\} |
||||||
|
.\} |
||||||
|
.fi |
||||||
|
.br |
||||||
|
.nr ^b 0 |
||||||
|
.. |
||||||
|
.\" # VS - start vertical sidebar |
||||||
|
.\" # ^Y = starting y location |
||||||
|
.\" # ^v = 1 (for troff; for nroff this doesn't matter) |
||||||
|
.de VS |
||||||
|
.if !"\\$2"" .br |
||||||
|
.mk ^Y |
||||||
|
.ie n 'mc \s12\(br\s0 |
||||||
|
.el .nr ^v 1u |
||||||
|
.. |
||||||
|
.\" # VE - end of vertical sidebar |
||||||
|
.de VE |
||||||
|
.ie n 'mc |
||||||
|
.el \{\ |
||||||
|
.ev 2 |
||||||
|
.nf |
||||||
|
.ti 0 |
||||||
|
.mk ^t |
||||||
|
\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' |
||||||
|
.sp -1 |
||||||
|
.fi |
||||||
|
.ev |
||||||
|
.\} |
||||||
|
.nr ^v 0 |
||||||
|
.. |
||||||
|
.\" # Special macro to handle page bottom: finish off current |
||||||
|
.\" # box/sidebar if in box/sidebar mode, then invoked standard |
||||||
|
.\" # page bottom macro. |
||||||
|
.de ^B |
||||||
|
.ev 2 |
||||||
|
'ti 0 |
||||||
|
'nf |
||||||
|
.mk ^t |
||||||
|
.if \\n(^b \{\ |
||||||
|
.\" Draw three-sided box if this is the box's first page, |
||||||
|
.\" draw two sides but no top otherwise. |
||||||
|
.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c |
||||||
|
.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c |
||||||
|
.\} |
||||||
|
.if \\n(^v \{\ |
||||||
|
.nr ^x \\n(^tu+1v-\\n(^Yu |
||||||
|
\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c |
||||||
|
.\} |
||||||
|
.bp |
||||||
|
'fi |
||||||
|
.ev |
||||||
|
.if \\n(^b \{\ |
||||||
|
.mk ^y |
||||||
|
.nr ^b 2 |
||||||
|
.\} |
||||||
|
.if \\n(^v \{\ |
||||||
|
.mk ^Y |
||||||
|
.\} |
||||||
|
.. |
||||||
|
.\" # DS - begin display |
||||||
|
.de DS |
||||||
|
.RS |
||||||
|
.nf |
||||||
|
.sp |
||||||
|
.. |
||||||
|
.\" # DE - end display |
||||||
|
.de DE |
||||||
|
.fi |
||||||
|
.RE |
||||||
|
.sp |
||||||
|
.. |
||||||
|
.\" # SO - start of list of standard options |
||||||
|
.de SO |
||||||
|
'ie '\\$1'' .ds So \\fBoptions\\fR |
||||||
|
'el .ds So \\fB\\$1\\fR |
||||||
|
.SH "STANDARD OPTIONS" |
||||||
|
.LP |
||||||
|
.nf |
||||||
|
.ta 5.5c 11c |
||||||
|
.ft B |
||||||
|
.. |
||||||
|
.\" # SE - end of list of standard options |
||||||
|
.de SE |
||||||
|
.fi |
||||||
|
.ft R |
||||||
|
.LP |
||||||
|
See the \\*(So manual entry for details on the standard options. |
||||||
|
.. |
||||||
|
.\" # OP - start of full description for a single option |
||||||
|
.de OP |
||||||
|
.LP |
||||||
|
.nf |
||||||
|
.ta 4c |
||||||
|
Command-Line Name: \\fB\\$1\\fR |
||||||
|
Database Name: \\fB\\$2\\fR |
||||||
|
Database Class: \\fB\\$3\\fR |
||||||
|
.fi |
||||||
|
.IP |
||||||
|
.. |
||||||
|
.\" # CS - begin code excerpt |
||||||
|
.de CS |
||||||
|
.RS |
||||||
|
.nf |
||||||
|
.ta .25i .5i .75i 1i |
||||||
|
.. |
||||||
|
.\" # CE - end code excerpt |
||||||
|
.de CE |
||||||
|
.fi |
||||||
|
.RE |
||||||
|
.. |
||||||
|
.\" # UL - underline word |
||||||
|
.de UL |
||||||
|
\\$1\l'|0\(ul'\\$2 |
||||||
|
.. |
||||||
|
.\" # QW - apply quotation marks to word |
||||||
|
.de QW |
||||||
|
.ie '\\*(lq'"' ``\\$1''\\$2 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el \\*(lq\\$1\\*(rq\\$2 |
||||||
|
.. |
||||||
|
.\" # PQ - apply parens and quotation marks to word |
||||||
|
.de PQ |
||||||
|
.ie '\\*(lq'"' (``\\$1''\\$2)\\$3 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el (\\*(lq\\$1\\*(rq\\$2)\\$3 |
||||||
|
.. |
||||||
|
.\" # QR - quoted range |
||||||
|
.de QR |
||||||
|
.ie '\\*(lq'"' ``\\$1''\\-``\\$2''\\$3 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el \\*(lq\\$1\\*(rq\\-\\*(lq\\$2\\*(rq\\$3 |
||||||
|
.. |
||||||
|
.\" # MT - "empty" string |
||||||
|
.de MT |
||||||
|
.QW "" |
||||||
|
.. |
||||||
|
.BS |
||||||
|
.SH NAME |
||||||
|
shellspy_module_pipe \- Module API |
||||||
|
.SH SYNOPSIS |
||||||
|
package require \fBpipe\fR |
||||||
|
.sp |
||||||
|
.BE |
||||||
|
.SH DESCRIPTION |
||||||
|
.PP |
||||||
|
- |
||||||
|
.SH OVERVIEW |
||||||
|
.PP |
||||||
|
overview of pipe |
||||||
|
.SS CONCEPTS |
||||||
|
.PP |
||||||
|
- |
||||||
|
.SS DEPENDENCIES |
||||||
|
.PP |
||||||
|
packages used by pipe |
||||||
|
.IP \(bu |
||||||
|
\fBTcl 8\&.6\fR |
||||||
|
.PP |
||||||
|
.SH API |
||||||
|
.SS "NAMESPACE PIPE::CLASS" |
||||||
|
.PP |
||||||
|
class definitions |
||||||
|
if { eq ""} { |
||||||
|
*** !doctools |
||||||
|
.PP |
||||||
|
} |
||||||
|
} |
||||||
|
++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ |
||||||
|
.SS "NAMESPACE PIPE" |
||||||
|
.PP |
||||||
|
Core API functions for pipe |
||||||
|
.PP |
||||||
|
.SS "NAMESPACE PIPE::LIB" |
||||||
|
.PP |
||||||
|
Secondary functions that are part of the API |
||||||
|
.PP |
||||||
|
.SH INTERNAL |
||||||
|
tcl::namespace::eval pipe::system { |
||||||
|
*** !doctools |
||||||
|
.SS "NAMESPACE PIPE::SYSTEM" |
||||||
|
.PP |
||||||
|
Internal functions that are not part of the API |
||||||
|
.SH KEYWORDS |
||||||
|
module |
||||||
|
.SH COPYRIGHT |
||||||
|
.nf |
||||||
|
Copyright (c) 2025 |
||||||
|
|
||||||
|
.fi |
||||||
@ -0,0 +1,380 @@ |
|||||||
|
'\" |
||||||
|
'\" Generated from file '_module_tomlish-1\&.1\&.3\&.tm\&.man' by tcllib/doctools with format 'nroff' |
||||||
|
'\" Copyright (c) 2024 |
||||||
|
'\" |
||||||
|
.TH "tomlish_module_tomlish" 0 1\&.1\&.3 doc "tomlish" |
||||||
|
.\" The -*- nroff -*- definitions below are for supplemental macros used |
||||||
|
.\" in Tcl/Tk manual entries. |
||||||
|
.\" |
||||||
|
.\" .AP type name in/out ?indent? |
||||||
|
.\" Start paragraph describing an argument to a library procedure. |
||||||
|
.\" type is type of argument (int, etc.), in/out is either "in", "out", |
||||||
|
.\" or "in/out" to describe whether procedure reads or modifies arg, |
||||||
|
.\" and indent is equivalent to second arg of .IP (shouldn't ever be |
||||||
|
.\" needed; use .AS below instead) |
||||||
|
.\" |
||||||
|
.\" .AS ?type? ?name? |
||||||
|
.\" Give maximum sizes of arguments for setting tab stops. Type and |
||||||
|
.\" name are examples of largest possible arguments that will be passed |
||||||
|
.\" to .AP later. If args are omitted, default tab stops are used. |
||||||
|
.\" |
||||||
|
.\" .BS |
||||||
|
.\" Start box enclosure. From here until next .BE, everything will be |
||||||
|
.\" enclosed in one large box. |
||||||
|
.\" |
||||||
|
.\" .BE |
||||||
|
.\" End of box enclosure. |
||||||
|
.\" |
||||||
|
.\" .CS |
||||||
|
.\" Begin code excerpt. |
||||||
|
.\" |
||||||
|
.\" .CE |
||||||
|
.\" End code excerpt. |
||||||
|
.\" |
||||||
|
.\" .VS ?version? ?br? |
||||||
|
.\" Begin vertical sidebar, for use in marking newly-changed parts |
||||||
|
.\" of man pages. The first argument is ignored and used for recording |
||||||
|
.\" the version when the .VS was added, so that the sidebars can be |
||||||
|
.\" found and removed when they reach a certain age. If another argument |
||||||
|
.\" is present, then a line break is forced before starting the sidebar. |
||||||
|
.\" |
||||||
|
.\" .VE |
||||||
|
.\" End of vertical sidebar. |
||||||
|
.\" |
||||||
|
.\" .DS |
||||||
|
.\" Begin an indented unfilled display. |
||||||
|
.\" |
||||||
|
.\" .DE |
||||||
|
.\" End of indented unfilled display. |
||||||
|
.\" |
||||||
|
.\" .SO ?manpage? |
||||||
|
.\" Start of list of standard options for a Tk widget. The manpage |
||||||
|
.\" argument defines where to look up the standard options; if |
||||||
|
.\" omitted, defaults to "options". The options follow on successive |
||||||
|
.\" lines, in three columns separated by tabs. |
||||||
|
.\" |
||||||
|
.\" .SE |
||||||
|
.\" End of list of standard options for a Tk widget. |
||||||
|
.\" |
||||||
|
.\" .OP cmdName dbName dbClass |
||||||
|
.\" Start of description of a specific option. cmdName gives the |
||||||
|
.\" option's name as specified in the class command, dbName gives |
||||||
|
.\" the option's name in the option database, and dbClass gives |
||||||
|
.\" the option's class in the option database. |
||||||
|
.\" |
||||||
|
.\" .UL arg1 arg2 |
||||||
|
.\" Print arg1 underlined, then print arg2 normally. |
||||||
|
.\" |
||||||
|
.\" .QW arg1 ?arg2? |
||||||
|
.\" Print arg1 in quotes, then arg2 normally (for trailing punctuation). |
||||||
|
.\" |
||||||
|
.\" .PQ arg1 ?arg2? |
||||||
|
.\" Print an open parenthesis, arg1 in quotes, then arg2 normally |
||||||
|
.\" (for trailing punctuation) and then a closing parenthesis. |
||||||
|
.\" |
||||||
|
.\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. |
||||||
|
.if t .wh -1.3i ^B |
||||||
|
.nr ^l \n(.l |
||||||
|
.ad b |
||||||
|
.\" # Start an argument description |
||||||
|
.de AP |
||||||
|
.ie !"\\$4"" .TP \\$4 |
||||||
|
.el \{\ |
||||||
|
. ie !"\\$2"" .TP \\n()Cu |
||||||
|
. el .TP 15 |
||||||
|
.\} |
||||||
|
.ta \\n()Au \\n()Bu |
||||||
|
.ie !"\\$3"" \{\ |
||||||
|
\&\\$1 \\fI\\$2\\fP (\\$3) |
||||||
|
.\".b |
||||||
|
.\} |
||||||
|
.el \{\ |
||||||
|
.br |
||||||
|
.ie !"\\$2"" \{\ |
||||||
|
\&\\$1 \\fI\\$2\\fP |
||||||
|
.\} |
||||||
|
.el \{\ |
||||||
|
\&\\fI\\$1\\fP |
||||||
|
.\} |
||||||
|
.\} |
||||||
|
.. |
||||||
|
.\" # define tabbing values for .AP |
||||||
|
.de AS |
||||||
|
.nr )A 10n |
||||||
|
.if !"\\$1"" .nr )A \\w'\\$1'u+3n |
||||||
|
.nr )B \\n()Au+15n |
||||||
|
.\" |
||||||
|
.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n |
||||||
|
.nr )C \\n()Bu+\\w'(in/out)'u+2n |
||||||
|
.. |
||||||
|
.AS Tcl_Interp Tcl_CreateInterp in/out |
||||||
|
.\" # BS - start boxed text |
||||||
|
.\" # ^y = starting y location |
||||||
|
.\" # ^b = 1 |
||||||
|
.de BS |
||||||
|
.br |
||||||
|
.mk ^y |
||||||
|
.nr ^b 1u |
||||||
|
.if n .nf |
||||||
|
.if n .ti 0 |
||||||
|
.if n \l'\\n(.lu\(ul' |
||||||
|
.if n .fi |
||||||
|
.. |
||||||
|
.\" # BE - end boxed text (draw box now) |
||||||
|
.de BE |
||||||
|
.nf |
||||||
|
.ti 0 |
||||||
|
.mk ^t |
||||||
|
.ie n \l'\\n(^lu\(ul' |
||||||
|
.el \{\ |
||||||
|
.\" Draw four-sided box normally, but don't draw top of |
||||||
|
.\" box if the box started on an earlier page. |
||||||
|
.ie !\\n(^b-1 \{\ |
||||||
|
\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' |
||||||
|
.\} |
||||||
|
.el \}\ |
||||||
|
\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' |
||||||
|
.\} |
||||||
|
.\} |
||||||
|
.fi |
||||||
|
.br |
||||||
|
.nr ^b 0 |
||||||
|
.. |
||||||
|
.\" # VS - start vertical sidebar |
||||||
|
.\" # ^Y = starting y location |
||||||
|
.\" # ^v = 1 (for troff; for nroff this doesn't matter) |
||||||
|
.de VS |
||||||
|
.if !"\\$2"" .br |
||||||
|
.mk ^Y |
||||||
|
.ie n 'mc \s12\(br\s0 |
||||||
|
.el .nr ^v 1u |
||||||
|
.. |
||||||
|
.\" # VE - end of vertical sidebar |
||||||
|
.de VE |
||||||
|
.ie n 'mc |
||||||
|
.el \{\ |
||||||
|
.ev 2 |
||||||
|
.nf |
||||||
|
.ti 0 |
||||||
|
.mk ^t |
||||||
|
\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' |
||||||
|
.sp -1 |
||||||
|
.fi |
||||||
|
.ev |
||||||
|
.\} |
||||||
|
.nr ^v 0 |
||||||
|
.. |
||||||
|
.\" # Special macro to handle page bottom: finish off current |
||||||
|
.\" # box/sidebar if in box/sidebar mode, then invoked standard |
||||||
|
.\" # page bottom macro. |
||||||
|
.de ^B |
||||||
|
.ev 2 |
||||||
|
'ti 0 |
||||||
|
'nf |
||||||
|
.mk ^t |
||||||
|
.if \\n(^b \{\ |
||||||
|
.\" Draw three-sided box if this is the box's first page, |
||||||
|
.\" draw two sides but no top otherwise. |
||||||
|
.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c |
||||||
|
.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c |
||||||
|
.\} |
||||||
|
.if \\n(^v \{\ |
||||||
|
.nr ^x \\n(^tu+1v-\\n(^Yu |
||||||
|
\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c |
||||||
|
.\} |
||||||
|
.bp |
||||||
|
'fi |
||||||
|
.ev |
||||||
|
.if \\n(^b \{\ |
||||||
|
.mk ^y |
||||||
|
.nr ^b 2 |
||||||
|
.\} |
||||||
|
.if \\n(^v \{\ |
||||||
|
.mk ^Y |
||||||
|
.\} |
||||||
|
.. |
||||||
|
.\" # DS - begin display |
||||||
|
.de DS |
||||||
|
.RS |
||||||
|
.nf |
||||||
|
.sp |
||||||
|
.. |
||||||
|
.\" # DE - end display |
||||||
|
.de DE |
||||||
|
.fi |
||||||
|
.RE |
||||||
|
.sp |
||||||
|
.. |
||||||
|
.\" # SO - start of list of standard options |
||||||
|
.de SO |
||||||
|
'ie '\\$1'' .ds So \\fBoptions\\fR |
||||||
|
'el .ds So \\fB\\$1\\fR |
||||||
|
.SH "STANDARD OPTIONS" |
||||||
|
.LP |
||||||
|
.nf |
||||||
|
.ta 5.5c 11c |
||||||
|
.ft B |
||||||
|
.. |
||||||
|
.\" # SE - end of list of standard options |
||||||
|
.de SE |
||||||
|
.fi |
||||||
|
.ft R |
||||||
|
.LP |
||||||
|
See the \\*(So manual entry for details on the standard options. |
||||||
|
.. |
||||||
|
.\" # OP - start of full description for a single option |
||||||
|
.de OP |
||||||
|
.LP |
||||||
|
.nf |
||||||
|
.ta 4c |
||||||
|
Command-Line Name: \\fB\\$1\\fR |
||||||
|
Database Name: \\fB\\$2\\fR |
||||||
|
Database Class: \\fB\\$3\\fR |
||||||
|
.fi |
||||||
|
.IP |
||||||
|
.. |
||||||
|
.\" # CS - begin code excerpt |
||||||
|
.de CS |
||||||
|
.RS |
||||||
|
.nf |
||||||
|
.ta .25i .5i .75i 1i |
||||||
|
.. |
||||||
|
.\" # CE - end code excerpt |
||||||
|
.de CE |
||||||
|
.fi |
||||||
|
.RE |
||||||
|
.. |
||||||
|
.\" # UL - underline word |
||||||
|
.de UL |
||||||
|
\\$1\l'|0\(ul'\\$2 |
||||||
|
.. |
||||||
|
.\" # QW - apply quotation marks to word |
||||||
|
.de QW |
||||||
|
.ie '\\*(lq'"' ``\\$1''\\$2 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el \\*(lq\\$1\\*(rq\\$2 |
||||||
|
.. |
||||||
|
.\" # PQ - apply parens and quotation marks to word |
||||||
|
.de PQ |
||||||
|
.ie '\\*(lq'"' (``\\$1''\\$2)\\$3 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el (\\*(lq\\$1\\*(rq\\$2)\\$3 |
||||||
|
.. |
||||||
|
.\" # QR - quoted range |
||||||
|
.de QR |
||||||
|
.ie '\\*(lq'"' ``\\$1''\\-``\\$2''\\$3 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el \\*(lq\\$1\\*(rq\\-\\*(lq\\$2\\*(rq\\$3 |
||||||
|
.. |
||||||
|
.\" # MT - "empty" string |
||||||
|
.de MT |
||||||
|
.QW "" |
||||||
|
.. |
||||||
|
.BS |
||||||
|
.SH NAME |
||||||
|
tomlish_module_tomlish \- tomlish toml parser |
||||||
|
.SH SYNOPSIS |
||||||
|
package require \fBtomlish\fR |
||||||
|
.sp |
||||||
|
\fBjson_to_toml\fR \fIjson\fR |
||||||
|
.sp |
||||||
|
\fBtoml\fR \fIarg\&.\&.\&.\fR |
||||||
|
.sp |
||||||
|
app::\fBdecoder\fR \fIargs\fR |
||||||
|
.sp |
||||||
|
app::\fBencoder\fR \fIargs\fR |
||||||
|
.sp |
||||||
|
.BE |
||||||
|
.SH DESCRIPTION |
||||||
|
.PP |
||||||
|
tomlish is an intermediate representation of toml data in a tree structure (tagged lists representing type information) |
||||||
|
.PP |
||||||
|
The design goals are for tomlish to be whitespace and comment preserving ie byte-for byte preservation during roundtrips from toml to tomlish and back to toml |
||||||
|
.PP |
||||||
|
The tomlish representation can then be converted to a Tcl dict structure or to other formats such as json, |
||||||
|
.PP |
||||||
|
although these other formats are generally unlikely to retain whitespace or comments |
||||||
|
.PP |
||||||
|
The other formats also won't preserve roundtripability e\&.g \\t and a literal tab coming from a toml file will be indistinguishable\&. |
||||||
|
.PP |
||||||
|
A further goal is to allow at least a useful subset of in-place editing operations which also preserve whitespace and comments\&. |
||||||
|
.PP |
||||||
|
e\&.g leaf key value editing, and table reordering/sorting, key-renaming at any level, key insertions/deletions |
||||||
|
.PP |
||||||
|
The API for editing (tomldoc object?) may require explicit setting of type if accessing an existing key |
||||||
|
.PP |
||||||
|
e\&.g setting a key that already exists and is a different type (especially if nested structure such as a table or array) |
||||||
|
.PP |
||||||
|
will need a -type option (-force ?) to force overriding with another type such as an int\&. |
||||||
|
.SH OVERVIEW |
||||||
|
.PP |
||||||
|
overview of tomlish |
||||||
|
.SS CONCEPTS |
||||||
|
.PP |
||||||
|
- |
||||||
|
.SS DEPENDENCIES |
||||||
|
.PP |
||||||
|
packages used by tomlish |
||||||
|
.IP \(bu |
||||||
|
\fBTcl 8\&.6-\fR |
||||||
|
.IP \(bu |
||||||
|
\fBstruct::stack\fR |
||||||
|
.PP |
||||||
|
.SH API |
||||||
|
.SS "NAMESPACE TOMLISH" |
||||||
|
.PP |
||||||
|
Core API functions for tomlish |
||||||
|
.TP |
||||||
|
\fBjson_to_toml\fR \fIjson\fR |
||||||
|
.sp |
||||||
|
.PP |
||||||
|
.SS "NAMESPACE TOMLISH::ENCODE" |
||||||
|
.PP |
||||||
|
.PP |
||||||
|
.SS "NAMESPACE TOMLISH::DECODE" |
||||||
|
.PP |
||||||
|
.TP |
||||||
|
\fBtoml\fR \fIarg\&.\&.\&.\fR |
||||||
|
.sp |
||||||
|
return a Tcl list of tomlish tokens |
||||||
|
.PP |
||||||
|
.SS "NAMESPACE TOMLISH::UTILS" |
||||||
|
.PP |
||||||
|
.PP |
||||||
|
.SS "NAMESPACE TOMLISH::PARSE" |
||||||
|
.PP |
||||||
|
.PP |
||||||
|
.SS "NAMESPACE TOMLISH::APP" |
||||||
|
.PP |
||||||
|
.TP |
||||||
|
app::\fBdecoder\fR \fIargs\fR |
||||||
|
.sp |
||||||
|
read toml on stdin until EOF |
||||||
|
.sp |
||||||
|
on error - returns non-zero exit code and writes error on stderr |
||||||
|
.sp |
||||||
|
on success - returns zero exit code and writes JSON encoding of the data on stdout |
||||||
|
.sp |
||||||
|
This decoder is intended to be compatible with toml-test |
||||||
|
.TP |
||||||
|
app::\fBencoder\fR \fIargs\fR |
||||||
|
.sp |
||||||
|
read JSON on stdin until EOF |
||||||
|
.sp |
||||||
|
return non-zero exitcode if JSON data cannot be converted to a valid TOML representation |
||||||
|
.sp |
||||||
|
return zero exitcode and TOML data on stdout if JSON data can be converted\&. |
||||||
|
.sp |
||||||
|
This encoder is intended to be compatible with toml-test |
||||||
|
.PP |
||||||
|
.SS "NAMESPACE TOMLISH::LIB" |
||||||
|
.PP |
||||||
|
Secondary functions that are part of the API |
||||||
|
.PP |
||||||
|
.SH KEYWORDS |
||||||
|
configuration, module, parsing, toml |
||||||
|
.SH COPYRIGHT |
||||||
|
.nf |
||||||
|
Copyright (c) 2024 |
||||||
|
|
||||||
|
.fi |
||||||
@ -0,0 +1,380 @@ |
|||||||
|
'\" |
||||||
|
'\" Generated from file '_module_tomlish-1\&.1\&.4\&.tm\&.man' by tcllib/doctools with format 'nroff' |
||||||
|
'\" Copyright (c) 2024 |
||||||
|
'\" |
||||||
|
.TH "tomlish_module_tomlish" 0 1\&.1\&.4 doc "tomlish" |
||||||
|
.\" The -*- nroff -*- definitions below are for supplemental macros used |
||||||
|
.\" in Tcl/Tk manual entries. |
||||||
|
.\" |
||||||
|
.\" .AP type name in/out ?indent? |
||||||
|
.\" Start paragraph describing an argument to a library procedure. |
||||||
|
.\" type is type of argument (int, etc.), in/out is either "in", "out", |
||||||
|
.\" or "in/out" to describe whether procedure reads or modifies arg, |
||||||
|
.\" and indent is equivalent to second arg of .IP (shouldn't ever be |
||||||
|
.\" needed; use .AS below instead) |
||||||
|
.\" |
||||||
|
.\" .AS ?type? ?name? |
||||||
|
.\" Give maximum sizes of arguments for setting tab stops. Type and |
||||||
|
.\" name are examples of largest possible arguments that will be passed |
||||||
|
.\" to .AP later. If args are omitted, default tab stops are used. |
||||||
|
.\" |
||||||
|
.\" .BS |
||||||
|
.\" Start box enclosure. From here until next .BE, everything will be |
||||||
|
.\" enclosed in one large box. |
||||||
|
.\" |
||||||
|
.\" .BE |
||||||
|
.\" End of box enclosure. |
||||||
|
.\" |
||||||
|
.\" .CS |
||||||
|
.\" Begin code excerpt. |
||||||
|
.\" |
||||||
|
.\" .CE |
||||||
|
.\" End code excerpt. |
||||||
|
.\" |
||||||
|
.\" .VS ?version? ?br? |
||||||
|
.\" Begin vertical sidebar, for use in marking newly-changed parts |
||||||
|
.\" of man pages. The first argument is ignored and used for recording |
||||||
|
.\" the version when the .VS was added, so that the sidebars can be |
||||||
|
.\" found and removed when they reach a certain age. If another argument |
||||||
|
.\" is present, then a line break is forced before starting the sidebar. |
||||||
|
.\" |
||||||
|
.\" .VE |
||||||
|
.\" End of vertical sidebar. |
||||||
|
.\" |
||||||
|
.\" .DS |
||||||
|
.\" Begin an indented unfilled display. |
||||||
|
.\" |
||||||
|
.\" .DE |
||||||
|
.\" End of indented unfilled display. |
||||||
|
.\" |
||||||
|
.\" .SO ?manpage? |
||||||
|
.\" Start of list of standard options for a Tk widget. The manpage |
||||||
|
.\" argument defines where to look up the standard options; if |
||||||
|
.\" omitted, defaults to "options". The options follow on successive |
||||||
|
.\" lines, in three columns separated by tabs. |
||||||
|
.\" |
||||||
|
.\" .SE |
||||||
|
.\" End of list of standard options for a Tk widget. |
||||||
|
.\" |
||||||
|
.\" .OP cmdName dbName dbClass |
||||||
|
.\" Start of description of a specific option. cmdName gives the |
||||||
|
.\" option's name as specified in the class command, dbName gives |
||||||
|
.\" the option's name in the option database, and dbClass gives |
||||||
|
.\" the option's class in the option database. |
||||||
|
.\" |
||||||
|
.\" .UL arg1 arg2 |
||||||
|
.\" Print arg1 underlined, then print arg2 normally. |
||||||
|
.\" |
||||||
|
.\" .QW arg1 ?arg2? |
||||||
|
.\" Print arg1 in quotes, then arg2 normally (for trailing punctuation). |
||||||
|
.\" |
||||||
|
.\" .PQ arg1 ?arg2? |
||||||
|
.\" Print an open parenthesis, arg1 in quotes, then arg2 normally |
||||||
|
.\" (for trailing punctuation) and then a closing parenthesis. |
||||||
|
.\" |
||||||
|
.\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. |
||||||
|
.if t .wh -1.3i ^B |
||||||
|
.nr ^l \n(.l |
||||||
|
.ad b |
||||||
|
.\" # Start an argument description |
||||||
|
.de AP |
||||||
|
.ie !"\\$4"" .TP \\$4 |
||||||
|
.el \{\ |
||||||
|
. ie !"\\$2"" .TP \\n()Cu |
||||||
|
. el .TP 15 |
||||||
|
.\} |
||||||
|
.ta \\n()Au \\n()Bu |
||||||
|
.ie !"\\$3"" \{\ |
||||||
|
\&\\$1 \\fI\\$2\\fP (\\$3) |
||||||
|
.\".b |
||||||
|
.\} |
||||||
|
.el \{\ |
||||||
|
.br |
||||||
|
.ie !"\\$2"" \{\ |
||||||
|
\&\\$1 \\fI\\$2\\fP |
||||||
|
.\} |
||||||
|
.el \{\ |
||||||
|
\&\\fI\\$1\\fP |
||||||
|
.\} |
||||||
|
.\} |
||||||
|
.. |
||||||
|
.\" # define tabbing values for .AP |
||||||
|
.de AS |
||||||
|
.nr )A 10n |
||||||
|
.if !"\\$1"" .nr )A \\w'\\$1'u+3n |
||||||
|
.nr )B \\n()Au+15n |
||||||
|
.\" |
||||||
|
.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n |
||||||
|
.nr )C \\n()Bu+\\w'(in/out)'u+2n |
||||||
|
.. |
||||||
|
.AS Tcl_Interp Tcl_CreateInterp in/out |
||||||
|
.\" # BS - start boxed text |
||||||
|
.\" # ^y = starting y location |
||||||
|
.\" # ^b = 1 |
||||||
|
.de BS |
||||||
|
.br |
||||||
|
.mk ^y |
||||||
|
.nr ^b 1u |
||||||
|
.if n .nf |
||||||
|
.if n .ti 0 |
||||||
|
.if n \l'\\n(.lu\(ul' |
||||||
|
.if n .fi |
||||||
|
.. |
||||||
|
.\" # BE - end boxed text (draw box now) |
||||||
|
.de BE |
||||||
|
.nf |
||||||
|
.ti 0 |
||||||
|
.mk ^t |
||||||
|
.ie n \l'\\n(^lu\(ul' |
||||||
|
.el \{\ |
||||||
|
.\" Draw four-sided box normally, but don't draw top of |
||||||
|
.\" box if the box started on an earlier page. |
||||||
|
.ie !\\n(^b-1 \{\ |
||||||
|
\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' |
||||||
|
.\} |
||||||
|
.el \}\ |
||||||
|
\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' |
||||||
|
.\} |
||||||
|
.\} |
||||||
|
.fi |
||||||
|
.br |
||||||
|
.nr ^b 0 |
||||||
|
.. |
||||||
|
.\" # VS - start vertical sidebar |
||||||
|
.\" # ^Y = starting y location |
||||||
|
.\" # ^v = 1 (for troff; for nroff this doesn't matter) |
||||||
|
.de VS |
||||||
|
.if !"\\$2"" .br |
||||||
|
.mk ^Y |
||||||
|
.ie n 'mc \s12\(br\s0 |
||||||
|
.el .nr ^v 1u |
||||||
|
.. |
||||||
|
.\" # VE - end of vertical sidebar |
||||||
|
.de VE |
||||||
|
.ie n 'mc |
||||||
|
.el \{\ |
||||||
|
.ev 2 |
||||||
|
.nf |
||||||
|
.ti 0 |
||||||
|
.mk ^t |
||||||
|
\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' |
||||||
|
.sp -1 |
||||||
|
.fi |
||||||
|
.ev |
||||||
|
.\} |
||||||
|
.nr ^v 0 |
||||||
|
.. |
||||||
|
.\" # Special macro to handle page bottom: finish off current |
||||||
|
.\" # box/sidebar if in box/sidebar mode, then invoked standard |
||||||
|
.\" # page bottom macro. |
||||||
|
.de ^B |
||||||
|
.ev 2 |
||||||
|
'ti 0 |
||||||
|
'nf |
||||||
|
.mk ^t |
||||||
|
.if \\n(^b \{\ |
||||||
|
.\" Draw three-sided box if this is the box's first page, |
||||||
|
.\" draw two sides but no top otherwise. |
||||||
|
.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c |
||||||
|
.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c |
||||||
|
.\} |
||||||
|
.if \\n(^v \{\ |
||||||
|
.nr ^x \\n(^tu+1v-\\n(^Yu |
||||||
|
\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c |
||||||
|
.\} |
||||||
|
.bp |
||||||
|
'fi |
||||||
|
.ev |
||||||
|
.if \\n(^b \{\ |
||||||
|
.mk ^y |
||||||
|
.nr ^b 2 |
||||||
|
.\} |
||||||
|
.if \\n(^v \{\ |
||||||
|
.mk ^Y |
||||||
|
.\} |
||||||
|
.. |
||||||
|
.\" # DS - begin display |
||||||
|
.de DS |
||||||
|
.RS |
||||||
|
.nf |
||||||
|
.sp |
||||||
|
.. |
||||||
|
.\" # DE - end display |
||||||
|
.de DE |
||||||
|
.fi |
||||||
|
.RE |
||||||
|
.sp |
||||||
|
.. |
||||||
|
.\" # SO - start of list of standard options |
||||||
|
.de SO |
||||||
|
'ie '\\$1'' .ds So \\fBoptions\\fR |
||||||
|
'el .ds So \\fB\\$1\\fR |
||||||
|
.SH "STANDARD OPTIONS" |
||||||
|
.LP |
||||||
|
.nf |
||||||
|
.ta 5.5c 11c |
||||||
|
.ft B |
||||||
|
.. |
||||||
|
.\" # SE - end of list of standard options |
||||||
|
.de SE |
||||||
|
.fi |
||||||
|
.ft R |
||||||
|
.LP |
||||||
|
See the \\*(So manual entry for details on the standard options. |
||||||
|
.. |
||||||
|
.\" # OP - start of full description for a single option |
||||||
|
.de OP |
||||||
|
.LP |
||||||
|
.nf |
||||||
|
.ta 4c |
||||||
|
Command-Line Name: \\fB\\$1\\fR |
||||||
|
Database Name: \\fB\\$2\\fR |
||||||
|
Database Class: \\fB\\$3\\fR |
||||||
|
.fi |
||||||
|
.IP |
||||||
|
.. |
||||||
|
.\" # CS - begin code excerpt |
||||||
|
.de CS |
||||||
|
.RS |
||||||
|
.nf |
||||||
|
.ta .25i .5i .75i 1i |
||||||
|
.. |
||||||
|
.\" # CE - end code excerpt |
||||||
|
.de CE |
||||||
|
.fi |
||||||
|
.RE |
||||||
|
.. |
||||||
|
.\" # UL - underline word |
||||||
|
.de UL |
||||||
|
\\$1\l'|0\(ul'\\$2 |
||||||
|
.. |
||||||
|
.\" # QW - apply quotation marks to word |
||||||
|
.de QW |
||||||
|
.ie '\\*(lq'"' ``\\$1''\\$2 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el \\*(lq\\$1\\*(rq\\$2 |
||||||
|
.. |
||||||
|
.\" # PQ - apply parens and quotation marks to word |
||||||
|
.de PQ |
||||||
|
.ie '\\*(lq'"' (``\\$1''\\$2)\\$3 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el (\\*(lq\\$1\\*(rq\\$2)\\$3 |
||||||
|
.. |
||||||
|
.\" # QR - quoted range |
||||||
|
.de QR |
||||||
|
.ie '\\*(lq'"' ``\\$1''\\-``\\$2''\\$3 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el \\*(lq\\$1\\*(rq\\-\\*(lq\\$2\\*(rq\\$3 |
||||||
|
.. |
||||||
|
.\" # MT - "empty" string |
||||||
|
.de MT |
||||||
|
.QW "" |
||||||
|
.. |
||||||
|
.BS |
||||||
|
.SH NAME |
||||||
|
tomlish_module_tomlish \- tomlish toml parser |
||||||
|
.SH SYNOPSIS |
||||||
|
package require \fBtomlish\fR |
||||||
|
.sp |
||||||
|
\fBjson_to_toml\fR \fIjson\fR |
||||||
|
.sp |
||||||
|
\fBtoml\fR \fIarg\&.\&.\&.\fR |
||||||
|
.sp |
||||||
|
app::\fBdecoder\fR \fIargs\fR |
||||||
|
.sp |
||||||
|
app::\fBencoder\fR \fIargs\fR |
||||||
|
.sp |
||||||
|
.BE |
||||||
|
.SH DESCRIPTION |
||||||
|
.PP |
||||||
|
tomlish is an intermediate representation of toml data in a tree structure (tagged lists representing type information) |
||||||
|
.PP |
||||||
|
The design goals are for tomlish to be whitespace and comment preserving ie byte-for byte preservation during roundtrips from toml to tomlish and back to toml |
||||||
|
.PP |
||||||
|
The tomlish representation can then be converted to a Tcl dict structure or to other formats such as json, |
||||||
|
.PP |
||||||
|
although these other formats are generally unlikely to retain whitespace or comments |
||||||
|
.PP |
||||||
|
The other formats also won't preserve roundtripability e\&.g \\t and a literal tab coming from a toml file will be indistinguishable\&. |
||||||
|
.PP |
||||||
|
A further goal is to allow at least a useful subset of in-place editing operations which also preserve whitespace and comments\&. |
||||||
|
.PP |
||||||
|
e\&.g leaf key value editing, and table reordering/sorting, key-renaming at any level, key insertions/deletions |
||||||
|
.PP |
||||||
|
The API for editing (tomldoc object?) may require explicit setting of type if accessing an existing key |
||||||
|
.PP |
||||||
|
e\&.g setting a key that already exists and is a different type (especially if nested structure such as a table or array) |
||||||
|
.PP |
||||||
|
will need a -type option (-force ?) to force overriding with another type such as an int\&. |
||||||
|
.SH OVERVIEW |
||||||
|
.PP |
||||||
|
overview of tomlish |
||||||
|
.SS CONCEPTS |
||||||
|
.PP |
||||||
|
- |
||||||
|
.SS DEPENDENCIES |
||||||
|
.PP |
||||||
|
packages used by tomlish |
||||||
|
.IP \(bu |
||||||
|
\fBTcl 8\&.6-\fR |
||||||
|
.IP \(bu |
||||||
|
\fBstruct::stack\fR |
||||||
|
.PP |
||||||
|
.SH API |
||||||
|
.SS "NAMESPACE TOMLISH" |
||||||
|
.PP |
||||||
|
Core API functions for tomlish |
||||||
|
.TP |
||||||
|
\fBjson_to_toml\fR \fIjson\fR |
||||||
|
.sp |
||||||
|
.PP |
||||||
|
.SS "NAMESPACE TOMLISH::ENCODE" |
||||||
|
.PP |
||||||
|
.PP |
||||||
|
.SS "NAMESPACE TOMLISH::DECODE" |
||||||
|
.PP |
||||||
|
.TP |
||||||
|
\fBtoml\fR \fIarg\&.\&.\&.\fR |
||||||
|
.sp |
||||||
|
return a Tcl list of tomlish tokens |
||||||
|
.PP |
||||||
|
.SS "NAMESPACE TOMLISH::UTILS" |
||||||
|
.PP |
||||||
|
.PP |
||||||
|
.SS "NAMESPACE TOMLISH::PARSE" |
||||||
|
.PP |
||||||
|
.PP |
||||||
|
.SS "NAMESPACE TOMLISH::APP" |
||||||
|
.PP |
||||||
|
.TP |
||||||
|
app::\fBdecoder\fR \fIargs\fR |
||||||
|
.sp |
||||||
|
read toml on stdin until EOF |
||||||
|
.sp |
||||||
|
on error - returns non-zero exit code and writes error on stderr |
||||||
|
.sp |
||||||
|
on success - returns zero exit code and writes JSON encoding of the data on stdout |
||||||
|
.sp |
||||||
|
This decoder is intended to be compatible with toml-test |
||||||
|
.TP |
||||||
|
app::\fBencoder\fR \fIargs\fR |
||||||
|
.sp |
||||||
|
read JSON on stdin until EOF |
||||||
|
.sp |
||||||
|
return non-zero exitcode if JSON data cannot be converted to a valid TOML representation |
||||||
|
.sp |
||||||
|
return zero exitcode and TOML data on stdout if JSON data can be converted\&. |
||||||
|
.sp |
||||||
|
This encoder is intended to be compatible with toml-test |
||||||
|
.PP |
||||||
|
.SS "NAMESPACE TOMLISH::LIB" |
||||||
|
.PP |
||||||
|
Secondary functions that are part of the API |
||||||
|
.PP |
||||||
|
.SH KEYWORDS |
||||||
|
configuration, module, parsing, toml |
||||||
|
.SH COPYRIGHT |
||||||
|
.nf |
||||||
|
Copyright (c) 2024 |
||||||
|
|
||||||
|
.fi |
||||||
@ -0,0 +1,356 @@ |
|||||||
|
'\" |
||||||
|
'\" Generated from file '_module_tomlish-1\&.1\&.5\&.tm\&.man' by tcllib/doctools with format 'nroff' |
||||||
|
'\" Copyright (c) 2024 |
||||||
|
'\" |
||||||
|
.TH "tomlish_module_tomlish" 0 1\&.1\&.5 doc "tomlish" |
||||||
|
.\" The -*- nroff -*- definitions below are for supplemental macros used |
||||||
|
.\" in Tcl/Tk manual entries. |
||||||
|
.\" |
||||||
|
.\" .AP type name in/out ?indent? |
||||||
|
.\" Start paragraph describing an argument to a library procedure. |
||||||
|
.\" type is type of argument (int, etc.), in/out is either "in", "out", |
||||||
|
.\" or "in/out" to describe whether procedure reads or modifies arg, |
||||||
|
.\" and indent is equivalent to second arg of .IP (shouldn't ever be |
||||||
|
.\" needed; use .AS below instead) |
||||||
|
.\" |
||||||
|
.\" .AS ?type? ?name? |
||||||
|
.\" Give maximum sizes of arguments for setting tab stops. Type and |
||||||
|
.\" name are examples of largest possible arguments that will be passed |
||||||
|
.\" to .AP later. If args are omitted, default tab stops are used. |
||||||
|
.\" |
||||||
|
.\" .BS |
||||||
|
.\" Start box enclosure. From here until next .BE, everything will be |
||||||
|
.\" enclosed in one large box. |
||||||
|
.\" |
||||||
|
.\" .BE |
||||||
|
.\" End of box enclosure. |
||||||
|
.\" |
||||||
|
.\" .CS |
||||||
|
.\" Begin code excerpt. |
||||||
|
.\" |
||||||
|
.\" .CE |
||||||
|
.\" End code excerpt. |
||||||
|
.\" |
||||||
|
.\" .VS ?version? ?br? |
||||||
|
.\" Begin vertical sidebar, for use in marking newly-changed parts |
||||||
|
.\" of man pages. The first argument is ignored and used for recording |
||||||
|
.\" the version when the .VS was added, so that the sidebars can be |
||||||
|
.\" found and removed when they reach a certain age. If another argument |
||||||
|
.\" is present, then a line break is forced before starting the sidebar. |
||||||
|
.\" |
||||||
|
.\" .VE |
||||||
|
.\" End of vertical sidebar. |
||||||
|
.\" |
||||||
|
.\" .DS |
||||||
|
.\" Begin an indented unfilled display. |
||||||
|
.\" |
||||||
|
.\" .DE |
||||||
|
.\" End of indented unfilled display. |
||||||
|
.\" |
||||||
|
.\" .SO ?manpage? |
||||||
|
.\" Start of list of standard options for a Tk widget. The manpage |
||||||
|
.\" argument defines where to look up the standard options; if |
||||||
|
.\" omitted, defaults to "options". The options follow on successive |
||||||
|
.\" lines, in three columns separated by tabs. |
||||||
|
.\" |
||||||
|
.\" .SE |
||||||
|
.\" End of list of standard options for a Tk widget. |
||||||
|
.\" |
||||||
|
.\" .OP cmdName dbName dbClass |
||||||
|
.\" Start of description of a specific option. cmdName gives the |
||||||
|
.\" option's name as specified in the class command, dbName gives |
||||||
|
.\" the option's name in the option database, and dbClass gives |
||||||
|
.\" the option's class in the option database. |
||||||
|
.\" |
||||||
|
.\" .UL arg1 arg2 |
||||||
|
.\" Print arg1 underlined, then print arg2 normally. |
||||||
|
.\" |
||||||
|
.\" .QW arg1 ?arg2? |
||||||
|
.\" Print arg1 in quotes, then arg2 normally (for trailing punctuation). |
||||||
|
.\" |
||||||
|
.\" .PQ arg1 ?arg2? |
||||||
|
.\" Print an open parenthesis, arg1 in quotes, then arg2 normally |
||||||
|
.\" (for trailing punctuation) and then a closing parenthesis. |
||||||
|
.\" |
||||||
|
.\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. |
||||||
|
.if t .wh -1.3i ^B |
||||||
|
.nr ^l \n(.l |
||||||
|
.ad b |
||||||
|
.\" # Start an argument description |
||||||
|
.de AP |
||||||
|
.ie !"\\$4"" .TP \\$4 |
||||||
|
.el \{\ |
||||||
|
. ie !"\\$2"" .TP \\n()Cu |
||||||
|
. el .TP 15 |
||||||
|
.\} |
||||||
|
.ta \\n()Au \\n()Bu |
||||||
|
.ie !"\\$3"" \{\ |
||||||
|
\&\\$1 \\fI\\$2\\fP (\\$3) |
||||||
|
.\".b |
||||||
|
.\} |
||||||
|
.el \{\ |
||||||
|
.br |
||||||
|
.ie !"\\$2"" \{\ |
||||||
|
\&\\$1 \\fI\\$2\\fP |
||||||
|
.\} |
||||||
|
.el \{\ |
||||||
|
\&\\fI\\$1\\fP |
||||||
|
.\} |
||||||
|
.\} |
||||||
|
.. |
||||||
|
.\" # define tabbing values for .AP |
||||||
|
.de AS |
||||||
|
.nr )A 10n |
||||||
|
.if !"\\$1"" .nr )A \\w'\\$1'u+3n |
||||||
|
.nr )B \\n()Au+15n |
||||||
|
.\" |
||||||
|
.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n |
||||||
|
.nr )C \\n()Bu+\\w'(in/out)'u+2n |
||||||
|
.. |
||||||
|
.AS Tcl_Interp Tcl_CreateInterp in/out |
||||||
|
.\" # BS - start boxed text |
||||||
|
.\" # ^y = starting y location |
||||||
|
.\" # ^b = 1 |
||||||
|
.de BS |
||||||
|
.br |
||||||
|
.mk ^y |
||||||
|
.nr ^b 1u |
||||||
|
.if n .nf |
||||||
|
.if n .ti 0 |
||||||
|
.if n \l'\\n(.lu\(ul' |
||||||
|
.if n .fi |
||||||
|
.. |
||||||
|
.\" # BE - end boxed text (draw box now) |
||||||
|
.de BE |
||||||
|
.nf |
||||||
|
.ti 0 |
||||||
|
.mk ^t |
||||||
|
.ie n \l'\\n(^lu\(ul' |
||||||
|
.el \{\ |
||||||
|
.\" Draw four-sided box normally, but don't draw top of |
||||||
|
.\" box if the box started on an earlier page. |
||||||
|
.ie !\\n(^b-1 \{\ |
||||||
|
\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' |
||||||
|
.\} |
||||||
|
.el \}\ |
||||||
|
\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' |
||||||
|
.\} |
||||||
|
.\} |
||||||
|
.fi |
||||||
|
.br |
||||||
|
.nr ^b 0 |
||||||
|
.. |
||||||
|
.\" # VS - start vertical sidebar |
||||||
|
.\" # ^Y = starting y location |
||||||
|
.\" # ^v = 1 (for troff; for nroff this doesn't matter) |
||||||
|
.de VS |
||||||
|
.if !"\\$2"" .br |
||||||
|
.mk ^Y |
||||||
|
.ie n 'mc \s12\(br\s0 |
||||||
|
.el .nr ^v 1u |
||||||
|
.. |
||||||
|
.\" # VE - end of vertical sidebar |
||||||
|
.de VE |
||||||
|
.ie n 'mc |
||||||
|
.el \{\ |
||||||
|
.ev 2 |
||||||
|
.nf |
||||||
|
.ti 0 |
||||||
|
.mk ^t |
||||||
|
\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' |
||||||
|
.sp -1 |
||||||
|
.fi |
||||||
|
.ev |
||||||
|
.\} |
||||||
|
.nr ^v 0 |
||||||
|
.. |
||||||
|
.\" # Special macro to handle page bottom: finish off current |
||||||
|
.\" # box/sidebar if in box/sidebar mode, then invoked standard |
||||||
|
.\" # page bottom macro. |
||||||
|
.de ^B |
||||||
|
.ev 2 |
||||||
|
'ti 0 |
||||||
|
'nf |
||||||
|
.mk ^t |
||||||
|
.if \\n(^b \{\ |
||||||
|
.\" Draw three-sided box if this is the box's first page, |
||||||
|
.\" draw two sides but no top otherwise. |
||||||
|
.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c |
||||||
|
.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c |
||||||
|
.\} |
||||||
|
.if \\n(^v \{\ |
||||||
|
.nr ^x \\n(^tu+1v-\\n(^Yu |
||||||
|
\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c |
||||||
|
.\} |
||||||
|
.bp |
||||||
|
'fi |
||||||
|
.ev |
||||||
|
.if \\n(^b \{\ |
||||||
|
.mk ^y |
||||||
|
.nr ^b 2 |
||||||
|
.\} |
||||||
|
.if \\n(^v \{\ |
||||||
|
.mk ^Y |
||||||
|
.\} |
||||||
|
.. |
||||||
|
.\" # DS - begin display |
||||||
|
.de DS |
||||||
|
.RS |
||||||
|
.nf |
||||||
|
.sp |
||||||
|
.. |
||||||
|
.\" # DE - end display |
||||||
|
.de DE |
||||||
|
.fi |
||||||
|
.RE |
||||||
|
.sp |
||||||
|
.. |
||||||
|
.\" # SO - start of list of standard options |
||||||
|
.de SO |
||||||
|
'ie '\\$1'' .ds So \\fBoptions\\fR |
||||||
|
'el .ds So \\fB\\$1\\fR |
||||||
|
.SH "STANDARD OPTIONS" |
||||||
|
.LP |
||||||
|
.nf |
||||||
|
.ta 5.5c 11c |
||||||
|
.ft B |
||||||
|
.. |
||||||
|
.\" # SE - end of list of standard options |
||||||
|
.de SE |
||||||
|
.fi |
||||||
|
.ft R |
||||||
|
.LP |
||||||
|
See the \\*(So manual entry for details on the standard options. |
||||||
|
.. |
||||||
|
.\" # OP - start of full description for a single option |
||||||
|
.de OP |
||||||
|
.LP |
||||||
|
.nf |
||||||
|
.ta 4c |
||||||
|
Command-Line Name: \\fB\\$1\\fR |
||||||
|
Database Name: \\fB\\$2\\fR |
||||||
|
Database Class: \\fB\\$3\\fR |
||||||
|
.fi |
||||||
|
.IP |
||||||
|
.. |
||||||
|
.\" # CS - begin code excerpt |
||||||
|
.de CS |
||||||
|
.RS |
||||||
|
.nf |
||||||
|
.ta .25i .5i .75i 1i |
||||||
|
.. |
||||||
|
.\" # CE - end code excerpt |
||||||
|
.de CE |
||||||
|
.fi |
||||||
|
.RE |
||||||
|
.. |
||||||
|
.\" # UL - underline word |
||||||
|
.de UL |
||||||
|
\\$1\l'|0\(ul'\\$2 |
||||||
|
.. |
||||||
|
.\" # QW - apply quotation marks to word |
||||||
|
.de QW |
||||||
|
.ie '\\*(lq'"' ``\\$1''\\$2 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el \\*(lq\\$1\\*(rq\\$2 |
||||||
|
.. |
||||||
|
.\" # PQ - apply parens and quotation marks to word |
||||||
|
.de PQ |
||||||
|
.ie '\\*(lq'"' (``\\$1''\\$2)\\$3 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el (\\*(lq\\$1\\*(rq\\$2)\\$3 |
||||||
|
.. |
||||||
|
.\" # QR - quoted range |
||||||
|
.de QR |
||||||
|
.ie '\\*(lq'"' ``\\$1''\\-``\\$2''\\$3 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el \\*(lq\\$1\\*(rq\\-\\*(lq\\$2\\*(rq\\$3 |
||||||
|
.. |
||||||
|
.\" # MT - "empty" string |
||||||
|
.de MT |
||||||
|
.QW "" |
||||||
|
.. |
||||||
|
.BS |
||||||
|
.SH NAME |
||||||
|
tomlish_module_tomlish \- tomlish toml parser |
||||||
|
.SH SYNOPSIS |
||||||
|
package require \fBtomlish\fR |
||||||
|
.sp |
||||||
|
\fBjson_to_toml\fR \fIjson\fR |
||||||
|
.sp |
||||||
|
\fBtoml\fR \fIarg\&.\&.\&.\fR |
||||||
|
.sp |
||||||
|
.BE |
||||||
|
.SH DESCRIPTION |
||||||
|
.PP |
||||||
|
tomlish is an intermediate representation of toml data in a tree structure (tagged lists representing type information) |
||||||
|
.PP |
||||||
|
The design goals are for tomlish to be whitespace and comment preserving ie byte-for byte preservation during roundtrips from toml to tomlish and back to toml |
||||||
|
.PP |
||||||
|
The tomlish representation can then be converted to a Tcl dict structure or to other formats such as json, |
||||||
|
.PP |
||||||
|
although these other formats are generally unlikely to retain whitespace or comments |
||||||
|
.PP |
||||||
|
The other formats also won't preserve roundtripability e\&.g \\t and a literal tab coming from a toml file will be indistinguishable\&. |
||||||
|
.PP |
||||||
|
A further goal is to allow at least a useful subset of in-place editing operations which also preserve whitespace and comments\&. |
||||||
|
.PP |
||||||
|
e\&.g leaf key value editing, and table reordering/sorting, key-renaming at any level, key insertions/deletions |
||||||
|
.PP |
||||||
|
The API for editing (tomldoc object?) may require explicit setting of type if accessing an existing key |
||||||
|
.PP |
||||||
|
e\&.g setting a key that already exists and is a different type (especially if nested structure such as a table or array) |
||||||
|
.PP |
||||||
|
will need a -type option (-force ?) to force overriding with another type such as an int\&. |
||||||
|
.SH OVERVIEW |
||||||
|
.PP |
||||||
|
overview of tomlish |
||||||
|
.SS CONCEPTS |
||||||
|
.PP |
||||||
|
- |
||||||
|
.SS DEPENDENCIES |
||||||
|
.PP |
||||||
|
packages used by tomlish |
||||||
|
.IP \(bu |
||||||
|
\fBTcl 8\&.6-\fR |
||||||
|
.IP \(bu |
||||||
|
\fBstruct::stack\fR |
||||||
|
.PP |
||||||
|
.SH API |
||||||
|
.SS "NAMESPACE TOMLISH" |
||||||
|
.PP |
||||||
|
Core API functions for tomlish |
||||||
|
.TP |
||||||
|
\fBjson_to_toml\fR \fIjson\fR |
||||||
|
.sp |
||||||
|
.PP |
||||||
|
.SS "NAMESPACE TOMLISH::ENCODE" |
||||||
|
.PP |
||||||
|
.PP |
||||||
|
.SS "NAMESPACE TOMLISH::DECODE" |
||||||
|
.PP |
||||||
|
.TP |
||||||
|
\fBtoml\fR \fIarg\&.\&.\&.\fR |
||||||
|
.sp |
||||||
|
return a Tcl list of tomlish tokens |
||||||
|
.PP |
||||||
|
.SS "NAMESPACE TOMLISH::UTILS" |
||||||
|
.PP |
||||||
|
.PP |
||||||
|
.SS "NAMESPACE TOMLISH::PARSE" |
||||||
|
.PP |
||||||
|
.PP |
||||||
|
.SS "NAMESPACE TOMLISH::APP" |
||||||
|
.PP |
||||||
|
.PP |
||||||
|
.SS "NAMESPACE TOMLISH::LIB" |
||||||
|
.PP |
||||||
|
Secondary functions that are part of the API |
||||||
|
.PP |
||||||
|
.SH KEYWORDS |
||||||
|
configuration, module, parsing, toml |
||||||
|
.SH COPYRIGHT |
||||||
|
.nf |
||||||
|
Copyright (c) 2024 |
||||||
|
|
||||||
|
.fi |
||||||
@ -0,0 +1,369 @@ |
|||||||
|
'\" |
||||||
|
'\" Generated from file '_module_tomlish-1\&.1\&.6\&.tm\&.man' by tcllib/doctools with format 'nroff' |
||||||
|
'\" Copyright (c) 2024 |
||||||
|
'\" |
||||||
|
.TH "tomlish_module_tomlish" 0 1\&.1\&.6 doc "tomlish" |
||||||
|
.\" The -*- nroff -*- definitions below are for supplemental macros used |
||||||
|
.\" in Tcl/Tk manual entries. |
||||||
|
.\" |
||||||
|
.\" .AP type name in/out ?indent? |
||||||
|
.\" Start paragraph describing an argument to a library procedure. |
||||||
|
.\" type is type of argument (int, etc.), in/out is either "in", "out", |
||||||
|
.\" or "in/out" to describe whether procedure reads or modifies arg, |
||||||
|
.\" and indent is equivalent to second arg of .IP (shouldn't ever be |
||||||
|
.\" needed; use .AS below instead) |
||||||
|
.\" |
||||||
|
.\" .AS ?type? ?name? |
||||||
|
.\" Give maximum sizes of arguments for setting tab stops. Type and |
||||||
|
.\" name are examples of largest possible arguments that will be passed |
||||||
|
.\" to .AP later. If args are omitted, default tab stops are used. |
||||||
|
.\" |
||||||
|
.\" .BS |
||||||
|
.\" Start box enclosure. From here until next .BE, everything will be |
||||||
|
.\" enclosed in one large box. |
||||||
|
.\" |
||||||
|
.\" .BE |
||||||
|
.\" End of box enclosure. |
||||||
|
.\" |
||||||
|
.\" .CS |
||||||
|
.\" Begin code excerpt. |
||||||
|
.\" |
||||||
|
.\" .CE |
||||||
|
.\" End code excerpt. |
||||||
|
.\" |
||||||
|
.\" .VS ?version? ?br? |
||||||
|
.\" Begin vertical sidebar, for use in marking newly-changed parts |
||||||
|
.\" of man pages. The first argument is ignored and used for recording |
||||||
|
.\" the version when the .VS was added, so that the sidebars can be |
||||||
|
.\" found and removed when they reach a certain age. If another argument |
||||||
|
.\" is present, then a line break is forced before starting the sidebar. |
||||||
|
.\" |
||||||
|
.\" .VE |
||||||
|
.\" End of vertical sidebar. |
||||||
|
.\" |
||||||
|
.\" .DS |
||||||
|
.\" Begin an indented unfilled display. |
||||||
|
.\" |
||||||
|
.\" .DE |
||||||
|
.\" End of indented unfilled display. |
||||||
|
.\" |
||||||
|
.\" .SO ?manpage? |
||||||
|
.\" Start of list of standard options for a Tk widget. The manpage |
||||||
|
.\" argument defines where to look up the standard options; if |
||||||
|
.\" omitted, defaults to "options". The options follow on successive |
||||||
|
.\" lines, in three columns separated by tabs. |
||||||
|
.\" |
||||||
|
.\" .SE |
||||||
|
.\" End of list of standard options for a Tk widget. |
||||||
|
.\" |
||||||
|
.\" .OP cmdName dbName dbClass |
||||||
|
.\" Start of description of a specific option. cmdName gives the |
||||||
|
.\" option's name as specified in the class command, dbName gives |
||||||
|
.\" the option's name in the option database, and dbClass gives |
||||||
|
.\" the option's class in the option database. |
||||||
|
.\" |
||||||
|
.\" .UL arg1 arg2 |
||||||
|
.\" Print arg1 underlined, then print arg2 normally. |
||||||
|
.\" |
||||||
|
.\" .QW arg1 ?arg2? |
||||||
|
.\" Print arg1 in quotes, then arg2 normally (for trailing punctuation). |
||||||
|
.\" |
||||||
|
.\" .PQ arg1 ?arg2? |
||||||
|
.\" Print an open parenthesis, arg1 in quotes, then arg2 normally |
||||||
|
.\" (for trailing punctuation) and then a closing parenthesis. |
||||||
|
.\" |
||||||
|
.\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. |
||||||
|
.if t .wh -1.3i ^B |
||||||
|
.nr ^l \n(.l |
||||||
|
.ad b |
||||||
|
.\" # Start an argument description |
||||||
|
.de AP |
||||||
|
.ie !"\\$4"" .TP \\$4 |
||||||
|
.el \{\ |
||||||
|
. ie !"\\$2"" .TP \\n()Cu |
||||||
|
. el .TP 15 |
||||||
|
.\} |
||||||
|
.ta \\n()Au \\n()Bu |
||||||
|
.ie !"\\$3"" \{\ |
||||||
|
\&\\$1 \\fI\\$2\\fP (\\$3) |
||||||
|
.\".b |
||||||
|
.\} |
||||||
|
.el \{\ |
||||||
|
.br |
||||||
|
.ie !"\\$2"" \{\ |
||||||
|
\&\\$1 \\fI\\$2\\fP |
||||||
|
.\} |
||||||
|
.el \{\ |
||||||
|
\&\\fI\\$1\\fP |
||||||
|
.\} |
||||||
|
.\} |
||||||
|
.. |
||||||
|
.\" # define tabbing values for .AP |
||||||
|
.de AS |
||||||
|
.nr )A 10n |
||||||
|
.if !"\\$1"" .nr )A \\w'\\$1'u+3n |
||||||
|
.nr )B \\n()Au+15n |
||||||
|
.\" |
||||||
|
.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n |
||||||
|
.nr )C \\n()Bu+\\w'(in/out)'u+2n |
||||||
|
.. |
||||||
|
.AS Tcl_Interp Tcl_CreateInterp in/out |
||||||
|
.\" # BS - start boxed text |
||||||
|
.\" # ^y = starting y location |
||||||
|
.\" # ^b = 1 |
||||||
|
.de BS |
||||||
|
.br |
||||||
|
.mk ^y |
||||||
|
.nr ^b 1u |
||||||
|
.if n .nf |
||||||
|
.if n .ti 0 |
||||||
|
.if n \l'\\n(.lu\(ul' |
||||||
|
.if n .fi |
||||||
|
.. |
||||||
|
.\" # BE - end boxed text (draw box now) |
||||||
|
.de BE |
||||||
|
.nf |
||||||
|
.ti 0 |
||||||
|
.mk ^t |
||||||
|
.ie n \l'\\n(^lu\(ul' |
||||||
|
.el \{\ |
||||||
|
.\" Draw four-sided box normally, but don't draw top of |
||||||
|
.\" box if the box started on an earlier page. |
||||||
|
.ie !\\n(^b-1 \{\ |
||||||
|
\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' |
||||||
|
.\} |
||||||
|
.el \}\ |
||||||
|
\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' |
||||||
|
.\} |
||||||
|
.\} |
||||||
|
.fi |
||||||
|
.br |
||||||
|
.nr ^b 0 |
||||||
|
.. |
||||||
|
.\" # VS - start vertical sidebar |
||||||
|
.\" # ^Y = starting y location |
||||||
|
.\" # ^v = 1 (for troff; for nroff this doesn't matter) |
||||||
|
.de VS |
||||||
|
.if !"\\$2"" .br |
||||||
|
.mk ^Y |
||||||
|
.ie n 'mc \s12\(br\s0 |
||||||
|
.el .nr ^v 1u |
||||||
|
.. |
||||||
|
.\" # VE - end of vertical sidebar |
||||||
|
.de VE |
||||||
|
.ie n 'mc |
||||||
|
.el \{\ |
||||||
|
.ev 2 |
||||||
|
.nf |
||||||
|
.ti 0 |
||||||
|
.mk ^t |
||||||
|
\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' |
||||||
|
.sp -1 |
||||||
|
.fi |
||||||
|
.ev |
||||||
|
.\} |
||||||
|
.nr ^v 0 |
||||||
|
.. |
||||||
|
.\" # Special macro to handle page bottom: finish off current |
||||||
|
.\" # box/sidebar if in box/sidebar mode, then invoked standard |
||||||
|
.\" # page bottom macro. |
||||||
|
.de ^B |
||||||
|
.ev 2 |
||||||
|
'ti 0 |
||||||
|
'nf |
||||||
|
.mk ^t |
||||||
|
.if \\n(^b \{\ |
||||||
|
.\" Draw three-sided box if this is the box's first page, |
||||||
|
.\" draw two sides but no top otherwise. |
||||||
|
.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c |
||||||
|
.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c |
||||||
|
.\} |
||||||
|
.if \\n(^v \{\ |
||||||
|
.nr ^x \\n(^tu+1v-\\n(^Yu |
||||||
|
\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c |
||||||
|
.\} |
||||||
|
.bp |
||||||
|
'fi |
||||||
|
.ev |
||||||
|
.if \\n(^b \{\ |
||||||
|
.mk ^y |
||||||
|
.nr ^b 2 |
||||||
|
.\} |
||||||
|
.if \\n(^v \{\ |
||||||
|
.mk ^Y |
||||||
|
.\} |
||||||
|
.. |
||||||
|
.\" # DS - begin display |
||||||
|
.de DS |
||||||
|
.RS |
||||||
|
.nf |
||||||
|
.sp |
||||||
|
.. |
||||||
|
.\" # DE - end display |
||||||
|
.de DE |
||||||
|
.fi |
||||||
|
.RE |
||||||
|
.sp |
||||||
|
.. |
||||||
|
.\" # SO - start of list of standard options |
||||||
|
.de SO |
||||||
|
'ie '\\$1'' .ds So \\fBoptions\\fR |
||||||
|
'el .ds So \\fB\\$1\\fR |
||||||
|
.SH "STANDARD OPTIONS" |
||||||
|
.LP |
||||||
|
.nf |
||||||
|
.ta 5.5c 11c |
||||||
|
.ft B |
||||||
|
.. |
||||||
|
.\" # SE - end of list of standard options |
||||||
|
.de SE |
||||||
|
.fi |
||||||
|
.ft R |
||||||
|
.LP |
||||||
|
See the \\*(So manual entry for details on the standard options. |
||||||
|
.. |
||||||
|
.\" # OP - start of full description for a single option |
||||||
|
.de OP |
||||||
|
.LP |
||||||
|
.nf |
||||||
|
.ta 4c |
||||||
|
Command-Line Name: \\fB\\$1\\fR |
||||||
|
Database Name: \\fB\\$2\\fR |
||||||
|
Database Class: \\fB\\$3\\fR |
||||||
|
.fi |
||||||
|
.IP |
||||||
|
.. |
||||||
|
.\" # CS - begin code excerpt |
||||||
|
.de CS |
||||||
|
.RS |
||||||
|
.nf |
||||||
|
.ta .25i .5i .75i 1i |
||||||
|
.. |
||||||
|
.\" # CE - end code excerpt |
||||||
|
.de CE |
||||||
|
.fi |
||||||
|
.RE |
||||||
|
.. |
||||||
|
.\" # UL - underline word |
||||||
|
.de UL |
||||||
|
\\$1\l'|0\(ul'\\$2 |
||||||
|
.. |
||||||
|
.\" # QW - apply quotation marks to word |
||||||
|
.de QW |
||||||
|
.ie '\\*(lq'"' ``\\$1''\\$2 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el \\*(lq\\$1\\*(rq\\$2 |
||||||
|
.. |
||||||
|
.\" # PQ - apply parens and quotation marks to word |
||||||
|
.de PQ |
||||||
|
.ie '\\*(lq'"' (``\\$1''\\$2)\\$3 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el (\\*(lq\\$1\\*(rq\\$2)\\$3 |
||||||
|
.. |
||||||
|
.\" # QR - quoted range |
||||||
|
.de QR |
||||||
|
.ie '\\*(lq'"' ``\\$1''\\-``\\$2''\\$3 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el \\*(lq\\$1\\*(rq\\-\\*(lq\\$2\\*(rq\\$3 |
||||||
|
.. |
||||||
|
.\" # MT - "empty" string |
||||||
|
.de MT |
||||||
|
.QW "" |
||||||
|
.. |
||||||
|
.BS |
||||||
|
.SH NAME |
||||||
|
tomlish_module_tomlish \- tomlish toml parser |
||||||
|
.SH SYNOPSIS |
||||||
|
package require \fBtomlish\fR |
||||||
|
.sp |
||||||
|
\fBtypedjson_to_toml\fR \fIjson\fR |
||||||
|
.sp |
||||||
|
\fBlindex_resolve_basic\fR \fIlist\fR \fIindex\fR |
||||||
|
.sp |
||||||
|
.BE |
||||||
|
.SH DESCRIPTION |
||||||
|
.PP |
||||||
|
tomlish is an intermediate representation of toml data in a tree structure (tagged lists representing type information) |
||||||
|
.PP |
||||||
|
The design goals are for tomlish to be whitespace and comment preserving ie byte-for byte preservation during roundtrips from toml to tomlish and back to toml |
||||||
|
.PP |
||||||
|
The tomlish representation can then be converted to a Tcl dict structure or to other formats such as json, |
||||||
|
.PP |
||||||
|
although these other formats are generally unlikely to retain whitespace or comments |
||||||
|
.PP |
||||||
|
The other formats also won't preserve roundtripability e\&.g \\t and a literal tab coming from a toml file will be indistinguishable\&. |
||||||
|
.PP |
||||||
|
A further goal is to allow at least a useful subset of in-place editing operations which also preserve whitespace and comments\&. |
||||||
|
.PP |
||||||
|
e\&.g leaf key value editing, and table reordering/sorting, key-renaming at any level, key insertions/deletions |
||||||
|
.PP |
||||||
|
The API for editing (tomldoc object?) may require explicit setting of type if accessing an existing key |
||||||
|
.PP |
||||||
|
e\&.g setting a key that already exists and is a different type (especially if nested structure such as a table or array) |
||||||
|
.PP |
||||||
|
will need a -type option (-force ?) to force overriding with another type such as an int\&. |
||||||
|
.SH OVERVIEW |
||||||
|
.PP |
||||||
|
overview of tomlish |
||||||
|
.SS CONCEPTS |
||||||
|
.PP |
||||||
|
- |
||||||
|
.SS DEPENDENCIES |
||||||
|
.PP |
||||||
|
packages used by tomlish |
||||||
|
.IP \(bu |
||||||
|
\fBTcl 8\&.6-\fR |
||||||
|
.IP \(bu |
||||||
|
\fBstruct::stack\fR |
||||||
|
.PP |
||||||
|
.SH API |
||||||
|
.SS "NAMESPACE TOMLISH" |
||||||
|
.PP |
||||||
|
Core API functions for tomlish |
||||||
|
.TP |
||||||
|
\fBtypedjson_to_toml\fR \fIjson\fR |
||||||
|
.sp |
||||||
|
.PP |
||||||
|
.SS "NAMESPACE TOMLISH::ENCODE" |
||||||
|
.PP |
||||||
|
.PP |
||||||
|
.SS "NAMESPACE TOMLISH::DECODE" |
||||||
|
.PP |
||||||
|
.PP |
||||||
|
.SS "NAMESPACE TOMLISH::UTILS" |
||||||
|
.PP |
||||||
|
.PP |
||||||
|
.SS "NAMESPACE TOMLISH::PARSE" |
||||||
|
.PP |
||||||
|
.PP |
||||||
|
.SS "NAMESPACE TOMLISH::APP" |
||||||
|
.PP |
||||||
|
.PP |
||||||
|
.SS "NAMESPACE TOMLISH::LIB" |
||||||
|
.PP |
||||||
|
Secondary functions that are part of the API |
||||||
|
.PP |
||||||
|
.SS "NAMESPACE TOMLISH::SYSTEM" |
||||||
|
.PP |
||||||
|
.TP |
||||||
|
\fBlindex_resolve_basic\fR \fIlist\fR \fIindex\fR |
||||||
|
.sp |
||||||
|
Accepts index of the forms accepted by Tcl's list commands\&. (e\&.g compound indices such as 3+1 end-2) |
||||||
|
.sp |
||||||
|
returns -1 for out of range at either end, or a valid integer index |
||||||
|
.sp |
||||||
|
Unlike lindex_resolve; lindex_resolve_basic can't determine if an out of range index was out of range at the lower or upper bound |
||||||
|
.sp |
||||||
|
This is only likely to be faster than average over lindex_resolve for Tcl which has the builtin lseq command |
||||||
|
.sp |
||||||
|
The performance advantage is more likely to be present when using compound indexes such as $x+1 or end-1 |
||||||
|
.sp |
||||||
|
For pure integer indices the performance should be equivalent |
||||||
|
.PP |
||||||
|
.SH KEYWORDS |
||||||
|
configuration, module, parsing, toml |
||||||
|
.SH COPYRIGHT |
||||||
|
.nf |
||||||
|
Copyright (c) 2024 |
||||||
|
|
||||||
|
.fi |
||||||
@ -0,0 +1,326 @@ |
|||||||
|
'\" |
||||||
|
'\" Generated from file '_module_icomm-0\&.1\&.0\&.tm\&.man' by tcllib/doctools with format 'nroff' |
||||||
|
'\" Copyright (c) 2025 |
||||||
|
'\" |
||||||
|
.TH "shellspy_module_punk::icomm" 0 0\&.1\&.0 doc "-" |
||||||
|
.\" The -*- nroff -*- definitions below are for supplemental macros used |
||||||
|
.\" in Tcl/Tk manual entries. |
||||||
|
.\" |
||||||
|
.\" .AP type name in/out ?indent? |
||||||
|
.\" Start paragraph describing an argument to a library procedure. |
||||||
|
.\" type is type of argument (int, etc.), in/out is either "in", "out", |
||||||
|
.\" or "in/out" to describe whether procedure reads or modifies arg, |
||||||
|
.\" and indent is equivalent to second arg of .IP (shouldn't ever be |
||||||
|
.\" needed; use .AS below instead) |
||||||
|
.\" |
||||||
|
.\" .AS ?type? ?name? |
||||||
|
.\" Give maximum sizes of arguments for setting tab stops. Type and |
||||||
|
.\" name are examples of largest possible arguments that will be passed |
||||||
|
.\" to .AP later. If args are omitted, default tab stops are used. |
||||||
|
.\" |
||||||
|
.\" .BS |
||||||
|
.\" Start box enclosure. From here until next .BE, everything will be |
||||||
|
.\" enclosed in one large box. |
||||||
|
.\" |
||||||
|
.\" .BE |
||||||
|
.\" End of box enclosure. |
||||||
|
.\" |
||||||
|
.\" .CS |
||||||
|
.\" Begin code excerpt. |
||||||
|
.\" |
||||||
|
.\" .CE |
||||||
|
.\" End code excerpt. |
||||||
|
.\" |
||||||
|
.\" .VS ?version? ?br? |
||||||
|
.\" Begin vertical sidebar, for use in marking newly-changed parts |
||||||
|
.\" of man pages. The first argument is ignored and used for recording |
||||||
|
.\" the version when the .VS was added, so that the sidebars can be |
||||||
|
.\" found and removed when they reach a certain age. If another argument |
||||||
|
.\" is present, then a line break is forced before starting the sidebar. |
||||||
|
.\" |
||||||
|
.\" .VE |
||||||
|
.\" End of vertical sidebar. |
||||||
|
.\" |
||||||
|
.\" .DS |
||||||
|
.\" Begin an indented unfilled display. |
||||||
|
.\" |
||||||
|
.\" .DE |
||||||
|
.\" End of indented unfilled display. |
||||||
|
.\" |
||||||
|
.\" .SO ?manpage? |
||||||
|
.\" Start of list of standard options for a Tk widget. The manpage |
||||||
|
.\" argument defines where to look up the standard options; if |
||||||
|
.\" omitted, defaults to "options". The options follow on successive |
||||||
|
.\" lines, in three columns separated by tabs. |
||||||
|
.\" |
||||||
|
.\" .SE |
||||||
|
.\" End of list of standard options for a Tk widget. |
||||||
|
.\" |
||||||
|
.\" .OP cmdName dbName dbClass |
||||||
|
.\" Start of description of a specific option. cmdName gives the |
||||||
|
.\" option's name as specified in the class command, dbName gives |
||||||
|
.\" the option's name in the option database, and dbClass gives |
||||||
|
.\" the option's class in the option database. |
||||||
|
.\" |
||||||
|
.\" .UL arg1 arg2 |
||||||
|
.\" Print arg1 underlined, then print arg2 normally. |
||||||
|
.\" |
||||||
|
.\" .QW arg1 ?arg2? |
||||||
|
.\" Print arg1 in quotes, then arg2 normally (for trailing punctuation). |
||||||
|
.\" |
||||||
|
.\" .PQ arg1 ?arg2? |
||||||
|
.\" Print an open parenthesis, arg1 in quotes, then arg2 normally |
||||||
|
.\" (for trailing punctuation) and then a closing parenthesis. |
||||||
|
.\" |
||||||
|
.\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. |
||||||
|
.if t .wh -1.3i ^B |
||||||
|
.nr ^l \n(.l |
||||||
|
.ad b |
||||||
|
.\" # Start an argument description |
||||||
|
.de AP |
||||||
|
.ie !"\\$4"" .TP \\$4 |
||||||
|
.el \{\ |
||||||
|
. ie !"\\$2"" .TP \\n()Cu |
||||||
|
. el .TP 15 |
||||||
|
.\} |
||||||
|
.ta \\n()Au \\n()Bu |
||||||
|
.ie !"\\$3"" \{\ |
||||||
|
\&\\$1 \\fI\\$2\\fP (\\$3) |
||||||
|
.\".b |
||||||
|
.\} |
||||||
|
.el \{\ |
||||||
|
.br |
||||||
|
.ie !"\\$2"" \{\ |
||||||
|
\&\\$1 \\fI\\$2\\fP |
||||||
|
.\} |
||||||
|
.el \{\ |
||||||
|
\&\\fI\\$1\\fP |
||||||
|
.\} |
||||||
|
.\} |
||||||
|
.. |
||||||
|
.\" # define tabbing values for .AP |
||||||
|
.de AS |
||||||
|
.nr )A 10n |
||||||
|
.if !"\\$1"" .nr )A \\w'\\$1'u+3n |
||||||
|
.nr )B \\n()Au+15n |
||||||
|
.\" |
||||||
|
.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n |
||||||
|
.nr )C \\n()Bu+\\w'(in/out)'u+2n |
||||||
|
.. |
||||||
|
.AS Tcl_Interp Tcl_CreateInterp in/out |
||||||
|
.\" # BS - start boxed text |
||||||
|
.\" # ^y = starting y location |
||||||
|
.\" # ^b = 1 |
||||||
|
.de BS |
||||||
|
.br |
||||||
|
.mk ^y |
||||||
|
.nr ^b 1u |
||||||
|
.if n .nf |
||||||
|
.if n .ti 0 |
||||||
|
.if n \l'\\n(.lu\(ul' |
||||||
|
.if n .fi |
||||||
|
.. |
||||||
|
.\" # BE - end boxed text (draw box now) |
||||||
|
.de BE |
||||||
|
.nf |
||||||
|
.ti 0 |
||||||
|
.mk ^t |
||||||
|
.ie n \l'\\n(^lu\(ul' |
||||||
|
.el \{\ |
||||||
|
.\" Draw four-sided box normally, but don't draw top of |
||||||
|
.\" box if the box started on an earlier page. |
||||||
|
.ie !\\n(^b-1 \{\ |
||||||
|
\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' |
||||||
|
.\} |
||||||
|
.el \}\ |
||||||
|
\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' |
||||||
|
.\} |
||||||
|
.\} |
||||||
|
.fi |
||||||
|
.br |
||||||
|
.nr ^b 0 |
||||||
|
.. |
||||||
|
.\" # VS - start vertical sidebar |
||||||
|
.\" # ^Y = starting y location |
||||||
|
.\" # ^v = 1 (for troff; for nroff this doesn't matter) |
||||||
|
.de VS |
||||||
|
.if !"\\$2"" .br |
||||||
|
.mk ^Y |
||||||
|
.ie n 'mc \s12\(br\s0 |
||||||
|
.el .nr ^v 1u |
||||||
|
.. |
||||||
|
.\" # VE - end of vertical sidebar |
||||||
|
.de VE |
||||||
|
.ie n 'mc |
||||||
|
.el \{\ |
||||||
|
.ev 2 |
||||||
|
.nf |
||||||
|
.ti 0 |
||||||
|
.mk ^t |
||||||
|
\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' |
||||||
|
.sp -1 |
||||||
|
.fi |
||||||
|
.ev |
||||||
|
.\} |
||||||
|
.nr ^v 0 |
||||||
|
.. |
||||||
|
.\" # Special macro to handle page bottom: finish off current |
||||||
|
.\" # box/sidebar if in box/sidebar mode, then invoked standard |
||||||
|
.\" # page bottom macro. |
||||||
|
.de ^B |
||||||
|
.ev 2 |
||||||
|
'ti 0 |
||||||
|
'nf |
||||||
|
.mk ^t |
||||||
|
.if \\n(^b \{\ |
||||||
|
.\" Draw three-sided box if this is the box's first page, |
||||||
|
.\" draw two sides but no top otherwise. |
||||||
|
.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c |
||||||
|
.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c |
||||||
|
.\} |
||||||
|
.if \\n(^v \{\ |
||||||
|
.nr ^x \\n(^tu+1v-\\n(^Yu |
||||||
|
\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c |
||||||
|
.\} |
||||||
|
.bp |
||||||
|
'fi |
||||||
|
.ev |
||||||
|
.if \\n(^b \{\ |
||||||
|
.mk ^y |
||||||
|
.nr ^b 2 |
||||||
|
.\} |
||||||
|
.if \\n(^v \{\ |
||||||
|
.mk ^Y |
||||||
|
.\} |
||||||
|
.. |
||||||
|
.\" # DS - begin display |
||||||
|
.de DS |
||||||
|
.RS |
||||||
|
.nf |
||||||
|
.sp |
||||||
|
.. |
||||||
|
.\" # DE - end display |
||||||
|
.de DE |
||||||
|
.fi |
||||||
|
.RE |
||||||
|
.sp |
||||||
|
.. |
||||||
|
.\" # SO - start of list of standard options |
||||||
|
.de SO |
||||||
|
'ie '\\$1'' .ds So \\fBoptions\\fR |
||||||
|
'el .ds So \\fB\\$1\\fR |
||||||
|
.SH "STANDARD OPTIONS" |
||||||
|
.LP |
||||||
|
.nf |
||||||
|
.ta 5.5c 11c |
||||||
|
.ft B |
||||||
|
.. |
||||||
|
.\" # SE - end of list of standard options |
||||||
|
.de SE |
||||||
|
.fi |
||||||
|
.ft R |
||||||
|
.LP |
||||||
|
See the \\*(So manual entry for details on the standard options. |
||||||
|
.. |
||||||
|
.\" # OP - start of full description for a single option |
||||||
|
.de OP |
||||||
|
.LP |
||||||
|
.nf |
||||||
|
.ta 4c |
||||||
|
Command-Line Name: \\fB\\$1\\fR |
||||||
|
Database Name: \\fB\\$2\\fR |
||||||
|
Database Class: \\fB\\$3\\fR |
||||||
|
.fi |
||||||
|
.IP |
||||||
|
.. |
||||||
|
.\" # CS - begin code excerpt |
||||||
|
.de CS |
||||||
|
.RS |
||||||
|
.nf |
||||||
|
.ta .25i .5i .75i 1i |
||||||
|
.. |
||||||
|
.\" # CE - end code excerpt |
||||||
|
.de CE |
||||||
|
.fi |
||||||
|
.RE |
||||||
|
.. |
||||||
|
.\" # UL - underline word |
||||||
|
.de UL |
||||||
|
\\$1\l'|0\(ul'\\$2 |
||||||
|
.. |
||||||
|
.\" # QW - apply quotation marks to word |
||||||
|
.de QW |
||||||
|
.ie '\\*(lq'"' ``\\$1''\\$2 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el \\*(lq\\$1\\*(rq\\$2 |
||||||
|
.. |
||||||
|
.\" # PQ - apply parens and quotation marks to word |
||||||
|
.de PQ |
||||||
|
.ie '\\*(lq'"' (``\\$1''\\$2)\\$3 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el (\\*(lq\\$1\\*(rq\\$2)\\$3 |
||||||
|
.. |
||||||
|
.\" # QR - quoted range |
||||||
|
.de QR |
||||||
|
.ie '\\*(lq'"' ``\\$1''\\-``\\$2''\\$3 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el \\*(lq\\$1\\*(rq\\-\\*(lq\\$2\\*(rq\\$3 |
||||||
|
.. |
||||||
|
.\" # MT - "empty" string |
||||||
|
.de MT |
||||||
|
.QW "" |
||||||
|
.. |
||||||
|
.BS |
||||||
|
.SH NAME |
||||||
|
shellspy_module_punk::icomm \- Module API |
||||||
|
.SH SYNOPSIS |
||||||
|
package require \fBpunk::icomm\fR |
||||||
|
.sp |
||||||
|
.BE |
||||||
|
.SH DESCRIPTION |
||||||
|
.PP |
||||||
|
- |
||||||
|
.SH OVERVIEW |
||||||
|
.PP |
||||||
|
overview of punk::icomm |
||||||
|
.SS CONCEPTS |
||||||
|
.PP |
||||||
|
- |
||||||
|
.SS DEPENDENCIES |
||||||
|
.PP |
||||||
|
packages used by punk::icomm |
||||||
|
.IP \(bu |
||||||
|
\fBTcl 8\&.6\fR |
||||||
|
.IP \(bu |
||||||
|
\fBpunk::args\fR |
||||||
|
.PP |
||||||
|
.SH API |
||||||
|
.SS "NAMESPACE PUNK::ICOMM::CLASS" |
||||||
|
.PP |
||||||
|
class definitions |
||||||
|
if { eq ""} { |
||||||
|
*** !doctools |
||||||
|
.PP |
||||||
|
} |
||||||
|
} |
||||||
|
.SS "NAMESPACE PUNK::ICOMM" |
||||||
|
.PP |
||||||
|
Core API functions for punk::icomm |
||||||
|
.PP |
||||||
|
.SS "NAMESPACE PUNK::ICOMM::LIB" |
||||||
|
.PP |
||||||
|
Secondary functions that are part of the API |
||||||
|
.PP |
||||||
|
.SH INTERNAL |
||||||
|
tcl::namespace::eval punk::icomm::system { |
||||||
|
*** !doctools |
||||||
|
.SS "NAMESPACE PUNK::ICOMM::SYSTEM" |
||||||
|
.PP |
||||||
|
Internal functions that are not part of the API |
||||||
|
.SH KEYWORDS |
||||||
|
module |
||||||
|
.SH COPYRIGHT |
||||||
|
.nf |
||||||
|
Copyright (c) 2025 |
||||||
|
|
||||||
|
.fi |
||||||
@ -0,0 +1,314 @@ |
|||||||
|
'\" |
||||||
|
'\" Generated from file '_module_imap4-0\&.9\&.tm\&.man' by tcllib/doctools with format 'nroff' |
||||||
|
'\" Copyright (c) 2025 |
||||||
|
'\" |
||||||
|
.TH "punkshell_module_punk::imap4" 0 0\&.9 doc "IMAP4 client" |
||||||
|
.\" The -*- nroff -*- definitions below are for supplemental macros used |
||||||
|
.\" in Tcl/Tk manual entries. |
||||||
|
.\" |
||||||
|
.\" .AP type name in/out ?indent? |
||||||
|
.\" Start paragraph describing an argument to a library procedure. |
||||||
|
.\" type is type of argument (int, etc.), in/out is either "in", "out", |
||||||
|
.\" or "in/out" to describe whether procedure reads or modifies arg, |
||||||
|
.\" and indent is equivalent to second arg of .IP (shouldn't ever be |
||||||
|
.\" needed; use .AS below instead) |
||||||
|
.\" |
||||||
|
.\" .AS ?type? ?name? |
||||||
|
.\" Give maximum sizes of arguments for setting tab stops. Type and |
||||||
|
.\" name are examples of largest possible arguments that will be passed |
||||||
|
.\" to .AP later. If args are omitted, default tab stops are used. |
||||||
|
.\" |
||||||
|
.\" .BS |
||||||
|
.\" Start box enclosure. From here until next .BE, everything will be |
||||||
|
.\" enclosed in one large box. |
||||||
|
.\" |
||||||
|
.\" .BE |
||||||
|
.\" End of box enclosure. |
||||||
|
.\" |
||||||
|
.\" .CS |
||||||
|
.\" Begin code excerpt. |
||||||
|
.\" |
||||||
|
.\" .CE |
||||||
|
.\" End code excerpt. |
||||||
|
.\" |
||||||
|
.\" .VS ?version? ?br? |
||||||
|
.\" Begin vertical sidebar, for use in marking newly-changed parts |
||||||
|
.\" of man pages. The first argument is ignored and used for recording |
||||||
|
.\" the version when the .VS was added, so that the sidebars can be |
||||||
|
.\" found and removed when they reach a certain age. If another argument |
||||||
|
.\" is present, then a line break is forced before starting the sidebar. |
||||||
|
.\" |
||||||
|
.\" .VE |
||||||
|
.\" End of vertical sidebar. |
||||||
|
.\" |
||||||
|
.\" .DS |
||||||
|
.\" Begin an indented unfilled display. |
||||||
|
.\" |
||||||
|
.\" .DE |
||||||
|
.\" End of indented unfilled display. |
||||||
|
.\" |
||||||
|
.\" .SO ?manpage? |
||||||
|
.\" Start of list of standard options for a Tk widget. The manpage |
||||||
|
.\" argument defines where to look up the standard options; if |
||||||
|
.\" omitted, defaults to "options". The options follow on successive |
||||||
|
.\" lines, in three columns separated by tabs. |
||||||
|
.\" |
||||||
|
.\" .SE |
||||||
|
.\" End of list of standard options for a Tk widget. |
||||||
|
.\" |
||||||
|
.\" .OP cmdName dbName dbClass |
||||||
|
.\" Start of description of a specific option. cmdName gives the |
||||||
|
.\" option's name as specified in the class command, dbName gives |
||||||
|
.\" the option's name in the option database, and dbClass gives |
||||||
|
.\" the option's class in the option database. |
||||||
|
.\" |
||||||
|
.\" .UL arg1 arg2 |
||||||
|
.\" Print arg1 underlined, then print arg2 normally. |
||||||
|
.\" |
||||||
|
.\" .QW arg1 ?arg2? |
||||||
|
.\" Print arg1 in quotes, then arg2 normally (for trailing punctuation). |
||||||
|
.\" |
||||||
|
.\" .PQ arg1 ?arg2? |
||||||
|
.\" Print an open parenthesis, arg1 in quotes, then arg2 normally |
||||||
|
.\" (for trailing punctuation) and then a closing parenthesis. |
||||||
|
.\" |
||||||
|
.\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. |
||||||
|
.if t .wh -1.3i ^B |
||||||
|
.nr ^l \n(.l |
||||||
|
.ad b |
||||||
|
.\" # Start an argument description |
||||||
|
.de AP |
||||||
|
.ie !"\\$4"" .TP \\$4 |
||||||
|
.el \{\ |
||||||
|
. ie !"\\$2"" .TP \\n()Cu |
||||||
|
. el .TP 15 |
||||||
|
.\} |
||||||
|
.ta \\n()Au \\n()Bu |
||||||
|
.ie !"\\$3"" \{\ |
||||||
|
\&\\$1 \\fI\\$2\\fP (\\$3) |
||||||
|
.\".b |
||||||
|
.\} |
||||||
|
.el \{\ |
||||||
|
.br |
||||||
|
.ie !"\\$2"" \{\ |
||||||
|
\&\\$1 \\fI\\$2\\fP |
||||||
|
.\} |
||||||
|
.el \{\ |
||||||
|
\&\\fI\\$1\\fP |
||||||
|
.\} |
||||||
|
.\} |
||||||
|
.. |
||||||
|
.\" # define tabbing values for .AP |
||||||
|
.de AS |
||||||
|
.nr )A 10n |
||||||
|
.if !"\\$1"" .nr )A \\w'\\$1'u+3n |
||||||
|
.nr )B \\n()Au+15n |
||||||
|
.\" |
||||||
|
.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n |
||||||
|
.nr )C \\n()Bu+\\w'(in/out)'u+2n |
||||||
|
.. |
||||||
|
.AS Tcl_Interp Tcl_CreateInterp in/out |
||||||
|
.\" # BS - start boxed text |
||||||
|
.\" # ^y = starting y location |
||||||
|
.\" # ^b = 1 |
||||||
|
.de BS |
||||||
|
.br |
||||||
|
.mk ^y |
||||||
|
.nr ^b 1u |
||||||
|
.if n .nf |
||||||
|
.if n .ti 0 |
||||||
|
.if n \l'\\n(.lu\(ul' |
||||||
|
.if n .fi |
||||||
|
.. |
||||||
|
.\" # BE - end boxed text (draw box now) |
||||||
|
.de BE |
||||||
|
.nf |
||||||
|
.ti 0 |
||||||
|
.mk ^t |
||||||
|
.ie n \l'\\n(^lu\(ul' |
||||||
|
.el \{\ |
||||||
|
.\" Draw four-sided box normally, but don't draw top of |
||||||
|
.\" box if the box started on an earlier page. |
||||||
|
.ie !\\n(^b-1 \{\ |
||||||
|
\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' |
||||||
|
.\} |
||||||
|
.el \}\ |
||||||
|
\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' |
||||||
|
.\} |
||||||
|
.\} |
||||||
|
.fi |
||||||
|
.br |
||||||
|
.nr ^b 0 |
||||||
|
.. |
||||||
|
.\" # VS - start vertical sidebar |
||||||
|
.\" # ^Y = starting y location |
||||||
|
.\" # ^v = 1 (for troff; for nroff this doesn't matter) |
||||||
|
.de VS |
||||||
|
.if !"\\$2"" .br |
||||||
|
.mk ^Y |
||||||
|
.ie n 'mc \s12\(br\s0 |
||||||
|
.el .nr ^v 1u |
||||||
|
.. |
||||||
|
.\" # VE - end of vertical sidebar |
||||||
|
.de VE |
||||||
|
.ie n 'mc |
||||||
|
.el \{\ |
||||||
|
.ev 2 |
||||||
|
.nf |
||||||
|
.ti 0 |
||||||
|
.mk ^t |
||||||
|
\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' |
||||||
|
.sp -1 |
||||||
|
.fi |
||||||
|
.ev |
||||||
|
.\} |
||||||
|
.nr ^v 0 |
||||||
|
.. |
||||||
|
.\" # Special macro to handle page bottom: finish off current |
||||||
|
.\" # box/sidebar if in box/sidebar mode, then invoked standard |
||||||
|
.\" # page bottom macro. |
||||||
|
.de ^B |
||||||
|
.ev 2 |
||||||
|
'ti 0 |
||||||
|
'nf |
||||||
|
.mk ^t |
||||||
|
.if \\n(^b \{\ |
||||||
|
.\" Draw three-sided box if this is the box's first page, |
||||||
|
.\" draw two sides but no top otherwise. |
||||||
|
.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c |
||||||
|
.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c |
||||||
|
.\} |
||||||
|
.if \\n(^v \{\ |
||||||
|
.nr ^x \\n(^tu+1v-\\n(^Yu |
||||||
|
\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c |
||||||
|
.\} |
||||||
|
.bp |
||||||
|
'fi |
||||||
|
.ev |
||||||
|
.if \\n(^b \{\ |
||||||
|
.mk ^y |
||||||
|
.nr ^b 2 |
||||||
|
.\} |
||||||
|
.if \\n(^v \{\ |
||||||
|
.mk ^Y |
||||||
|
.\} |
||||||
|
.. |
||||||
|
.\" # DS - begin display |
||||||
|
.de DS |
||||||
|
.RS |
||||||
|
.nf |
||||||
|
.sp |
||||||
|
.. |
||||||
|
.\" # DE - end display |
||||||
|
.de DE |
||||||
|
.fi |
||||||
|
.RE |
||||||
|
.sp |
||||||
|
.. |
||||||
|
.\" # SO - start of list of standard options |
||||||
|
.de SO |
||||||
|
'ie '\\$1'' .ds So \\fBoptions\\fR |
||||||
|
'el .ds So \\fB\\$1\\fR |
||||||
|
.SH "STANDARD OPTIONS" |
||||||
|
.LP |
||||||
|
.nf |
||||||
|
.ta 5.5c 11c |
||||||
|
.ft B |
||||||
|
.. |
||||||
|
.\" # SE - end of list of standard options |
||||||
|
.de SE |
||||||
|
.fi |
||||||
|
.ft R |
||||||
|
.LP |
||||||
|
See the \\*(So manual entry for details on the standard options. |
||||||
|
.. |
||||||
|
.\" # OP - start of full description for a single option |
||||||
|
.de OP |
||||||
|
.LP |
||||||
|
.nf |
||||||
|
.ta 4c |
||||||
|
Command-Line Name: \\fB\\$1\\fR |
||||||
|
Database Name: \\fB\\$2\\fR |
||||||
|
Database Class: \\fB\\$3\\fR |
||||||
|
.fi |
||||||
|
.IP |
||||||
|
.. |
||||||
|
.\" # CS - begin code excerpt |
||||||
|
.de CS |
||||||
|
.RS |
||||||
|
.nf |
||||||
|
.ta .25i .5i .75i 1i |
||||||
|
.. |
||||||
|
.\" # CE - end code excerpt |
||||||
|
.de CE |
||||||
|
.fi |
||||||
|
.RE |
||||||
|
.. |
||||||
|
.\" # UL - underline word |
||||||
|
.de UL |
||||||
|
\\$1\l'|0\(ul'\\$2 |
||||||
|
.. |
||||||
|
.\" # QW - apply quotation marks to word |
||||||
|
.de QW |
||||||
|
.ie '\\*(lq'"' ``\\$1''\\$2 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el \\*(lq\\$1\\*(rq\\$2 |
||||||
|
.. |
||||||
|
.\" # PQ - apply parens and quotation marks to word |
||||||
|
.de PQ |
||||||
|
.ie '\\*(lq'"' (``\\$1''\\$2)\\$3 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el (\\*(lq\\$1\\*(rq\\$2)\\$3 |
||||||
|
.. |
||||||
|
.\" # QR - quoted range |
||||||
|
.de QR |
||||||
|
.ie '\\*(lq'"' ``\\$1''\\-``\\$2''\\$3 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el \\*(lq\\$1\\*(rq\\-\\*(lq\\$2\\*(rq\\$3 |
||||||
|
.. |
||||||
|
.\" # MT - "empty" string |
||||||
|
.de MT |
||||||
|
.QW "" |
||||||
|
.. |
||||||
|
.BS |
||||||
|
.SH NAME |
||||||
|
punkshell_module_punk::imap4 \- IMAP4 client |
||||||
|
.SH SYNOPSIS |
||||||
|
package require \fBpunk::imap4\fR |
||||||
|
.sp |
||||||
|
.BE |
||||||
|
.SH DESCRIPTION |
||||||
|
.PP |
||||||
|
An implementation of IMAP4 (rev1+?) client protocol |
||||||
|
.SH OVERVIEW |
||||||
|
.PP |
||||||
|
overview of punk::imap4 |
||||||
|
.SS CONCEPTS |
||||||
|
.PP |
||||||
|
- |
||||||
|
.SS DEPENDENCIES |
||||||
|
.PP |
||||||
|
packages used by punk::imap4 |
||||||
|
.IP \(bu |
||||||
|
\fBTcl 8\&.6\&.2-\fR |
||||||
|
.IP \(bu |
||||||
|
\fBpunk::args\fR |
||||||
|
.IP \(bu |
||||||
|
\fBpunk::lib\fR |
||||||
|
.PP |
||||||
|
.SH API |
||||||
|
.SS "NAMESPACE PUNK::IMAP4" |
||||||
|
.PP |
||||||
|
Core API functions for punk::imap4 |
||||||
|
.PP |
||||||
|
.SS "NAMESPACE PUNK::IMAP4::LIB" |
||||||
|
.PP |
||||||
|
Secondary functions that are part of the API |
||||||
|
.PP |
||||||
|
.SH KEYWORDS |
||||||
|
client, imap, imap4, mail, mailclient, module |
||||||
|
.SH COPYRIGHT |
||||||
|
.nf |
||||||
|
Copyright (c) 2025 |
||||||
|
|
||||||
|
.fi |
||||||
@ -0,0 +1,679 @@ |
|||||||
|
'\" |
||||||
|
'\" Generated from file '_module_lib-0\&.1\&.2\&.tm\&.man' by tcllib/doctools with format 'nroff' |
||||||
|
'\" Copyright (c) 2024 |
||||||
|
'\" |
||||||
|
.TH "punkshell_module_punk::lib" 0 0\&.1\&.2 doc "punk library" |
||||||
|
.\" The -*- nroff -*- definitions below are for supplemental macros used |
||||||
|
.\" in Tcl/Tk manual entries. |
||||||
|
.\" |
||||||
|
.\" .AP type name in/out ?indent? |
||||||
|
.\" Start paragraph describing an argument to a library procedure. |
||||||
|
.\" type is type of argument (int, etc.), in/out is either "in", "out", |
||||||
|
.\" or "in/out" to describe whether procedure reads or modifies arg, |
||||||
|
.\" and indent is equivalent to second arg of .IP (shouldn't ever be |
||||||
|
.\" needed; use .AS below instead) |
||||||
|
.\" |
||||||
|
.\" .AS ?type? ?name? |
||||||
|
.\" Give maximum sizes of arguments for setting tab stops. Type and |
||||||
|
.\" name are examples of largest possible arguments that will be passed |
||||||
|
.\" to .AP later. If args are omitted, default tab stops are used. |
||||||
|
.\" |
||||||
|
.\" .BS |
||||||
|
.\" Start box enclosure. From here until next .BE, everything will be |
||||||
|
.\" enclosed in one large box. |
||||||
|
.\" |
||||||
|
.\" .BE |
||||||
|
.\" End of box enclosure. |
||||||
|
.\" |
||||||
|
.\" .CS |
||||||
|
.\" Begin code excerpt. |
||||||
|
.\" |
||||||
|
.\" .CE |
||||||
|
.\" End code excerpt. |
||||||
|
.\" |
||||||
|
.\" .VS ?version? ?br? |
||||||
|
.\" Begin vertical sidebar, for use in marking newly-changed parts |
||||||
|
.\" of man pages. The first argument is ignored and used for recording |
||||||
|
.\" the version when the .VS was added, so that the sidebars can be |
||||||
|
.\" found and removed when they reach a certain age. If another argument |
||||||
|
.\" is present, then a line break is forced before starting the sidebar. |
||||||
|
.\" |
||||||
|
.\" .VE |
||||||
|
.\" End of vertical sidebar. |
||||||
|
.\" |
||||||
|
.\" .DS |
||||||
|
.\" Begin an indented unfilled display. |
||||||
|
.\" |
||||||
|
.\" .DE |
||||||
|
.\" End of indented unfilled display. |
||||||
|
.\" |
||||||
|
.\" .SO ?manpage? |
||||||
|
.\" Start of list of standard options for a Tk widget. The manpage |
||||||
|
.\" argument defines where to look up the standard options; if |
||||||
|
.\" omitted, defaults to "options". The options follow on successive |
||||||
|
.\" lines, in three columns separated by tabs. |
||||||
|
.\" |
||||||
|
.\" .SE |
||||||
|
.\" End of list of standard options for a Tk widget. |
||||||
|
.\" |
||||||
|
.\" .OP cmdName dbName dbClass |
||||||
|
.\" Start of description of a specific option. cmdName gives the |
||||||
|
.\" option's name as specified in the class command, dbName gives |
||||||
|
.\" the option's name in the option database, and dbClass gives |
||||||
|
.\" the option's class in the option database. |
||||||
|
.\" |
||||||
|
.\" .UL arg1 arg2 |
||||||
|
.\" Print arg1 underlined, then print arg2 normally. |
||||||
|
.\" |
||||||
|
.\" .QW arg1 ?arg2? |
||||||
|
.\" Print arg1 in quotes, then arg2 normally (for trailing punctuation). |
||||||
|
.\" |
||||||
|
.\" .PQ arg1 ?arg2? |
||||||
|
.\" Print an open parenthesis, arg1 in quotes, then arg2 normally |
||||||
|
.\" (for trailing punctuation) and then a closing parenthesis. |
||||||
|
.\" |
||||||
|
.\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. |
||||||
|
.if t .wh -1.3i ^B |
||||||
|
.nr ^l \n(.l |
||||||
|
.ad b |
||||||
|
.\" # Start an argument description |
||||||
|
.de AP |
||||||
|
.ie !"\\$4"" .TP \\$4 |
||||||
|
.el \{\ |
||||||
|
. ie !"\\$2"" .TP \\n()Cu |
||||||
|
. el .TP 15 |
||||||
|
.\} |
||||||
|
.ta \\n()Au \\n()Bu |
||||||
|
.ie !"\\$3"" \{\ |
||||||
|
\&\\$1 \\fI\\$2\\fP (\\$3) |
||||||
|
.\".b |
||||||
|
.\} |
||||||
|
.el \{\ |
||||||
|
.br |
||||||
|
.ie !"\\$2"" \{\ |
||||||
|
\&\\$1 \\fI\\$2\\fP |
||||||
|
.\} |
||||||
|
.el \{\ |
||||||
|
\&\\fI\\$1\\fP |
||||||
|
.\} |
||||||
|
.\} |
||||||
|
.. |
||||||
|
.\" # define tabbing values for .AP |
||||||
|
.de AS |
||||||
|
.nr )A 10n |
||||||
|
.if !"\\$1"" .nr )A \\w'\\$1'u+3n |
||||||
|
.nr )B \\n()Au+15n |
||||||
|
.\" |
||||||
|
.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n |
||||||
|
.nr )C \\n()Bu+\\w'(in/out)'u+2n |
||||||
|
.. |
||||||
|
.AS Tcl_Interp Tcl_CreateInterp in/out |
||||||
|
.\" # BS - start boxed text |
||||||
|
.\" # ^y = starting y location |
||||||
|
.\" # ^b = 1 |
||||||
|
.de BS |
||||||
|
.br |
||||||
|
.mk ^y |
||||||
|
.nr ^b 1u |
||||||
|
.if n .nf |
||||||
|
.if n .ti 0 |
||||||
|
.if n \l'\\n(.lu\(ul' |
||||||
|
.if n .fi |
||||||
|
.. |
||||||
|
.\" # BE - end boxed text (draw box now) |
||||||
|
.de BE |
||||||
|
.nf |
||||||
|
.ti 0 |
||||||
|
.mk ^t |
||||||
|
.ie n \l'\\n(^lu\(ul' |
||||||
|
.el \{\ |
||||||
|
.\" Draw four-sided box normally, but don't draw top of |
||||||
|
.\" box if the box started on an earlier page. |
||||||
|
.ie !\\n(^b-1 \{\ |
||||||
|
\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' |
||||||
|
.\} |
||||||
|
.el \}\ |
||||||
|
\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' |
||||||
|
.\} |
||||||
|
.\} |
||||||
|
.fi |
||||||
|
.br |
||||||
|
.nr ^b 0 |
||||||
|
.. |
||||||
|
.\" # VS - start vertical sidebar |
||||||
|
.\" # ^Y = starting y location |
||||||
|
.\" # ^v = 1 (for troff; for nroff this doesn't matter) |
||||||
|
.de VS |
||||||
|
.if !"\\$2"" .br |
||||||
|
.mk ^Y |
||||||
|
.ie n 'mc \s12\(br\s0 |
||||||
|
.el .nr ^v 1u |
||||||
|
.. |
||||||
|
.\" # VE - end of vertical sidebar |
||||||
|
.de VE |
||||||
|
.ie n 'mc |
||||||
|
.el \{\ |
||||||
|
.ev 2 |
||||||
|
.nf |
||||||
|
.ti 0 |
||||||
|
.mk ^t |
||||||
|
\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' |
||||||
|
.sp -1 |
||||||
|
.fi |
||||||
|
.ev |
||||||
|
.\} |
||||||
|
.nr ^v 0 |
||||||
|
.. |
||||||
|
.\" # Special macro to handle page bottom: finish off current |
||||||
|
.\" # box/sidebar if in box/sidebar mode, then invoked standard |
||||||
|
.\" # page bottom macro. |
||||||
|
.de ^B |
||||||
|
.ev 2 |
||||||
|
'ti 0 |
||||||
|
'nf |
||||||
|
.mk ^t |
||||||
|
.if \\n(^b \{\ |
||||||
|
.\" Draw three-sided box if this is the box's first page, |
||||||
|
.\" draw two sides but no top otherwise. |
||||||
|
.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c |
||||||
|
.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c |
||||||
|
.\} |
||||||
|
.if \\n(^v \{\ |
||||||
|
.nr ^x \\n(^tu+1v-\\n(^Yu |
||||||
|
\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c |
||||||
|
.\} |
||||||
|
.bp |
||||||
|
'fi |
||||||
|
.ev |
||||||
|
.if \\n(^b \{\ |
||||||
|
.mk ^y |
||||||
|
.nr ^b 2 |
||||||
|
.\} |
||||||
|
.if \\n(^v \{\ |
||||||
|
.mk ^Y |
||||||
|
.\} |
||||||
|
.. |
||||||
|
.\" # DS - begin display |
||||||
|
.de DS |
||||||
|
.RS |
||||||
|
.nf |
||||||
|
.sp |
||||||
|
.. |
||||||
|
.\" # DE - end display |
||||||
|
.de DE |
||||||
|
.fi |
||||||
|
.RE |
||||||
|
.sp |
||||||
|
.. |
||||||
|
.\" # SO - start of list of standard options |
||||||
|
.de SO |
||||||
|
'ie '\\$1'' .ds So \\fBoptions\\fR |
||||||
|
'el .ds So \\fB\\$1\\fR |
||||||
|
.SH "STANDARD OPTIONS" |
||||||
|
.LP |
||||||
|
.nf |
||||||
|
.ta 5.5c 11c |
||||||
|
.ft B |
||||||
|
.. |
||||||
|
.\" # SE - end of list of standard options |
||||||
|
.de SE |
||||||
|
.fi |
||||||
|
.ft R |
||||||
|
.LP |
||||||
|
See the \\*(So manual entry for details on the standard options. |
||||||
|
.. |
||||||
|
.\" # OP - start of full description for a single option |
||||||
|
.de OP |
||||||
|
.LP |
||||||
|
.nf |
||||||
|
.ta 4c |
||||||
|
Command-Line Name: \\fB\\$1\\fR |
||||||
|
Database Name: \\fB\\$2\\fR |
||||||
|
Database Class: \\fB\\$3\\fR |
||||||
|
.fi |
||||||
|
.IP |
||||||
|
.. |
||||||
|
.\" # CS - begin code excerpt |
||||||
|
.de CS |
||||||
|
.RS |
||||||
|
.nf |
||||||
|
.ta .25i .5i .75i 1i |
||||||
|
.. |
||||||
|
.\" # CE - end code excerpt |
||||||
|
.de CE |
||||||
|
.fi |
||||||
|
.RE |
||||||
|
.. |
||||||
|
.\" # UL - underline word |
||||||
|
.de UL |
||||||
|
\\$1\l'|0\(ul'\\$2 |
||||||
|
.. |
||||||
|
.\" # QW - apply quotation marks to word |
||||||
|
.de QW |
||||||
|
.ie '\\*(lq'"' ``\\$1''\\$2 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el \\*(lq\\$1\\*(rq\\$2 |
||||||
|
.. |
||||||
|
.\" # PQ - apply parens and quotation marks to word |
||||||
|
.de PQ |
||||||
|
.ie '\\*(lq'"' (``\\$1''\\$2)\\$3 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el (\\*(lq\\$1\\*(rq\\$2)\\$3 |
||||||
|
.. |
||||||
|
.\" # QR - quoted range |
||||||
|
.de QR |
||||||
|
.ie '\\*(lq'"' ``\\$1''\\-``\\$2''\\$3 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el \\*(lq\\$1\\*(rq\\-\\*(lq\\$2\\*(rq\\$3 |
||||||
|
.. |
||||||
|
.\" # MT - "empty" string |
||||||
|
.de MT |
||||||
|
.QW "" |
||||||
|
.. |
||||||
|
.BS |
||||||
|
.SH NAME |
||||||
|
punkshell_module_punk::lib \- punk general utility functions |
||||||
|
.SH SYNOPSIS |
||||||
|
package require \fBpunk::lib\fR |
||||||
|
.sp |
||||||
|
\fBlremove\fR \fIlist\fR ?index \&.\&.\&.? |
||||||
|
.sp |
||||||
|
\fBlpop\fR \fIlistvar\fR ?index? |
||||||
|
.sp |
||||||
|
\fBinvoke\fR \fIcommand\fR |
||||||
|
.sp |
||||||
|
\fBlindex_resolve\fR \fIlen\fR \fIindex\fR |
||||||
|
.sp |
||||||
|
\fBlindex_resolve_basic\fR \fIlen\fR \fIindex\fR |
||||||
|
.sp |
||||||
|
\fBK\fR \fIx\fR \fIy\fR |
||||||
|
.sp |
||||||
|
\fBis_utf8_multibyteprefix\fR \fIstr\fR |
||||||
|
.sp |
||||||
|
\fBis_utf8_single\fR \fI1234bytes\fR |
||||||
|
.sp |
||||||
|
\fBget_utf8_leading\fR \fIrawbytes\fR |
||||||
|
.sp |
||||||
|
\fBhex2dec\fR ?option value\&.\&.\&.? \fIlist_largeHex\fR |
||||||
|
.sp |
||||||
|
\fBdex2hex\fR ?option value\&.\&.\&.? \fIlist_decimals\fR |
||||||
|
.sp |
||||||
|
\fBlog2\fR \fIx\fR |
||||||
|
.sp |
||||||
|
\fBlogbase\fR \fIb\fR \fIx\fR |
||||||
|
.sp |
||||||
|
\fBfactors\fR \fIx\fR |
||||||
|
.sp |
||||||
|
\fBoddFactors\fR \fIx\fR |
||||||
|
.sp |
||||||
|
\fBgreatestFactorBelow\fR \fIx\fR |
||||||
|
.sp |
||||||
|
\fBgreatestOddFactorBelow\fR \fIx\fR |
||||||
|
.sp |
||||||
|
\fBgreatestOddFactor\fR \fIx\fR |
||||||
|
.sp |
||||||
|
\fBgcd\fR \fIn\fR \fIm\fR |
||||||
|
.sp |
||||||
|
\fBgcd\fR \fIn\fR \fIm\fR |
||||||
|
.sp |
||||||
|
\fBcommonDivisors\fR \fIx\fR \fIy\fR |
||||||
|
.sp |
||||||
|
\fBhasglobs\fR \fIstr\fR |
||||||
|
.sp |
||||||
|
\fBtrimzero\fR \fInumber\fR |
||||||
|
.sp |
||||||
|
\fBsubstring_count\fR \fIstr\fR \fIsubstring\fR |
||||||
|
.sp |
||||||
|
\fBdict_merge_ordered\fR \fIdefaults\fR \fImain\fR |
||||||
|
.sp |
||||||
|
\fBaskuser\fR \fIquestion\fR |
||||||
|
.sp |
||||||
|
\fBlinesort\fR ?sortoption ?val?\&.\&.\&.? \fItextblock\fR |
||||||
|
.sp |
||||||
|
\fBlist_as_lines\fR ?-joinchar char? \fIlinelist\fR |
||||||
|
.sp |
||||||
|
\fBlines_as_list\fR ?option value \&.\&.\&.? \fItext\fR |
||||||
|
.sp |
||||||
|
.BE |
||||||
|
.SH DESCRIPTION |
||||||
|
.PP |
||||||
|
This is a set of utility functions that are commonly used across punk modules or are just considered to be general-purpose functions\&. |
||||||
|
.PP |
||||||
|
The base set includes string and math functions but has no specific theme |
||||||
|
.SH OVERVIEW |
||||||
|
.PP |
||||||
|
overview of punk::lib |
||||||
|
.SS CONCEPTS |
||||||
|
.PP |
||||||
|
The punk::lib modules should have no strong dependencies other than Tcl |
||||||
|
.PP |
||||||
|
Dependendencies that only affect display or additional functionality may be included - but should fail gracefully if not present, and only when a function is called that uses one of these soft dependencies\&. |
||||||
|
.PP |
||||||
|
This requirement for no strong dependencies, means that many utility functions that might otherwise seem worthy of inclusion here are not present\&. |
||||||
|
.SS DEPENDENCIES |
||||||
|
.PP |
||||||
|
packages used by punk::lib |
||||||
|
.IP \(bu |
||||||
|
\fBTcl 8\&.6-\fR |
||||||
|
.IP \(bu |
||||||
|
\fBpunk::args\fR |
||||||
|
.PP |
||||||
|
.SH API |
||||||
|
.SS "NAMESPACE PUNK::LIB::COMPAT" |
||||||
|
.PP |
||||||
|
compatibility functions for features that may not be available in earlier Tcl versions |
||||||
|
.PP |
||||||
|
These are generally 'forward compatibility' functions ie allowing earlier versions to use later features/idioms by using a Tcl-only version of a missing builtin\&. |
||||||
|
.PP |
||||||
|
Such Tcl-only versions will inevitably be less performant - perhaps significantly so\&. |
||||||
|
.TP |
||||||
|
\fBlremove\fR \fIlist\fR ?index \&.\&.\&.? |
||||||
|
.sp |
||||||
|
Forwards compatible lremove for versions 8\&.6 or less to support equivalent 8\&.7 lremove |
||||||
|
.TP |
||||||
|
\fBlpop\fR \fIlistvar\fR ?index? |
||||||
|
.sp |
||||||
|
Forwards compatible lpop for versions 8\&.6 or less to support equivalent 8\&.7 lpop |
||||||
|
.PP |
||||||
|
.SS "NAMESPACE PUNK::LIB" |
||||||
|
.PP |
||||||
|
Core API functions for punk::lib |
||||||
|
.TP |
||||||
|
\fBinvoke\fR \fIcommand\fR |
||||||
|
.sp |
||||||
|
Invoke an external command (using tcl open command) capturing stdout,stderr and the exitcode |
||||||
|
.CS |
||||||
|
|
||||||
|
|
||||||
|
set script { |
||||||
|
puts stdout {hello on stdout} |
||||||
|
puts stderr {hello on stderr} |
||||||
|
exit 42 |
||||||
|
} |
||||||
|
invoke [list tclsh <<$script] |
||||||
|
|
||||||
|
.CE |
||||||
|
.TP |
||||||
|
\fBlindex_resolve\fR \fIlen\fR \fIindex\fR |
||||||
|
.sp |
||||||
|
Resolve an index which may be of the forms accepted by Tcl list commands such as end-2 or 2+2 to the actual integer index for the supplied list/string length |
||||||
|
.sp |
||||||
|
Users may define procs which accept a list/string index and wish to accept the forms understood by Tcl\&. |
||||||
|
.sp |
||||||
|
This means the proc may be called with something like $x+2 end-$y etc |
||||||
|
.sp |
||||||
|
Sometimes the actual integer index is desired\&. |
||||||
|
.sp |
||||||
|
We want to resolve the index used, without passing arbitrary expressions into the 'expr' function - which could have security risks\&. |
||||||
|
.sp |
||||||
|
lindex_resolve will parse the index expression and return: |
||||||
|
.sp |
||||||
|
a) -3 if the supplied index expression is below the lower bound for the supplied list\&. (< 0) |
||||||
|
.sp |
||||||
|
b) -2 if the supplied index expression is above the upper bound for the supplied list\&. (> end) |
||||||
|
.sp |
||||||
|
We don't return -1 - as the similar function lindex_resolve_basic uses this to denote out of range at either end of the list/string |
||||||
|
.sp |
||||||
|
Otherwise it will return an integer corresponding to the position in the list\&. |
||||||
|
.sp |
||||||
|
This is in stark contrast to Tcl list function indices which will return empty strings for out of bounds indices, or in the case of lrange, return results anyway\&. |
||||||
|
.sp |
||||||
|
Like Tcl list commands - it will produce an error if the form of the index is not acceptable |
||||||
|
.sp |
||||||
|
For empty lists, end and end+x indices are considered to be out of bounds on the upper side - thus returning -2 |
||||||
|
.TP |
||||||
|
\fBlindex_resolve_basic\fR \fIlen\fR \fIindex\fR |
||||||
|
.sp |
||||||
|
Accepts index of the forms accepted by Tcl's list commands\&. (e\&.g compound indices such as 3+1 end-2) |
||||||
|
.sp |
||||||
|
returns -1 for out of range at either end, or a valid integer index |
||||||
|
.sp |
||||||
|
Unlike lindex_resolve; lindex_resolve_basic can't determine if an out of range index was out of range at the lower or upper bound |
||||||
|
.sp |
||||||
|
This is only likely to be faster than average over lindex_resolve for small lists and for Tcl which has the builtin lseq command |
||||||
|
.sp |
||||||
|
The performance advantage is more likely to be present when using compound indexes such as $x+1 or end-1 |
||||||
|
.sp |
||||||
|
For pure integer indices the performance should be equivalent |
||||||
|
.TP |
||||||
|
\fBK\fR \fIx\fR \fIy\fR |
||||||
|
.sp |
||||||
|
The K-combinator function - returns the first argument, x and discards y |
||||||
|
.sp |
||||||
|
see \fIhttps://wiki\&.tcl-lang\&.org/page/K\fR |
||||||
|
.sp |
||||||
|
It is used in cases where command-substitution at the calling-point performs some desired effect\&. |
||||||
|
.TP |
||||||
|
\fBis_utf8_multibyteprefix\fR \fIstr\fR |
||||||
|
.sp |
||||||
|
Returns a boolean if str is potentially a prefix for a multibyte utf-8 character |
||||||
|
.sp |
||||||
|
ie - tests if it is possible that appending more data will result in a utf-8 codepoint |
||||||
|
.sp |
||||||
|
Will return false for an already complete utf-8 codepoint |
||||||
|
.sp |
||||||
|
It is assumed the incomplete sequence is at the beginning of the bytes argument |
||||||
|
.sp |
||||||
|
Suitable input for this might be from the unreturned tail portion of get_utf8_leading $testbytes |
||||||
|
.sp |
||||||
|
e\&.g using: set head [get_utf8_leading $testbytes] ; set tail [string range $testbytes [string length $head] end] |
||||||
|
.TP |
||||||
|
\fBis_utf8_single\fR \fI1234bytes\fR |
||||||
|
.sp |
||||||
|
Tests input of 1,2,3 or 4 bytes and responds with a boolean indicating if it is a valid utf-8 character (codepoint) |
||||||
|
.TP |
||||||
|
\fBget_utf8_leading\fR \fIrawbytes\fR |
||||||
|
.sp |
||||||
|
return the leading portion of rawbytes that is a valid utf8 sequence\&. |
||||||
|
.sp |
||||||
|
This will stop at the point at which the bytes can't be interpreted as a complete utf-8 codepoint |
||||||
|
.sp |
||||||
|
e\&.g It will not return the first byte or 2 of a 3-byte utf-8 character if the last byte is missing, and will return only the valid utf-8 string from before the first byte of the incomplete character\&. |
||||||
|
.sp |
||||||
|
It will also only return the prefix before any bytes that cannot be part of a utf-8 sequence at all\&. |
||||||
|
.sp |
||||||
|
Note that while this will return valid utf8 - it has no knowledge of grapheme clusters or diacritics |
||||||
|
.sp |
||||||
|
This means if it is being used to process bytes split at some arbitrary point - the trailing data that isn't returned could be part of a grapheme cluster that belongs with the last character of the leading string already returned |
||||||
|
.sp |
||||||
|
The utf-8 BOM \\xEF\\xBB\\xBF is a valid UTF8 3-byte sequence and so can also be returned as part of the leading utf8 bytes |
||||||
|
.TP |
||||||
|
\fBhex2dec\fR ?option value\&.\&.\&.? \fIlist_largeHex\fR |
||||||
|
.sp |
||||||
|
Convert a list of (possibly large) unprefixed hex strings to their decimal values |
||||||
|
.sp |
||||||
|
hex2dec accepts and ignores internal underscores in the same manner as Tcl 8\&.7+ numbers e\&.g hex2dec FF_FF returns 65535 |
||||||
|
.sp |
||||||
|
Leading and trailing underscores are ignored as a matter of implementation convenience - but this shouldn't be relied upon\&. |
||||||
|
.sp |
||||||
|
Leading or trailing whitespace in each list member is allowed e\&.g hex2dec " F" returns 15 |
||||||
|
.sp |
||||||
|
Internal whitespace e\&.g "F F" is not permitted - but a completely empty element "" is allowed and will return 0 |
||||||
|
.TP |
||||||
|
\fBdex2hex\fR ?option value\&.\&.\&.? \fIlist_decimals\fR |
||||||
|
.sp |
||||||
|
Convert a list of decimal integers to a list of hex values |
||||||
|
.sp |
||||||
|
-width <int> can be used to make each hex value at least int characters wide, with leading zeroes\&. |
||||||
|
.sp |
||||||
|
-case upper|lower determines the case of the hex letters in the output |
||||||
|
.TP |
||||||
|
\fBlog2\fR \fIx\fR |
||||||
|
.sp |
||||||
|
log base2 of x |
||||||
|
.sp |
||||||
|
This uses a 'live' proc body - the divisor for the change of base is computed once at definition time |
||||||
|
.sp |
||||||
|
(courtesy of RS \fIhttps://wiki\&.tcl-lang\&.org/page/Additional+math+functions\fR) |
||||||
|
.TP |
||||||
|
\fBlogbase\fR \fIb\fR \fIx\fR |
||||||
|
.sp |
||||||
|
log base b of x |
||||||
|
.sp |
||||||
|
This function uses expr's natural log and the change of base division\&. |
||||||
|
.sp |
||||||
|
This means for example that we can get results like: logbase 10 1000 = 2\&.9999999999999996 |
||||||
|
.sp |
||||||
|
Use expr's log10() function or tcl::mathfunc::log10 for base 10 |
||||||
|
.TP |
||||||
|
\fBfactors\fR \fIx\fR |
||||||
|
.sp |
||||||
|
Return a sorted list of the positive factors of x where x > 0 |
||||||
|
.sp |
||||||
|
For x = 0 we return only 0 and 1 as technically any number divides zero and there are an infinite number of factors\&. (including zero itself in this context)* |
||||||
|
.sp |
||||||
|
This is a simple brute-force implementation that iterates all numbers below the square root of x to check the factors |
||||||
|
.sp |
||||||
|
Because the implementation is so simple - the performance is very reasonable for numbers below at least a few 10's of millions |
||||||
|
.sp |
||||||
|
See tcllib math::numtheory::factors for a more complex implementation - which seems to be slower for 'small' numbers |
||||||
|
.sp |
||||||
|
Comparisons were done with some numbers below 17 digits long |
||||||
|
.sp |
||||||
|
For seriously big numbers - this simple algorithm would no doubt be outperformed by more complex algorithms\&. |
||||||
|
.sp |
||||||
|
The numtheory library stores some data about primes etc with each call - so may become faster when being used on more numbers |
||||||
|
but has the disadvantage of being slower for 'small' numbers and using more memory\&. |
||||||
|
.sp |
||||||
|
If the largest factor below x is needed - the greatestOddFactorBelow and GreatestFactorBelow functions are a faster way to get there than computing the whole list, even for small values of x |
||||||
|
.sp |
||||||
|
* Taking x=0; Notion of x being divisible by integer y being: There exists an integer p such that x = py |
||||||
|
.sp |
||||||
|
In other mathematical contexts zero may be considered not to divide anything\&. |
||||||
|
.TP |
||||||
|
\fBoddFactors\fR \fIx\fR |
||||||
|
.sp |
||||||
|
Return a list of odd integer factors of x, sorted in ascending order |
||||||
|
.TP |
||||||
|
\fBgreatestFactorBelow\fR \fIx\fR |
||||||
|
.sp |
||||||
|
Return the largest factor of x excluding itself |
||||||
|
.sp |
||||||
|
factor functions can be useful for console layout calculations |
||||||
|
.sp |
||||||
|
See Tcllib math::numtheory for more extensive implementations |
||||||
|
.TP |
||||||
|
\fBgreatestOddFactorBelow\fR \fIx\fR |
||||||
|
.sp |
||||||
|
Return the largest odd integer factor of x excluding x itself |
||||||
|
.TP |
||||||
|
\fBgreatestOddFactor\fR \fIx\fR |
||||||
|
.sp |
||||||
|
Return the largest odd integer factor of x |
||||||
|
.sp |
||||||
|
For an odd value of x - this will always return x |
||||||
|
.TP |
||||||
|
\fBgcd\fR \fIn\fR \fIm\fR |
||||||
|
.sp |
||||||
|
Return the greatest common divisor of m and n |
||||||
|
.sp |
||||||
|
Straight from Lars Hellström's math::numtheory library in Tcllib |
||||||
|
.sp |
||||||
|
Graphical use: |
||||||
|
.sp |
||||||
|
An a by b rectangle can be covered with square tiles of side-length c, |
||||||
|
.sp |
||||||
|
only if c is a common divisor of a and b |
||||||
|
.TP |
||||||
|
\fBgcd\fR \fIn\fR \fIm\fR |
||||||
|
.sp |
||||||
|
Return the lowest common multiple of m and n |
||||||
|
.sp |
||||||
|
Straight from Lars Hellström's math::numtheory library in Tcllib |
||||||
|
.sp |
||||||
|
.TP |
||||||
|
\fBcommonDivisors\fR \fIx\fR \fIy\fR |
||||||
|
.sp |
||||||
|
Return a list of all the common factors of x and y |
||||||
|
.sp |
||||||
|
(equivalent to factors of their gcd) |
||||||
|
.TP |
||||||
|
\fBhasglobs\fR \fIstr\fR |
||||||
|
.sp |
||||||
|
Return a boolean indicating whether str contains any of the glob characters: * ? [ ] |
||||||
|
.sp |
||||||
|
hasglobs uses append to preserve Tcls internal representation for str - so it should help avoid shimmering in the few cases where this may matter\&. |
||||||
|
.TP |
||||||
|
\fBtrimzero\fR \fInumber\fR |
||||||
|
.sp |
||||||
|
Return number with left-hand-side zeros trimmed off - unless all zero |
||||||
|
.sp |
||||||
|
If number is all zero - a single 0 is returned |
||||||
|
.TP |
||||||
|
\fBsubstring_count\fR \fIstr\fR \fIsubstring\fR |
||||||
|
.sp |
||||||
|
Search str and return number of occurrences of substring |
||||||
|
.TP |
||||||
|
\fBdict_merge_ordered\fR \fIdefaults\fR \fImain\fR |
||||||
|
.sp |
||||||
|
The standard dict merge accepts multiple dicts with values from dicts to the right (2nd argument) taking precedence\&. |
||||||
|
.sp |
||||||
|
When merging with a dict of default values - this means that any default key/vals that weren't in the main dict appear in the output before the main data\&. |
||||||
|
.sp |
||||||
|
This function merges the two dicts whilst maintaining the key order of main followed by defaults\&. |
||||||
|
.TP |
||||||
|
\fBaskuser\fR \fIquestion\fR |
||||||
|
.sp |
||||||
|
A basic utility to read an answer from stdin |
||||||
|
.sp |
||||||
|
The prompt is written to the terminal and then it waits for a user to type something |
||||||
|
.sp |
||||||
|
stdin is temporarily configured to blocking and then put back in its original state in case it wasn't already so\&. |
||||||
|
.sp |
||||||
|
If the terminal is using punk::console and is in raw mode - the terminal will temporarily be put in line mode\&. |
||||||
|
.sp |
||||||
|
(Generic terminal raw vs linemode detection not yet present) |
||||||
|
.sp |
||||||
|
The user must hit enter to submit the response |
||||||
|
.sp |
||||||
|
The return value is the string if any that was typed prior to hitting enter\&. |
||||||
|
.sp |
||||||
|
The question argument can be manually colourised using the various punk::ansi funcitons |
||||||
|
.CS |
||||||
|
|
||||||
|
|
||||||
|
set answer [punk::lib::askuser "[a+ green bold]Do you want to proceed? (Y|N)[a]"] |
||||||
|
if {[string match y* [string tolower $answer]]} { |
||||||
|
puts "Proceeding" |
||||||
|
} else { |
||||||
|
puts "Cancelled by user" |
||||||
|
} |
||||||
|
|
||||||
|
.CE |
||||||
|
.TP |
||||||
|
\fBlinesort\fR ?sortoption ?val?\&.\&.\&.? \fItextblock\fR |
||||||
|
.sp |
||||||
|
Sort lines in textblock |
||||||
|
.sp |
||||||
|
Returns another textblock with lines sorted |
||||||
|
.sp |
||||||
|
options are flags as accepted by lsort ie -ascii -command -decreasing -dictionary -index -indices -integer -nocase -real -stride -unique |
||||||
|
.TP |
||||||
|
\fBlist_as_lines\fR ?-joinchar char? \fIlinelist\fR |
||||||
|
.sp |
||||||
|
This simply joins the elements of the list with -joinchar |
||||||
|
.sp |
||||||
|
It is mainly intended for use in pipelines where the primary argument comes at the end - but it can also be used as a general replacement for join $lines <le> |
||||||
|
.sp |
||||||
|
The sister function lines_as_list takes a block of text and splits it into lines - but with more options related to trimming the block and/or each line\&. |
||||||
|
.TP |
||||||
|
\fBlines_as_list\fR ?option value \&.\&.\&.? \fItext\fR |
||||||
|
.sp |
||||||
|
Returns a list of possibly trimmed lines depeding on options |
||||||
|
.sp |
||||||
|
The concept of lines is raw lines from splitting on newline after crlf is mapped to lf |
||||||
|
.sp |
||||||
|
- not console lines which may be entirely different due to control characters such as vertical tabs or ANSI movements |
||||||
|
.PP |
||||||
|
.SH INTERNAL |
||||||
|
.SS "NAMESPACE PUNK::LIB::SYSTEM" |
||||||
|
.PP |
||||||
|
Internal functions that are not part of the API |
||||||
|
.PP |
||||||
|
.SH KEYWORDS |
||||||
|
lib, module, utility |
||||||
|
.SH COPYRIGHT |
||||||
|
.nf |
||||||
|
Copyright (c) 2024 |
||||||
|
|
||||||
|
.fi |
||||||
@ -0,0 +1,306 @@ |
|||||||
|
'\" |
||||||
|
'\" Generated from file '_module_libunknown-0\&.1\&.tm\&.man' by tcllib/doctools with format 'nroff' |
||||||
|
'\" Copyright (c) 2025 |
||||||
|
'\" |
||||||
|
.TH "shellspy_module_punk::libunknown" 0 0\&.1 doc "-" |
||||||
|
.\" The -*- nroff -*- definitions below are for supplemental macros used |
||||||
|
.\" in Tcl/Tk manual entries. |
||||||
|
.\" |
||||||
|
.\" .AP type name in/out ?indent? |
||||||
|
.\" Start paragraph describing an argument to a library procedure. |
||||||
|
.\" type is type of argument (int, etc.), in/out is either "in", "out", |
||||||
|
.\" or "in/out" to describe whether procedure reads or modifies arg, |
||||||
|
.\" and indent is equivalent to second arg of .IP (shouldn't ever be |
||||||
|
.\" needed; use .AS below instead) |
||||||
|
.\" |
||||||
|
.\" .AS ?type? ?name? |
||||||
|
.\" Give maximum sizes of arguments for setting tab stops. Type and |
||||||
|
.\" name are examples of largest possible arguments that will be passed |
||||||
|
.\" to .AP later. If args are omitted, default tab stops are used. |
||||||
|
.\" |
||||||
|
.\" .BS |
||||||
|
.\" Start box enclosure. From here until next .BE, everything will be |
||||||
|
.\" enclosed in one large box. |
||||||
|
.\" |
||||||
|
.\" .BE |
||||||
|
.\" End of box enclosure. |
||||||
|
.\" |
||||||
|
.\" .CS |
||||||
|
.\" Begin code excerpt. |
||||||
|
.\" |
||||||
|
.\" .CE |
||||||
|
.\" End code excerpt. |
||||||
|
.\" |
||||||
|
.\" .VS ?version? ?br? |
||||||
|
.\" Begin vertical sidebar, for use in marking newly-changed parts |
||||||
|
.\" of man pages. The first argument is ignored and used for recording |
||||||
|
.\" the version when the .VS was added, so that the sidebars can be |
||||||
|
.\" found and removed when they reach a certain age. If another argument |
||||||
|
.\" is present, then a line break is forced before starting the sidebar. |
||||||
|
.\" |
||||||
|
.\" .VE |
||||||
|
.\" End of vertical sidebar. |
||||||
|
.\" |
||||||
|
.\" .DS |
||||||
|
.\" Begin an indented unfilled display. |
||||||
|
.\" |
||||||
|
.\" .DE |
||||||
|
.\" End of indented unfilled display. |
||||||
|
.\" |
||||||
|
.\" .SO ?manpage? |
||||||
|
.\" Start of list of standard options for a Tk widget. The manpage |
||||||
|
.\" argument defines where to look up the standard options; if |
||||||
|
.\" omitted, defaults to "options". The options follow on successive |
||||||
|
.\" lines, in three columns separated by tabs. |
||||||
|
.\" |
||||||
|
.\" .SE |
||||||
|
.\" End of list of standard options for a Tk widget. |
||||||
|
.\" |
||||||
|
.\" .OP cmdName dbName dbClass |
||||||
|
.\" Start of description of a specific option. cmdName gives the |
||||||
|
.\" option's name as specified in the class command, dbName gives |
||||||
|
.\" the option's name in the option database, and dbClass gives |
||||||
|
.\" the option's class in the option database. |
||||||
|
.\" |
||||||
|
.\" .UL arg1 arg2 |
||||||
|
.\" Print arg1 underlined, then print arg2 normally. |
||||||
|
.\" |
||||||
|
.\" .QW arg1 ?arg2? |
||||||
|
.\" Print arg1 in quotes, then arg2 normally (for trailing punctuation). |
||||||
|
.\" |
||||||
|
.\" .PQ arg1 ?arg2? |
||||||
|
.\" Print an open parenthesis, arg1 in quotes, then arg2 normally |
||||||
|
.\" (for trailing punctuation) and then a closing parenthesis. |
||||||
|
.\" |
||||||
|
.\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. |
||||||
|
.if t .wh -1.3i ^B |
||||||
|
.nr ^l \n(.l |
||||||
|
.ad b |
||||||
|
.\" # Start an argument description |
||||||
|
.de AP |
||||||
|
.ie !"\\$4"" .TP \\$4 |
||||||
|
.el \{\ |
||||||
|
. ie !"\\$2"" .TP \\n()Cu |
||||||
|
. el .TP 15 |
||||||
|
.\} |
||||||
|
.ta \\n()Au \\n()Bu |
||||||
|
.ie !"\\$3"" \{\ |
||||||
|
\&\\$1 \\fI\\$2\\fP (\\$3) |
||||||
|
.\".b |
||||||
|
.\} |
||||||
|
.el \{\ |
||||||
|
.br |
||||||
|
.ie !"\\$2"" \{\ |
||||||
|
\&\\$1 \\fI\\$2\\fP |
||||||
|
.\} |
||||||
|
.el \{\ |
||||||
|
\&\\fI\\$1\\fP |
||||||
|
.\} |
||||||
|
.\} |
||||||
|
.. |
||||||
|
.\" # define tabbing values for .AP |
||||||
|
.de AS |
||||||
|
.nr )A 10n |
||||||
|
.if !"\\$1"" .nr )A \\w'\\$1'u+3n |
||||||
|
.nr )B \\n()Au+15n |
||||||
|
.\" |
||||||
|
.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n |
||||||
|
.nr )C \\n()Bu+\\w'(in/out)'u+2n |
||||||
|
.. |
||||||
|
.AS Tcl_Interp Tcl_CreateInterp in/out |
||||||
|
.\" # BS - start boxed text |
||||||
|
.\" # ^y = starting y location |
||||||
|
.\" # ^b = 1 |
||||||
|
.de BS |
||||||
|
.br |
||||||
|
.mk ^y |
||||||
|
.nr ^b 1u |
||||||
|
.if n .nf |
||||||
|
.if n .ti 0 |
||||||
|
.if n \l'\\n(.lu\(ul' |
||||||
|
.if n .fi |
||||||
|
.. |
||||||
|
.\" # BE - end boxed text (draw box now) |
||||||
|
.de BE |
||||||
|
.nf |
||||||
|
.ti 0 |
||||||
|
.mk ^t |
||||||
|
.ie n \l'\\n(^lu\(ul' |
||||||
|
.el \{\ |
||||||
|
.\" Draw four-sided box normally, but don't draw top of |
||||||
|
.\" box if the box started on an earlier page. |
||||||
|
.ie !\\n(^b-1 \{\ |
||||||
|
\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' |
||||||
|
.\} |
||||||
|
.el \}\ |
||||||
|
\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' |
||||||
|
.\} |
||||||
|
.\} |
||||||
|
.fi |
||||||
|
.br |
||||||
|
.nr ^b 0 |
||||||
|
.. |
||||||
|
.\" # VS - start vertical sidebar |
||||||
|
.\" # ^Y = starting y location |
||||||
|
.\" # ^v = 1 (for troff; for nroff this doesn't matter) |
||||||
|
.de VS |
||||||
|
.if !"\\$2"" .br |
||||||
|
.mk ^Y |
||||||
|
.ie n 'mc \s12\(br\s0 |
||||||
|
.el .nr ^v 1u |
||||||
|
.. |
||||||
|
.\" # VE - end of vertical sidebar |
||||||
|
.de VE |
||||||
|
.ie n 'mc |
||||||
|
.el \{\ |
||||||
|
.ev 2 |
||||||
|
.nf |
||||||
|
.ti 0 |
||||||
|
.mk ^t |
||||||
|
\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' |
||||||
|
.sp -1 |
||||||
|
.fi |
||||||
|
.ev |
||||||
|
.\} |
||||||
|
.nr ^v 0 |
||||||
|
.. |
||||||
|
.\" # Special macro to handle page bottom: finish off current |
||||||
|
.\" # box/sidebar if in box/sidebar mode, then invoked standard |
||||||
|
.\" # page bottom macro. |
||||||
|
.de ^B |
||||||
|
.ev 2 |
||||||
|
'ti 0 |
||||||
|
'nf |
||||||
|
.mk ^t |
||||||
|
.if \\n(^b \{\ |
||||||
|
.\" Draw three-sided box if this is the box's first page, |
||||||
|
.\" draw two sides but no top otherwise. |
||||||
|
.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c |
||||||
|
.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c |
||||||
|
.\} |
||||||
|
.if \\n(^v \{\ |
||||||
|
.nr ^x \\n(^tu+1v-\\n(^Yu |
||||||
|
\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c |
||||||
|
.\} |
||||||
|
.bp |
||||||
|
'fi |
||||||
|
.ev |
||||||
|
.if \\n(^b \{\ |
||||||
|
.mk ^y |
||||||
|
.nr ^b 2 |
||||||
|
.\} |
||||||
|
.if \\n(^v \{\ |
||||||
|
.mk ^Y |
||||||
|
.\} |
||||||
|
.. |
||||||
|
.\" # DS - begin display |
||||||
|
.de DS |
||||||
|
.RS |
||||||
|
.nf |
||||||
|
.sp |
||||||
|
.. |
||||||
|
.\" # DE - end display |
||||||
|
.de DE |
||||||
|
.fi |
||||||
|
.RE |
||||||
|
.sp |
||||||
|
.. |
||||||
|
.\" # SO - start of list of standard options |
||||||
|
.de SO |
||||||
|
'ie '\\$1'' .ds So \\fBoptions\\fR |
||||||
|
'el .ds So \\fB\\$1\\fR |
||||||
|
.SH "STANDARD OPTIONS" |
||||||
|
.LP |
||||||
|
.nf |
||||||
|
.ta 5.5c 11c |
||||||
|
.ft B |
||||||
|
.. |
||||||
|
.\" # SE - end of list of standard options |
||||||
|
.de SE |
||||||
|
.fi |
||||||
|
.ft R |
||||||
|
.LP |
||||||
|
See the \\*(So manual entry for details on the standard options. |
||||||
|
.. |
||||||
|
.\" # OP - start of full description for a single option |
||||||
|
.de OP |
||||||
|
.LP |
||||||
|
.nf |
||||||
|
.ta 4c |
||||||
|
Command-Line Name: \\fB\\$1\\fR |
||||||
|
Database Name: \\fB\\$2\\fR |
||||||
|
Database Class: \\fB\\$3\\fR |
||||||
|
.fi |
||||||
|
.IP |
||||||
|
.. |
||||||
|
.\" # CS - begin code excerpt |
||||||
|
.de CS |
||||||
|
.RS |
||||||
|
.nf |
||||||
|
.ta .25i .5i .75i 1i |
||||||
|
.. |
||||||
|
.\" # CE - end code excerpt |
||||||
|
.de CE |
||||||
|
.fi |
||||||
|
.RE |
||||||
|
.. |
||||||
|
.\" # UL - underline word |
||||||
|
.de UL |
||||||
|
\\$1\l'|0\(ul'\\$2 |
||||||
|
.. |
||||||
|
.\" # QW - apply quotation marks to word |
||||||
|
.de QW |
||||||
|
.ie '\\*(lq'"' ``\\$1''\\$2 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el \\*(lq\\$1\\*(rq\\$2 |
||||||
|
.. |
||||||
|
.\" # PQ - apply parens and quotation marks to word |
||||||
|
.de PQ |
||||||
|
.ie '\\*(lq'"' (``\\$1''\\$2)\\$3 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el (\\*(lq\\$1\\*(rq\\$2)\\$3 |
||||||
|
.. |
||||||
|
.\" # QR - quoted range |
||||||
|
.de QR |
||||||
|
.ie '\\*(lq'"' ``\\$1''\\-``\\$2''\\$3 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el \\*(lq\\$1\\*(rq\\-\\*(lq\\$2\\*(rq\\$3 |
||||||
|
.. |
||||||
|
.\" # MT - "empty" string |
||||||
|
.de MT |
||||||
|
.QW "" |
||||||
|
.. |
||||||
|
.BS |
||||||
|
.SH NAME |
||||||
|
shellspy_module_punk::libunknown \- Module API |
||||||
|
.SH SYNOPSIS |
||||||
|
package require \fBpunk::libunknown\fR |
||||||
|
.sp |
||||||
|
.BE |
||||||
|
.SH DESCRIPTION |
||||||
|
.PP |
||||||
|
- |
||||||
|
.SH OVERVIEW |
||||||
|
.PP |
||||||
|
overview of punk::libunknown |
||||||
|
.SS CONCEPTS |
||||||
|
.PP |
||||||
|
- |
||||||
|
.SS DEPENDENCIES |
||||||
|
.PP |
||||||
|
packages used by punk::libunknown |
||||||
|
.IP \(bu |
||||||
|
\fBTcl 8\&.6\fR |
||||||
|
.PP |
||||||
|
.SH API |
||||||
|
.SS "NAMESPACE PUNK::LIBUNKNOWN" |
||||||
|
.PP |
||||||
|
Core API functions for punk::libunknown |
||||||
|
.PP |
||||||
|
.SH KEYWORDS |
||||||
|
module |
||||||
|
.SH COPYRIGHT |
||||||
|
.nf |
||||||
|
Copyright (c) 2025 |
||||||
|
|
||||||
|
.fi |
||||||
@ -0,0 +1,325 @@ |
|||||||
|
'\" |
||||||
|
'\" Generated from file '_module_netbox-0\&.1\&.0\&.tm\&.man' by tcllib/doctools with format 'nroff' |
||||||
|
'\" Copyright (c) 2025 |
||||||
|
'\" |
||||||
|
.TH "shellspy_module_punk::netbox" 0 0\&.1\&.0 doc "-" |
||||||
|
.\" The -*- nroff -*- definitions below are for supplemental macros used |
||||||
|
.\" in Tcl/Tk manual entries. |
||||||
|
.\" |
||||||
|
.\" .AP type name in/out ?indent? |
||||||
|
.\" Start paragraph describing an argument to a library procedure. |
||||||
|
.\" type is type of argument (int, etc.), in/out is either "in", "out", |
||||||
|
.\" or "in/out" to describe whether procedure reads or modifies arg, |
||||||
|
.\" and indent is equivalent to second arg of .IP (shouldn't ever be |
||||||
|
.\" needed; use .AS below instead) |
||||||
|
.\" |
||||||
|
.\" .AS ?type? ?name? |
||||||
|
.\" Give maximum sizes of arguments for setting tab stops. Type and |
||||||
|
.\" name are examples of largest possible arguments that will be passed |
||||||
|
.\" to .AP later. If args are omitted, default tab stops are used. |
||||||
|
.\" |
||||||
|
.\" .BS |
||||||
|
.\" Start box enclosure. From here until next .BE, everything will be |
||||||
|
.\" enclosed in one large box. |
||||||
|
.\" |
||||||
|
.\" .BE |
||||||
|
.\" End of box enclosure. |
||||||
|
.\" |
||||||
|
.\" .CS |
||||||
|
.\" Begin code excerpt. |
||||||
|
.\" |
||||||
|
.\" .CE |
||||||
|
.\" End code excerpt. |
||||||
|
.\" |
||||||
|
.\" .VS ?version? ?br? |
||||||
|
.\" Begin vertical sidebar, for use in marking newly-changed parts |
||||||
|
.\" of man pages. The first argument is ignored and used for recording |
||||||
|
.\" the version when the .VS was added, so that the sidebars can be |
||||||
|
.\" found and removed when they reach a certain age. If another argument |
||||||
|
.\" is present, then a line break is forced before starting the sidebar. |
||||||
|
.\" |
||||||
|
.\" .VE |
||||||
|
.\" End of vertical sidebar. |
||||||
|
.\" |
||||||
|
.\" .DS |
||||||
|
.\" Begin an indented unfilled display. |
||||||
|
.\" |
||||||
|
.\" .DE |
||||||
|
.\" End of indented unfilled display. |
||||||
|
.\" |
||||||
|
.\" .SO ?manpage? |
||||||
|
.\" Start of list of standard options for a Tk widget. The manpage |
||||||
|
.\" argument defines where to look up the standard options; if |
||||||
|
.\" omitted, defaults to "options". The options follow on successive |
||||||
|
.\" lines, in three columns separated by tabs. |
||||||
|
.\" |
||||||
|
.\" .SE |
||||||
|
.\" End of list of standard options for a Tk widget. |
||||||
|
.\" |
||||||
|
.\" .OP cmdName dbName dbClass |
||||||
|
.\" Start of description of a specific option. cmdName gives the |
||||||
|
.\" option's name as specified in the class command, dbName gives |
||||||
|
.\" the option's name in the option database, and dbClass gives |
||||||
|
.\" the option's class in the option database. |
||||||
|
.\" |
||||||
|
.\" .UL arg1 arg2 |
||||||
|
.\" Print arg1 underlined, then print arg2 normally. |
||||||
|
.\" |
||||||
|
.\" .QW arg1 ?arg2? |
||||||
|
.\" Print arg1 in quotes, then arg2 normally (for trailing punctuation). |
||||||
|
.\" |
||||||
|
.\" .PQ arg1 ?arg2? |
||||||
|
.\" Print an open parenthesis, arg1 in quotes, then arg2 normally |
||||||
|
.\" (for trailing punctuation) and then a closing parenthesis. |
||||||
|
.\" |
||||||
|
.\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. |
||||||
|
.if t .wh -1.3i ^B |
||||||
|
.nr ^l \n(.l |
||||||
|
.ad b |
||||||
|
.\" # Start an argument description |
||||||
|
.de AP |
||||||
|
.ie !"\\$4"" .TP \\$4 |
||||||
|
.el \{\ |
||||||
|
. ie !"\\$2"" .TP \\n()Cu |
||||||
|
. el .TP 15 |
||||||
|
.\} |
||||||
|
.ta \\n()Au \\n()Bu |
||||||
|
.ie !"\\$3"" \{\ |
||||||
|
\&\\$1 \\fI\\$2\\fP (\\$3) |
||||||
|
.\".b |
||||||
|
.\} |
||||||
|
.el \{\ |
||||||
|
.br |
||||||
|
.ie !"\\$2"" \{\ |
||||||
|
\&\\$1 \\fI\\$2\\fP |
||||||
|
.\} |
||||||
|
.el \{\ |
||||||
|
\&\\fI\\$1\\fP |
||||||
|
.\} |
||||||
|
.\} |
||||||
|
.. |
||||||
|
.\" # define tabbing values for .AP |
||||||
|
.de AS |
||||||
|
.nr )A 10n |
||||||
|
.if !"\\$1"" .nr )A \\w'\\$1'u+3n |
||||||
|
.nr )B \\n()Au+15n |
||||||
|
.\" |
||||||
|
.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n |
||||||
|
.nr )C \\n()Bu+\\w'(in/out)'u+2n |
||||||
|
.. |
||||||
|
.AS Tcl_Interp Tcl_CreateInterp in/out |
||||||
|
.\" # BS - start boxed text |
||||||
|
.\" # ^y = starting y location |
||||||
|
.\" # ^b = 1 |
||||||
|
.de BS |
||||||
|
.br |
||||||
|
.mk ^y |
||||||
|
.nr ^b 1u |
||||||
|
.if n .nf |
||||||
|
.if n .ti 0 |
||||||
|
.if n \l'\\n(.lu\(ul' |
||||||
|
.if n .fi |
||||||
|
.. |
||||||
|
.\" # BE - end boxed text (draw box now) |
||||||
|
.de BE |
||||||
|
.nf |
||||||
|
.ti 0 |
||||||
|
.mk ^t |
||||||
|
.ie n \l'\\n(^lu\(ul' |
||||||
|
.el \{\ |
||||||
|
.\" Draw four-sided box normally, but don't draw top of |
||||||
|
.\" box if the box started on an earlier page. |
||||||
|
.ie !\\n(^b-1 \{\ |
||||||
|
\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' |
||||||
|
.\} |
||||||
|
.el \}\ |
||||||
|
\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' |
||||||
|
.\} |
||||||
|
.\} |
||||||
|
.fi |
||||||
|
.br |
||||||
|
.nr ^b 0 |
||||||
|
.. |
||||||
|
.\" # VS - start vertical sidebar |
||||||
|
.\" # ^Y = starting y location |
||||||
|
.\" # ^v = 1 (for troff; for nroff this doesn't matter) |
||||||
|
.de VS |
||||||
|
.if !"\\$2"" .br |
||||||
|
.mk ^Y |
||||||
|
.ie n 'mc \s12\(br\s0 |
||||||
|
.el .nr ^v 1u |
||||||
|
.. |
||||||
|
.\" # VE - end of vertical sidebar |
||||||
|
.de VE |
||||||
|
.ie n 'mc |
||||||
|
.el \{\ |
||||||
|
.ev 2 |
||||||
|
.nf |
||||||
|
.ti 0 |
||||||
|
.mk ^t |
||||||
|
\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' |
||||||
|
.sp -1 |
||||||
|
.fi |
||||||
|
.ev |
||||||
|
.\} |
||||||
|
.nr ^v 0 |
||||||
|
.. |
||||||
|
.\" # Special macro to handle page bottom: finish off current |
||||||
|
.\" # box/sidebar if in box/sidebar mode, then invoked standard |
||||||
|
.\" # page bottom macro. |
||||||
|
.de ^B |
||||||
|
.ev 2 |
||||||
|
'ti 0 |
||||||
|
'nf |
||||||
|
.mk ^t |
||||||
|
.if \\n(^b \{\ |
||||||
|
.\" Draw three-sided box if this is the box's first page, |
||||||
|
.\" draw two sides but no top otherwise. |
||||||
|
.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c |
||||||
|
.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c |
||||||
|
.\} |
||||||
|
.if \\n(^v \{\ |
||||||
|
.nr ^x \\n(^tu+1v-\\n(^Yu |
||||||
|
\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c |
||||||
|
.\} |
||||||
|
.bp |
||||||
|
'fi |
||||||
|
.ev |
||||||
|
.if \\n(^b \{\ |
||||||
|
.mk ^y |
||||||
|
.nr ^b 2 |
||||||
|
.\} |
||||||
|
.if \\n(^v \{\ |
||||||
|
.mk ^Y |
||||||
|
.\} |
||||||
|
.. |
||||||
|
.\" # DS - begin display |
||||||
|
.de DS |
||||||
|
.RS |
||||||
|
.nf |
||||||
|
.sp |
||||||
|
.. |
||||||
|
.\" # DE - end display |
||||||
|
.de DE |
||||||
|
.fi |
||||||
|
.RE |
||||||
|
.sp |
||||||
|
.. |
||||||
|
.\" # SO - start of list of standard options |
||||||
|
.de SO |
||||||
|
'ie '\\$1'' .ds So \\fBoptions\\fR |
||||||
|
'el .ds So \\fB\\$1\\fR |
||||||
|
.SH "STANDARD OPTIONS" |
||||||
|
.LP |
||||||
|
.nf |
||||||
|
.ta 5.5c 11c |
||||||
|
.ft B |
||||||
|
.. |
||||||
|
.\" # SE - end of list of standard options |
||||||
|
.de SE |
||||||
|
.fi |
||||||
|
.ft R |
||||||
|
.LP |
||||||
|
See the \\*(So manual entry for details on the standard options. |
||||||
|
.. |
||||||
|
.\" # OP - start of full description for a single option |
||||||
|
.de OP |
||||||
|
.LP |
||||||
|
.nf |
||||||
|
.ta 4c |
||||||
|
Command-Line Name: \\fB\\$1\\fR |
||||||
|
Database Name: \\fB\\$2\\fR |
||||||
|
Database Class: \\fB\\$3\\fR |
||||||
|
.fi |
||||||
|
.IP |
||||||
|
.. |
||||||
|
.\" # CS - begin code excerpt |
||||||
|
.de CS |
||||||
|
.RS |
||||||
|
.nf |
||||||
|
.ta .25i .5i .75i 1i |
||||||
|
.. |
||||||
|
.\" # CE - end code excerpt |
||||||
|
.de CE |
||||||
|
.fi |
||||||
|
.RE |
||||||
|
.. |
||||||
|
.\" # UL - underline word |
||||||
|
.de UL |
||||||
|
\\$1\l'|0\(ul'\\$2 |
||||||
|
.. |
||||||
|
.\" # QW - apply quotation marks to word |
||||||
|
.de QW |
||||||
|
.ie '\\*(lq'"' ``\\$1''\\$2 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el \\*(lq\\$1\\*(rq\\$2 |
||||||
|
.. |
||||||
|
.\" # PQ - apply parens and quotation marks to word |
||||||
|
.de PQ |
||||||
|
.ie '\\*(lq'"' (``\\$1''\\$2)\\$3 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el (\\*(lq\\$1\\*(rq\\$2)\\$3 |
||||||
|
.. |
||||||
|
.\" # QR - quoted range |
||||||
|
.de QR |
||||||
|
.ie '\\*(lq'"' ``\\$1''\\-``\\$2''\\$3 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el \\*(lq\\$1\\*(rq\\-\\*(lq\\$2\\*(rq\\$3 |
||||||
|
.. |
||||||
|
.\" # MT - "empty" string |
||||||
|
.de MT |
||||||
|
.QW "" |
||||||
|
.. |
||||||
|
.BS |
||||||
|
.SH NAME |
||||||
|
shellspy_module_punk::netbox \- Module API |
||||||
|
.SH SYNOPSIS |
||||||
|
package require \fBpunk::netbox\fR |
||||||
|
.sp |
||||||
|
.BE |
||||||
|
.SH DESCRIPTION |
||||||
|
.PP |
||||||
|
- |
||||||
|
.SH OVERVIEW |
||||||
|
.PP |
||||||
|
overview of punk::netbox |
||||||
|
.SS CONCEPTS |
||||||
|
.PP |
||||||
|
- |
||||||
|
.SS DEPENDENCIES |
||||||
|
.PP |
||||||
|
packages used by punk::netbox |
||||||
|
.IP \(bu |
||||||
|
\fBTcl 8\&.6\fR |
||||||
|
.IP \(bu |
||||||
|
\fBhttp\fR |
||||||
|
.PP |
||||||
|
.SH API |
||||||
|
.SS "NAMESPACE PUNK::NETBOX::CLASS" |
||||||
|
.PP |
||||||
|
class definitions |
||||||
|
if { eq ""} { |
||||||
|
*** !doctools |
||||||
|
.PP |
||||||
|
} |
||||||
|
} |
||||||
|
++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ |
||||||
|
.SH INTERNAL |
||||||
|
.SS "NAMESPACE PUNK::NETBOX::SYSTEM" |
||||||
|
.PP |
||||||
|
Internal functions that are not part of the API |
||||||
|
.SS "NAMESPACE PUNK::NETBOX" |
||||||
|
.PP |
||||||
|
Core API functions for punk::netbox |
||||||
|
.PP |
||||||
|
.SS "NAMESPACE PUNK::NETBOX::LIB" |
||||||
|
.PP |
||||||
|
Secondary functions that are part of the API |
||||||
|
.PP |
||||||
|
.SH KEYWORDS |
||||||
|
module |
||||||
|
.SH COPYRIGHT |
||||||
|
.nf |
||||||
|
Copyright (c) 2025 |
||||||
|
|
||||||
|
.fi |
||||||
@ -0,0 +1,325 @@ |
|||||||
|
'\" |
||||||
|
'\" Generated from file '_module_pcon-1\&.0\&.tm\&.man' by tcllib/doctools with format 'nroff' |
||||||
|
'\" Copyright (c) 2025 |
||||||
|
'\" |
||||||
|
.TH "shellspy_module_punk::pcon" 0 1\&.0 doc "-" |
||||||
|
.\" The -*- nroff -*- definitions below are for supplemental macros used |
||||||
|
.\" in Tcl/Tk manual entries. |
||||||
|
.\" |
||||||
|
.\" .AP type name in/out ?indent? |
||||||
|
.\" Start paragraph describing an argument to a library procedure. |
||||||
|
.\" type is type of argument (int, etc.), in/out is either "in", "out", |
||||||
|
.\" or "in/out" to describe whether procedure reads or modifies arg, |
||||||
|
.\" and indent is equivalent to second arg of .IP (shouldn't ever be |
||||||
|
.\" needed; use .AS below instead) |
||||||
|
.\" |
||||||
|
.\" .AS ?type? ?name? |
||||||
|
.\" Give maximum sizes of arguments for setting tab stops. Type and |
||||||
|
.\" name are examples of largest possible arguments that will be passed |
||||||
|
.\" to .AP later. If args are omitted, default tab stops are used. |
||||||
|
.\" |
||||||
|
.\" .BS |
||||||
|
.\" Start box enclosure. From here until next .BE, everything will be |
||||||
|
.\" enclosed in one large box. |
||||||
|
.\" |
||||||
|
.\" .BE |
||||||
|
.\" End of box enclosure. |
||||||
|
.\" |
||||||
|
.\" .CS |
||||||
|
.\" Begin code excerpt. |
||||||
|
.\" |
||||||
|
.\" .CE |
||||||
|
.\" End code excerpt. |
||||||
|
.\" |
||||||
|
.\" .VS ?version? ?br? |
||||||
|
.\" Begin vertical sidebar, for use in marking newly-changed parts |
||||||
|
.\" of man pages. The first argument is ignored and used for recording |
||||||
|
.\" the version when the .VS was added, so that the sidebars can be |
||||||
|
.\" found and removed when they reach a certain age. If another argument |
||||||
|
.\" is present, then a line break is forced before starting the sidebar. |
||||||
|
.\" |
||||||
|
.\" .VE |
||||||
|
.\" End of vertical sidebar. |
||||||
|
.\" |
||||||
|
.\" .DS |
||||||
|
.\" Begin an indented unfilled display. |
||||||
|
.\" |
||||||
|
.\" .DE |
||||||
|
.\" End of indented unfilled display. |
||||||
|
.\" |
||||||
|
.\" .SO ?manpage? |
||||||
|
.\" Start of list of standard options for a Tk widget. The manpage |
||||||
|
.\" argument defines where to look up the standard options; if |
||||||
|
.\" omitted, defaults to "options". The options follow on successive |
||||||
|
.\" lines, in three columns separated by tabs. |
||||||
|
.\" |
||||||
|
.\" .SE |
||||||
|
.\" End of list of standard options for a Tk widget. |
||||||
|
.\" |
||||||
|
.\" .OP cmdName dbName dbClass |
||||||
|
.\" Start of description of a specific option. cmdName gives the |
||||||
|
.\" option's name as specified in the class command, dbName gives |
||||||
|
.\" the option's name in the option database, and dbClass gives |
||||||
|
.\" the option's class in the option database. |
||||||
|
.\" |
||||||
|
.\" .UL arg1 arg2 |
||||||
|
.\" Print arg1 underlined, then print arg2 normally. |
||||||
|
.\" |
||||||
|
.\" .QW arg1 ?arg2? |
||||||
|
.\" Print arg1 in quotes, then arg2 normally (for trailing punctuation). |
||||||
|
.\" |
||||||
|
.\" .PQ arg1 ?arg2? |
||||||
|
.\" Print an open parenthesis, arg1 in quotes, then arg2 normally |
||||||
|
.\" (for trailing punctuation) and then a closing parenthesis. |
||||||
|
.\" |
||||||
|
.\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. |
||||||
|
.if t .wh -1.3i ^B |
||||||
|
.nr ^l \n(.l |
||||||
|
.ad b |
||||||
|
.\" # Start an argument description |
||||||
|
.de AP |
||||||
|
.ie !"\\$4"" .TP \\$4 |
||||||
|
.el \{\ |
||||||
|
. ie !"\\$2"" .TP \\n()Cu |
||||||
|
. el .TP 15 |
||||||
|
.\} |
||||||
|
.ta \\n()Au \\n()Bu |
||||||
|
.ie !"\\$3"" \{\ |
||||||
|
\&\\$1 \\fI\\$2\\fP (\\$3) |
||||||
|
.\".b |
||||||
|
.\} |
||||||
|
.el \{\ |
||||||
|
.br |
||||||
|
.ie !"\\$2"" \{\ |
||||||
|
\&\\$1 \\fI\\$2\\fP |
||||||
|
.\} |
||||||
|
.el \{\ |
||||||
|
\&\\fI\\$1\\fP |
||||||
|
.\} |
||||||
|
.\} |
||||||
|
.. |
||||||
|
.\" # define tabbing values for .AP |
||||||
|
.de AS |
||||||
|
.nr )A 10n |
||||||
|
.if !"\\$1"" .nr )A \\w'\\$1'u+3n |
||||||
|
.nr )B \\n()Au+15n |
||||||
|
.\" |
||||||
|
.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n |
||||||
|
.nr )C \\n()Bu+\\w'(in/out)'u+2n |
||||||
|
.. |
||||||
|
.AS Tcl_Interp Tcl_CreateInterp in/out |
||||||
|
.\" # BS - start boxed text |
||||||
|
.\" # ^y = starting y location |
||||||
|
.\" # ^b = 1 |
||||||
|
.de BS |
||||||
|
.br |
||||||
|
.mk ^y |
||||||
|
.nr ^b 1u |
||||||
|
.if n .nf |
||||||
|
.if n .ti 0 |
||||||
|
.if n \l'\\n(.lu\(ul' |
||||||
|
.if n .fi |
||||||
|
.. |
||||||
|
.\" # BE - end boxed text (draw box now) |
||||||
|
.de BE |
||||||
|
.nf |
||||||
|
.ti 0 |
||||||
|
.mk ^t |
||||||
|
.ie n \l'\\n(^lu\(ul' |
||||||
|
.el \{\ |
||||||
|
.\" Draw four-sided box normally, but don't draw top of |
||||||
|
.\" box if the box started on an earlier page. |
||||||
|
.ie !\\n(^b-1 \{\ |
||||||
|
\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' |
||||||
|
.\} |
||||||
|
.el \}\ |
||||||
|
\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' |
||||||
|
.\} |
||||||
|
.\} |
||||||
|
.fi |
||||||
|
.br |
||||||
|
.nr ^b 0 |
||||||
|
.. |
||||||
|
.\" # VS - start vertical sidebar |
||||||
|
.\" # ^Y = starting y location |
||||||
|
.\" # ^v = 1 (for troff; for nroff this doesn't matter) |
||||||
|
.de VS |
||||||
|
.if !"\\$2"" .br |
||||||
|
.mk ^Y |
||||||
|
.ie n 'mc \s12\(br\s0 |
||||||
|
.el .nr ^v 1u |
||||||
|
.. |
||||||
|
.\" # VE - end of vertical sidebar |
||||||
|
.de VE |
||||||
|
.ie n 'mc |
||||||
|
.el \{\ |
||||||
|
.ev 2 |
||||||
|
.nf |
||||||
|
.ti 0 |
||||||
|
.mk ^t |
||||||
|
\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' |
||||||
|
.sp -1 |
||||||
|
.fi |
||||||
|
.ev |
||||||
|
.\} |
||||||
|
.nr ^v 0 |
||||||
|
.. |
||||||
|
.\" # Special macro to handle page bottom: finish off current |
||||||
|
.\" # box/sidebar if in box/sidebar mode, then invoked standard |
||||||
|
.\" # page bottom macro. |
||||||
|
.de ^B |
||||||
|
.ev 2 |
||||||
|
'ti 0 |
||||||
|
'nf |
||||||
|
.mk ^t |
||||||
|
.if \\n(^b \{\ |
||||||
|
.\" Draw three-sided box if this is the box's first page, |
||||||
|
.\" draw two sides but no top otherwise. |
||||||
|
.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c |
||||||
|
.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c |
||||||
|
.\} |
||||||
|
.if \\n(^v \{\ |
||||||
|
.nr ^x \\n(^tu+1v-\\n(^Yu |
||||||
|
\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c |
||||||
|
.\} |
||||||
|
.bp |
||||||
|
'fi |
||||||
|
.ev |
||||||
|
.if \\n(^b \{\ |
||||||
|
.mk ^y |
||||||
|
.nr ^b 2 |
||||||
|
.\} |
||||||
|
.if \\n(^v \{\ |
||||||
|
.mk ^Y |
||||||
|
.\} |
||||||
|
.. |
||||||
|
.\" # DS - begin display |
||||||
|
.de DS |
||||||
|
.RS |
||||||
|
.nf |
||||||
|
.sp |
||||||
|
.. |
||||||
|
.\" # DE - end display |
||||||
|
.de DE |
||||||
|
.fi |
||||||
|
.RE |
||||||
|
.sp |
||||||
|
.. |
||||||
|
.\" # SO - start of list of standard options |
||||||
|
.de SO |
||||||
|
'ie '\\$1'' .ds So \\fBoptions\\fR |
||||||
|
'el .ds So \\fB\\$1\\fR |
||||||
|
.SH "STANDARD OPTIONS" |
||||||
|
.LP |
||||||
|
.nf |
||||||
|
.ta 5.5c 11c |
||||||
|
.ft B |
||||||
|
.. |
||||||
|
.\" # SE - end of list of standard options |
||||||
|
.de SE |
||||||
|
.fi |
||||||
|
.ft R |
||||||
|
.LP |
||||||
|
See the \\*(So manual entry for details on the standard options. |
||||||
|
.. |
||||||
|
.\" # OP - start of full description for a single option |
||||||
|
.de OP |
||||||
|
.LP |
||||||
|
.nf |
||||||
|
.ta 4c |
||||||
|
Command-Line Name: \\fB\\$1\\fR |
||||||
|
Database Name: \\fB\\$2\\fR |
||||||
|
Database Class: \\fB\\$3\\fR |
||||||
|
.fi |
||||||
|
.IP |
||||||
|
.. |
||||||
|
.\" # CS - begin code excerpt |
||||||
|
.de CS |
||||||
|
.RS |
||||||
|
.nf |
||||||
|
.ta .25i .5i .75i 1i |
||||||
|
.. |
||||||
|
.\" # CE - end code excerpt |
||||||
|
.de CE |
||||||
|
.fi |
||||||
|
.RE |
||||||
|
.. |
||||||
|
.\" # UL - underline word |
||||||
|
.de UL |
||||||
|
\\$1\l'|0\(ul'\\$2 |
||||||
|
.. |
||||||
|
.\" # QW - apply quotation marks to word |
||||||
|
.de QW |
||||||
|
.ie '\\*(lq'"' ``\\$1''\\$2 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el \\*(lq\\$1\\*(rq\\$2 |
||||||
|
.. |
||||||
|
.\" # PQ - apply parens and quotation marks to word |
||||||
|
.de PQ |
||||||
|
.ie '\\*(lq'"' (``\\$1''\\$2)\\$3 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el (\\*(lq\\$1\\*(rq\\$2)\\$3 |
||||||
|
.. |
||||||
|
.\" # QR - quoted range |
||||||
|
.de QR |
||||||
|
.ie '\\*(lq'"' ``\\$1''\\-``\\$2''\\$3 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el \\*(lq\\$1\\*(rq\\-\\*(lq\\$2\\*(rq\\$3 |
||||||
|
.. |
||||||
|
.\" # MT - "empty" string |
||||||
|
.de MT |
||||||
|
.QW "" |
||||||
|
.. |
||||||
|
.BS |
||||||
|
.SH NAME |
||||||
|
shellspy_module_punk::pcon \- Module API |
||||||
|
.SH SYNOPSIS |
||||||
|
package require \fBpunk::pcon\fR |
||||||
|
.sp |
||||||
|
.BE |
||||||
|
.SH DESCRIPTION |
||||||
|
.PP |
||||||
|
- |
||||||
|
.SH OVERVIEW |
||||||
|
.PP |
||||||
|
overview of punk::pcon |
||||||
|
.SS CONCEPTS |
||||||
|
.PP |
||||||
|
- |
||||||
|
.SS DEPENDENCIES |
||||||
|
.PP |
||||||
|
packages used by punk::pcon |
||||||
|
.IP \(bu |
||||||
|
\fBTcl 8\&.6\fR |
||||||
|
.PP |
||||||
|
.SH API |
||||||
|
.SS "NAMESPACE PUNK::PCON::CLASS" |
||||||
|
.PP |
||||||
|
class definitions |
||||||
|
if { eq ""} { |
||||||
|
*** !doctools |
||||||
|
.PP |
||||||
|
} |
||||||
|
} |
||||||
|
++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ |
||||||
|
.SS "NAMESPACE PUNK::PCON" |
||||||
|
.PP |
||||||
|
Core API functions for punk::pcon |
||||||
|
.PP |
||||||
|
.SS "NAMESPACE PUNK::PCON::LIB" |
||||||
|
.PP |
||||||
|
Secondary functions that are part of the API |
||||||
|
.PP |
||||||
|
.SH INTERNAL |
||||||
|
tcl::namespace::eval punk::pcon::system { |
||||||
|
*** !doctools |
||||||
|
.SS "NAMESPACE PUNK::PCON::SYSTEM" |
||||||
|
.PP |
||||||
|
Internal functions that are not part of the API |
||||||
|
.SH KEYWORDS |
||||||
|
module |
||||||
|
.SH COPYRIGHT |
||||||
|
.nf |
||||||
|
Copyright (c) 2025 |
||||||
|
|
||||||
|
.fi |
||||||
@ -0,0 +1,325 @@ |
|||||||
|
'\" |
||||||
|
'\" Generated from file '_module_pipe-1\&.0\&.tm\&.man' by tcllib/doctools with format 'nroff' |
||||||
|
'\" Copyright (c) 2025 |
||||||
|
'\" |
||||||
|
.TH "shellspy_module_punk::pipe" 0 1\&.0 doc "-" |
||||||
|
.\" The -*- nroff -*- definitions below are for supplemental macros used |
||||||
|
.\" in Tcl/Tk manual entries. |
||||||
|
.\" |
||||||
|
.\" .AP type name in/out ?indent? |
||||||
|
.\" Start paragraph describing an argument to a library procedure. |
||||||
|
.\" type is type of argument (int, etc.), in/out is either "in", "out", |
||||||
|
.\" or "in/out" to describe whether procedure reads or modifies arg, |
||||||
|
.\" and indent is equivalent to second arg of .IP (shouldn't ever be |
||||||
|
.\" needed; use .AS below instead) |
||||||
|
.\" |
||||||
|
.\" .AS ?type? ?name? |
||||||
|
.\" Give maximum sizes of arguments for setting tab stops. Type and |
||||||
|
.\" name are examples of largest possible arguments that will be passed |
||||||
|
.\" to .AP later. If args are omitted, default tab stops are used. |
||||||
|
.\" |
||||||
|
.\" .BS |
||||||
|
.\" Start box enclosure. From here until next .BE, everything will be |
||||||
|
.\" enclosed in one large box. |
||||||
|
.\" |
||||||
|
.\" .BE |
||||||
|
.\" End of box enclosure. |
||||||
|
.\" |
||||||
|
.\" .CS |
||||||
|
.\" Begin code excerpt. |
||||||
|
.\" |
||||||
|
.\" .CE |
||||||
|
.\" End code excerpt. |
||||||
|
.\" |
||||||
|
.\" .VS ?version? ?br? |
||||||
|
.\" Begin vertical sidebar, for use in marking newly-changed parts |
||||||
|
.\" of man pages. The first argument is ignored and used for recording |
||||||
|
.\" the version when the .VS was added, so that the sidebars can be |
||||||
|
.\" found and removed when they reach a certain age. If another argument |
||||||
|
.\" is present, then a line break is forced before starting the sidebar. |
||||||
|
.\" |
||||||
|
.\" .VE |
||||||
|
.\" End of vertical sidebar. |
||||||
|
.\" |
||||||
|
.\" .DS |
||||||
|
.\" Begin an indented unfilled display. |
||||||
|
.\" |
||||||
|
.\" .DE |
||||||
|
.\" End of indented unfilled display. |
||||||
|
.\" |
||||||
|
.\" .SO ?manpage? |
||||||
|
.\" Start of list of standard options for a Tk widget. The manpage |
||||||
|
.\" argument defines where to look up the standard options; if |
||||||
|
.\" omitted, defaults to "options". The options follow on successive |
||||||
|
.\" lines, in three columns separated by tabs. |
||||||
|
.\" |
||||||
|
.\" .SE |
||||||
|
.\" End of list of standard options for a Tk widget. |
||||||
|
.\" |
||||||
|
.\" .OP cmdName dbName dbClass |
||||||
|
.\" Start of description of a specific option. cmdName gives the |
||||||
|
.\" option's name as specified in the class command, dbName gives |
||||||
|
.\" the option's name in the option database, and dbClass gives |
||||||
|
.\" the option's class in the option database. |
||||||
|
.\" |
||||||
|
.\" .UL arg1 arg2 |
||||||
|
.\" Print arg1 underlined, then print arg2 normally. |
||||||
|
.\" |
||||||
|
.\" .QW arg1 ?arg2? |
||||||
|
.\" Print arg1 in quotes, then arg2 normally (for trailing punctuation). |
||||||
|
.\" |
||||||
|
.\" .PQ arg1 ?arg2? |
||||||
|
.\" Print an open parenthesis, arg1 in quotes, then arg2 normally |
||||||
|
.\" (for trailing punctuation) and then a closing parenthesis. |
||||||
|
.\" |
||||||
|
.\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. |
||||||
|
.if t .wh -1.3i ^B |
||||||
|
.nr ^l \n(.l |
||||||
|
.ad b |
||||||
|
.\" # Start an argument description |
||||||
|
.de AP |
||||||
|
.ie !"\\$4"" .TP \\$4 |
||||||
|
.el \{\ |
||||||
|
. ie !"\\$2"" .TP \\n()Cu |
||||||
|
. el .TP 15 |
||||||
|
.\} |
||||||
|
.ta \\n()Au \\n()Bu |
||||||
|
.ie !"\\$3"" \{\ |
||||||
|
\&\\$1 \\fI\\$2\\fP (\\$3) |
||||||
|
.\".b |
||||||
|
.\} |
||||||
|
.el \{\ |
||||||
|
.br |
||||||
|
.ie !"\\$2"" \{\ |
||||||
|
\&\\$1 \\fI\\$2\\fP |
||||||
|
.\} |
||||||
|
.el \{\ |
||||||
|
\&\\fI\\$1\\fP |
||||||
|
.\} |
||||||
|
.\} |
||||||
|
.. |
||||||
|
.\" # define tabbing values for .AP |
||||||
|
.de AS |
||||||
|
.nr )A 10n |
||||||
|
.if !"\\$1"" .nr )A \\w'\\$1'u+3n |
||||||
|
.nr )B \\n()Au+15n |
||||||
|
.\" |
||||||
|
.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n |
||||||
|
.nr )C \\n()Bu+\\w'(in/out)'u+2n |
||||||
|
.. |
||||||
|
.AS Tcl_Interp Tcl_CreateInterp in/out |
||||||
|
.\" # BS - start boxed text |
||||||
|
.\" # ^y = starting y location |
||||||
|
.\" # ^b = 1 |
||||||
|
.de BS |
||||||
|
.br |
||||||
|
.mk ^y |
||||||
|
.nr ^b 1u |
||||||
|
.if n .nf |
||||||
|
.if n .ti 0 |
||||||
|
.if n \l'\\n(.lu\(ul' |
||||||
|
.if n .fi |
||||||
|
.. |
||||||
|
.\" # BE - end boxed text (draw box now) |
||||||
|
.de BE |
||||||
|
.nf |
||||||
|
.ti 0 |
||||||
|
.mk ^t |
||||||
|
.ie n \l'\\n(^lu\(ul' |
||||||
|
.el \{\ |
||||||
|
.\" Draw four-sided box normally, but don't draw top of |
||||||
|
.\" box if the box started on an earlier page. |
||||||
|
.ie !\\n(^b-1 \{\ |
||||||
|
\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' |
||||||
|
.\} |
||||||
|
.el \}\ |
||||||
|
\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' |
||||||
|
.\} |
||||||
|
.\} |
||||||
|
.fi |
||||||
|
.br |
||||||
|
.nr ^b 0 |
||||||
|
.. |
||||||
|
.\" # VS - start vertical sidebar |
||||||
|
.\" # ^Y = starting y location |
||||||
|
.\" # ^v = 1 (for troff; for nroff this doesn't matter) |
||||||
|
.de VS |
||||||
|
.if !"\\$2"" .br |
||||||
|
.mk ^Y |
||||||
|
.ie n 'mc \s12\(br\s0 |
||||||
|
.el .nr ^v 1u |
||||||
|
.. |
||||||
|
.\" # VE - end of vertical sidebar |
||||||
|
.de VE |
||||||
|
.ie n 'mc |
||||||
|
.el \{\ |
||||||
|
.ev 2 |
||||||
|
.nf |
||||||
|
.ti 0 |
||||||
|
.mk ^t |
||||||
|
\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' |
||||||
|
.sp -1 |
||||||
|
.fi |
||||||
|
.ev |
||||||
|
.\} |
||||||
|
.nr ^v 0 |
||||||
|
.. |
||||||
|
.\" # Special macro to handle page bottom: finish off current |
||||||
|
.\" # box/sidebar if in box/sidebar mode, then invoked standard |
||||||
|
.\" # page bottom macro. |
||||||
|
.de ^B |
||||||
|
.ev 2 |
||||||
|
'ti 0 |
||||||
|
'nf |
||||||
|
.mk ^t |
||||||
|
.if \\n(^b \{\ |
||||||
|
.\" Draw three-sided box if this is the box's first page, |
||||||
|
.\" draw two sides but no top otherwise. |
||||||
|
.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c |
||||||
|
.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c |
||||||
|
.\} |
||||||
|
.if \\n(^v \{\ |
||||||
|
.nr ^x \\n(^tu+1v-\\n(^Yu |
||||||
|
\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c |
||||||
|
.\} |
||||||
|
.bp |
||||||
|
'fi |
||||||
|
.ev |
||||||
|
.if \\n(^b \{\ |
||||||
|
.mk ^y |
||||||
|
.nr ^b 2 |
||||||
|
.\} |
||||||
|
.if \\n(^v \{\ |
||||||
|
.mk ^Y |
||||||
|
.\} |
||||||
|
.. |
||||||
|
.\" # DS - begin display |
||||||
|
.de DS |
||||||
|
.RS |
||||||
|
.nf |
||||||
|
.sp |
||||||
|
.. |
||||||
|
.\" # DE - end display |
||||||
|
.de DE |
||||||
|
.fi |
||||||
|
.RE |
||||||
|
.sp |
||||||
|
.. |
||||||
|
.\" # SO - start of list of standard options |
||||||
|
.de SO |
||||||
|
'ie '\\$1'' .ds So \\fBoptions\\fR |
||||||
|
'el .ds So \\fB\\$1\\fR |
||||||
|
.SH "STANDARD OPTIONS" |
||||||
|
.LP |
||||||
|
.nf |
||||||
|
.ta 5.5c 11c |
||||||
|
.ft B |
||||||
|
.. |
||||||
|
.\" # SE - end of list of standard options |
||||||
|
.de SE |
||||||
|
.fi |
||||||
|
.ft R |
||||||
|
.LP |
||||||
|
See the \\*(So manual entry for details on the standard options. |
||||||
|
.. |
||||||
|
.\" # OP - start of full description for a single option |
||||||
|
.de OP |
||||||
|
.LP |
||||||
|
.nf |
||||||
|
.ta 4c |
||||||
|
Command-Line Name: \\fB\\$1\\fR |
||||||
|
Database Name: \\fB\\$2\\fR |
||||||
|
Database Class: \\fB\\$3\\fR |
||||||
|
.fi |
||||||
|
.IP |
||||||
|
.. |
||||||
|
.\" # CS - begin code excerpt |
||||||
|
.de CS |
||||||
|
.RS |
||||||
|
.nf |
||||||
|
.ta .25i .5i .75i 1i |
||||||
|
.. |
||||||
|
.\" # CE - end code excerpt |
||||||
|
.de CE |
||||||
|
.fi |
||||||
|
.RE |
||||||
|
.. |
||||||
|
.\" # UL - underline word |
||||||
|
.de UL |
||||||
|
\\$1\l'|0\(ul'\\$2 |
||||||
|
.. |
||||||
|
.\" # QW - apply quotation marks to word |
||||||
|
.de QW |
||||||
|
.ie '\\*(lq'"' ``\\$1''\\$2 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el \\*(lq\\$1\\*(rq\\$2 |
||||||
|
.. |
||||||
|
.\" # PQ - apply parens and quotation marks to word |
||||||
|
.de PQ |
||||||
|
.ie '\\*(lq'"' (``\\$1''\\$2)\\$3 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el (\\*(lq\\$1\\*(rq\\$2)\\$3 |
||||||
|
.. |
||||||
|
.\" # QR - quoted range |
||||||
|
.de QR |
||||||
|
.ie '\\*(lq'"' ``\\$1''\\-``\\$2''\\$3 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el \\*(lq\\$1\\*(rq\\-\\*(lq\\$2\\*(rq\\$3 |
||||||
|
.. |
||||||
|
.\" # MT - "empty" string |
||||||
|
.de MT |
||||||
|
.QW "" |
||||||
|
.. |
||||||
|
.BS |
||||||
|
.SH NAME |
||||||
|
shellspy_module_punk::pipe \- Module API |
||||||
|
.SH SYNOPSIS |
||||||
|
package require \fBpunk::pipe\fR |
||||||
|
.sp |
||||||
|
.BE |
||||||
|
.SH DESCRIPTION |
||||||
|
.PP |
||||||
|
- |
||||||
|
.SH OVERVIEW |
||||||
|
.PP |
||||||
|
overview of punk::pipe |
||||||
|
.SS CONCEPTS |
||||||
|
.PP |
||||||
|
- |
||||||
|
.SS DEPENDENCIES |
||||||
|
.PP |
||||||
|
packages used by punk::pipe |
||||||
|
.IP \(bu |
||||||
|
\fBTcl 8\&.6\fR |
||||||
|
.PP |
||||||
|
.SH API |
||||||
|
.SS "NAMESPACE PUNK::PIPE::CLASS" |
||||||
|
.PP |
||||||
|
class definitions |
||||||
|
if { eq ""} { |
||||||
|
*** !doctools |
||||||
|
.PP |
||||||
|
} |
||||||
|
} |
||||||
|
++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ |
||||||
|
.SS "NAMESPACE PUNK::PIPE" |
||||||
|
.PP |
||||||
|
Core API functions for punk::pipe |
||||||
|
.PP |
||||||
|
.SS "NAMESPACE PUNK::PIPE::LIB" |
||||||
|
.PP |
||||||
|
Secondary functions that are part of the API |
||||||
|
.PP |
||||||
|
.SH INTERNAL |
||||||
|
tcl::namespace::eval punk::pipe::system { |
||||||
|
*** !doctools |
||||||
|
.SS "NAMESPACE PUNK::PIPE::SYSTEM" |
||||||
|
.PP |
||||||
|
Internal functions that are not part of the API |
||||||
|
.SH KEYWORDS |
||||||
|
module |
||||||
|
.SH COPYRIGHT |
||||||
|
.nf |
||||||
|
Copyright (c) 2025 |
||||||
|
|
||||||
|
.fi |
||||||
@ -0,0 +1,325 @@ |
|||||||
|
'\" |
||||||
|
'\" Generated from file '_module_winshell-0\&.1\&.0\&.tm\&.man' by tcllib/doctools with format 'nroff' |
||||||
|
'\" Copyright (c) 2025 |
||||||
|
'\" |
||||||
|
.TH "shellspy_module_punk::winshell" 0 0\&.1\&.0 doc "-" |
||||||
|
.\" The -*- nroff -*- definitions below are for supplemental macros used |
||||||
|
.\" in Tcl/Tk manual entries. |
||||||
|
.\" |
||||||
|
.\" .AP type name in/out ?indent? |
||||||
|
.\" Start paragraph describing an argument to a library procedure. |
||||||
|
.\" type is type of argument (int, etc.), in/out is either "in", "out", |
||||||
|
.\" or "in/out" to describe whether procedure reads or modifies arg, |
||||||
|
.\" and indent is equivalent to second arg of .IP (shouldn't ever be |
||||||
|
.\" needed; use .AS below instead) |
||||||
|
.\" |
||||||
|
.\" .AS ?type? ?name? |
||||||
|
.\" Give maximum sizes of arguments for setting tab stops. Type and |
||||||
|
.\" name are examples of largest possible arguments that will be passed |
||||||
|
.\" to .AP later. If args are omitted, default tab stops are used. |
||||||
|
.\" |
||||||
|
.\" .BS |
||||||
|
.\" Start box enclosure. From here until next .BE, everything will be |
||||||
|
.\" enclosed in one large box. |
||||||
|
.\" |
||||||
|
.\" .BE |
||||||
|
.\" End of box enclosure. |
||||||
|
.\" |
||||||
|
.\" .CS |
||||||
|
.\" Begin code excerpt. |
||||||
|
.\" |
||||||
|
.\" .CE |
||||||
|
.\" End code excerpt. |
||||||
|
.\" |
||||||
|
.\" .VS ?version? ?br? |
||||||
|
.\" Begin vertical sidebar, for use in marking newly-changed parts |
||||||
|
.\" of man pages. The first argument is ignored and used for recording |
||||||
|
.\" the version when the .VS was added, so that the sidebars can be |
||||||
|
.\" found and removed when they reach a certain age. If another argument |
||||||
|
.\" is present, then a line break is forced before starting the sidebar. |
||||||
|
.\" |
||||||
|
.\" .VE |
||||||
|
.\" End of vertical sidebar. |
||||||
|
.\" |
||||||
|
.\" .DS |
||||||
|
.\" Begin an indented unfilled display. |
||||||
|
.\" |
||||||
|
.\" .DE |
||||||
|
.\" End of indented unfilled display. |
||||||
|
.\" |
||||||
|
.\" .SO ?manpage? |
||||||
|
.\" Start of list of standard options for a Tk widget. The manpage |
||||||
|
.\" argument defines where to look up the standard options; if |
||||||
|
.\" omitted, defaults to "options". The options follow on successive |
||||||
|
.\" lines, in three columns separated by tabs. |
||||||
|
.\" |
||||||
|
.\" .SE |
||||||
|
.\" End of list of standard options for a Tk widget. |
||||||
|
.\" |
||||||
|
.\" .OP cmdName dbName dbClass |
||||||
|
.\" Start of description of a specific option. cmdName gives the |
||||||
|
.\" option's name as specified in the class command, dbName gives |
||||||
|
.\" the option's name in the option database, and dbClass gives |
||||||
|
.\" the option's class in the option database. |
||||||
|
.\" |
||||||
|
.\" .UL arg1 arg2 |
||||||
|
.\" Print arg1 underlined, then print arg2 normally. |
||||||
|
.\" |
||||||
|
.\" .QW arg1 ?arg2? |
||||||
|
.\" Print arg1 in quotes, then arg2 normally (for trailing punctuation). |
||||||
|
.\" |
||||||
|
.\" .PQ arg1 ?arg2? |
||||||
|
.\" Print an open parenthesis, arg1 in quotes, then arg2 normally |
||||||
|
.\" (for trailing punctuation) and then a closing parenthesis. |
||||||
|
.\" |
||||||
|
.\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. |
||||||
|
.if t .wh -1.3i ^B |
||||||
|
.nr ^l \n(.l |
||||||
|
.ad b |
||||||
|
.\" # Start an argument description |
||||||
|
.de AP |
||||||
|
.ie !"\\$4"" .TP \\$4 |
||||||
|
.el \{\ |
||||||
|
. ie !"\\$2"" .TP \\n()Cu |
||||||
|
. el .TP 15 |
||||||
|
.\} |
||||||
|
.ta \\n()Au \\n()Bu |
||||||
|
.ie !"\\$3"" \{\ |
||||||
|
\&\\$1 \\fI\\$2\\fP (\\$3) |
||||||
|
.\".b |
||||||
|
.\} |
||||||
|
.el \{\ |
||||||
|
.br |
||||||
|
.ie !"\\$2"" \{\ |
||||||
|
\&\\$1 \\fI\\$2\\fP |
||||||
|
.\} |
||||||
|
.el \{\ |
||||||
|
\&\\fI\\$1\\fP |
||||||
|
.\} |
||||||
|
.\} |
||||||
|
.. |
||||||
|
.\" # define tabbing values for .AP |
||||||
|
.de AS |
||||||
|
.nr )A 10n |
||||||
|
.if !"\\$1"" .nr )A \\w'\\$1'u+3n |
||||||
|
.nr )B \\n()Au+15n |
||||||
|
.\" |
||||||
|
.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n |
||||||
|
.nr )C \\n()Bu+\\w'(in/out)'u+2n |
||||||
|
.. |
||||||
|
.AS Tcl_Interp Tcl_CreateInterp in/out |
||||||
|
.\" # BS - start boxed text |
||||||
|
.\" # ^y = starting y location |
||||||
|
.\" # ^b = 1 |
||||||
|
.de BS |
||||||
|
.br |
||||||
|
.mk ^y |
||||||
|
.nr ^b 1u |
||||||
|
.if n .nf |
||||||
|
.if n .ti 0 |
||||||
|
.if n \l'\\n(.lu\(ul' |
||||||
|
.if n .fi |
||||||
|
.. |
||||||
|
.\" # BE - end boxed text (draw box now) |
||||||
|
.de BE |
||||||
|
.nf |
||||||
|
.ti 0 |
||||||
|
.mk ^t |
||||||
|
.ie n \l'\\n(^lu\(ul' |
||||||
|
.el \{\ |
||||||
|
.\" Draw four-sided box normally, but don't draw top of |
||||||
|
.\" box if the box started on an earlier page. |
||||||
|
.ie !\\n(^b-1 \{\ |
||||||
|
\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' |
||||||
|
.\} |
||||||
|
.el \}\ |
||||||
|
\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' |
||||||
|
.\} |
||||||
|
.\} |
||||||
|
.fi |
||||||
|
.br |
||||||
|
.nr ^b 0 |
||||||
|
.. |
||||||
|
.\" # VS - start vertical sidebar |
||||||
|
.\" # ^Y = starting y location |
||||||
|
.\" # ^v = 1 (for troff; for nroff this doesn't matter) |
||||||
|
.de VS |
||||||
|
.if !"\\$2"" .br |
||||||
|
.mk ^Y |
||||||
|
.ie n 'mc \s12\(br\s0 |
||||||
|
.el .nr ^v 1u |
||||||
|
.. |
||||||
|
.\" # VE - end of vertical sidebar |
||||||
|
.de VE |
||||||
|
.ie n 'mc |
||||||
|
.el \{\ |
||||||
|
.ev 2 |
||||||
|
.nf |
||||||
|
.ti 0 |
||||||
|
.mk ^t |
||||||
|
\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' |
||||||
|
.sp -1 |
||||||
|
.fi |
||||||
|
.ev |
||||||
|
.\} |
||||||
|
.nr ^v 0 |
||||||
|
.. |
||||||
|
.\" # Special macro to handle page bottom: finish off current |
||||||
|
.\" # box/sidebar if in box/sidebar mode, then invoked standard |
||||||
|
.\" # page bottom macro. |
||||||
|
.de ^B |
||||||
|
.ev 2 |
||||||
|
'ti 0 |
||||||
|
'nf |
||||||
|
.mk ^t |
||||||
|
.if \\n(^b \{\ |
||||||
|
.\" Draw three-sided box if this is the box's first page, |
||||||
|
.\" draw two sides but no top otherwise. |
||||||
|
.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c |
||||||
|
.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c |
||||||
|
.\} |
||||||
|
.if \\n(^v \{\ |
||||||
|
.nr ^x \\n(^tu+1v-\\n(^Yu |
||||||
|
\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c |
||||||
|
.\} |
||||||
|
.bp |
||||||
|
'fi |
||||||
|
.ev |
||||||
|
.if \\n(^b \{\ |
||||||
|
.mk ^y |
||||||
|
.nr ^b 2 |
||||||
|
.\} |
||||||
|
.if \\n(^v \{\ |
||||||
|
.mk ^Y |
||||||
|
.\} |
||||||
|
.. |
||||||
|
.\" # DS - begin display |
||||||
|
.de DS |
||||||
|
.RS |
||||||
|
.nf |
||||||
|
.sp |
||||||
|
.. |
||||||
|
.\" # DE - end display |
||||||
|
.de DE |
||||||
|
.fi |
||||||
|
.RE |
||||||
|
.sp |
||||||
|
.. |
||||||
|
.\" # SO - start of list of standard options |
||||||
|
.de SO |
||||||
|
'ie '\\$1'' .ds So \\fBoptions\\fR |
||||||
|
'el .ds So \\fB\\$1\\fR |
||||||
|
.SH "STANDARD OPTIONS" |
||||||
|
.LP |
||||||
|
.nf |
||||||
|
.ta 5.5c 11c |
||||||
|
.ft B |
||||||
|
.. |
||||||
|
.\" # SE - end of list of standard options |
||||||
|
.de SE |
||||||
|
.fi |
||||||
|
.ft R |
||||||
|
.LP |
||||||
|
See the \\*(So manual entry for details on the standard options. |
||||||
|
.. |
||||||
|
.\" # OP - start of full description for a single option |
||||||
|
.de OP |
||||||
|
.LP |
||||||
|
.nf |
||||||
|
.ta 4c |
||||||
|
Command-Line Name: \\fB\\$1\\fR |
||||||
|
Database Name: \\fB\\$2\\fR |
||||||
|
Database Class: \\fB\\$3\\fR |
||||||
|
.fi |
||||||
|
.IP |
||||||
|
.. |
||||||
|
.\" # CS - begin code excerpt |
||||||
|
.de CS |
||||||
|
.RS |
||||||
|
.nf |
||||||
|
.ta .25i .5i .75i 1i |
||||||
|
.. |
||||||
|
.\" # CE - end code excerpt |
||||||
|
.de CE |
||||||
|
.fi |
||||||
|
.RE |
||||||
|
.. |
||||||
|
.\" # UL - underline word |
||||||
|
.de UL |
||||||
|
\\$1\l'|0\(ul'\\$2 |
||||||
|
.. |
||||||
|
.\" # QW - apply quotation marks to word |
||||||
|
.de QW |
||||||
|
.ie '\\*(lq'"' ``\\$1''\\$2 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el \\*(lq\\$1\\*(rq\\$2 |
||||||
|
.. |
||||||
|
.\" # PQ - apply parens and quotation marks to word |
||||||
|
.de PQ |
||||||
|
.ie '\\*(lq'"' (``\\$1''\\$2)\\$3 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el (\\*(lq\\$1\\*(rq\\$2)\\$3 |
||||||
|
.. |
||||||
|
.\" # QR - quoted range |
||||||
|
.de QR |
||||||
|
.ie '\\*(lq'"' ``\\$1''\\-``\\$2''\\$3 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el \\*(lq\\$1\\*(rq\\-\\*(lq\\$2\\*(rq\\$3 |
||||||
|
.. |
||||||
|
.\" # MT - "empty" string |
||||||
|
.de MT |
||||||
|
.QW "" |
||||||
|
.. |
||||||
|
.BS |
||||||
|
.SH NAME |
||||||
|
shellspy_module_punk::winshell \- Module API |
||||||
|
.SH SYNOPSIS |
||||||
|
package require \fBpunk::winshell\fR |
||||||
|
.sp |
||||||
|
.BE |
||||||
|
.SH DESCRIPTION |
||||||
|
.PP |
||||||
|
- |
||||||
|
.SH OVERVIEW |
||||||
|
.PP |
||||||
|
overview of punk::winshell |
||||||
|
.SS CONCEPTS |
||||||
|
.PP |
||||||
|
- |
||||||
|
.SS DEPENDENCIES |
||||||
|
.PP |
||||||
|
packages used by punk::winshell |
||||||
|
.IP \(bu |
||||||
|
\fBTcl 8\&.6\fR |
||||||
|
.PP |
||||||
|
.SH API |
||||||
|
.SS "NAMESPACE PUNK::WINSHELL::CLASS" |
||||||
|
.PP |
||||||
|
class definitions |
||||||
|
if { eq ""} { |
||||||
|
*** !doctools |
||||||
|
.PP |
||||||
|
} |
||||||
|
} |
||||||
|
++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ |
||||||
|
.SS "NAMESPACE PUNK::WINSHELL" |
||||||
|
.PP |
||||||
|
Core API functions for punk::winshell |
||||||
|
.PP |
||||||
|
.SS "NAMESPACE PUNK::WINSHELL::LIB" |
||||||
|
.PP |
||||||
|
Secondary functions that are part of the API |
||||||
|
.PP |
||||||
|
.SH INTERNAL |
||||||
|
tcl::namespace::eval punk::winshell::system { |
||||||
|
*** !doctools |
||||||
|
.SS "NAMESPACE PUNK::WINSHELL::SYSTEM" |
||||||
|
.PP |
||||||
|
Internal functions that are not part of the API |
||||||
|
.SH KEYWORDS |
||||||
|
module |
||||||
|
.SH COPYRIGHT |
||||||
|
.nf |
||||||
|
Copyright (c) 2025 |
||||||
|
|
||||||
|
.fi |
||||||
@ -0,0 +1,310 @@ |
|||||||
|
'\" |
||||||
|
'\" Generated from file '_module_colourmap-0\&.1\&.0\&.tm\&.man' by tcllib/doctools with format 'nroff' |
||||||
|
'\" Copyright (c) 2025 |
||||||
|
'\" |
||||||
|
.TH "shellspy_module_::punk::ansi::colourmap" 0 0\&.1\&.0 doc "-" |
||||||
|
.\" The -*- nroff -*- definitions below are for supplemental macros used |
||||||
|
.\" in Tcl/Tk manual entries. |
||||||
|
.\" |
||||||
|
.\" .AP type name in/out ?indent? |
||||||
|
.\" Start paragraph describing an argument to a library procedure. |
||||||
|
.\" type is type of argument (int, etc.), in/out is either "in", "out", |
||||||
|
.\" or "in/out" to describe whether procedure reads or modifies arg, |
||||||
|
.\" and indent is equivalent to second arg of .IP (shouldn't ever be |
||||||
|
.\" needed; use .AS below instead) |
||||||
|
.\" |
||||||
|
.\" .AS ?type? ?name? |
||||||
|
.\" Give maximum sizes of arguments for setting tab stops. Type and |
||||||
|
.\" name are examples of largest possible arguments that will be passed |
||||||
|
.\" to .AP later. If args are omitted, default tab stops are used. |
||||||
|
.\" |
||||||
|
.\" .BS |
||||||
|
.\" Start box enclosure. From here until next .BE, everything will be |
||||||
|
.\" enclosed in one large box. |
||||||
|
.\" |
||||||
|
.\" .BE |
||||||
|
.\" End of box enclosure. |
||||||
|
.\" |
||||||
|
.\" .CS |
||||||
|
.\" Begin code excerpt. |
||||||
|
.\" |
||||||
|
.\" .CE |
||||||
|
.\" End code excerpt. |
||||||
|
.\" |
||||||
|
.\" .VS ?version? ?br? |
||||||
|
.\" Begin vertical sidebar, for use in marking newly-changed parts |
||||||
|
.\" of man pages. The first argument is ignored and used for recording |
||||||
|
.\" the version when the .VS was added, so that the sidebars can be |
||||||
|
.\" found and removed when they reach a certain age. If another argument |
||||||
|
.\" is present, then a line break is forced before starting the sidebar. |
||||||
|
.\" |
||||||
|
.\" .VE |
||||||
|
.\" End of vertical sidebar. |
||||||
|
.\" |
||||||
|
.\" .DS |
||||||
|
.\" Begin an indented unfilled display. |
||||||
|
.\" |
||||||
|
.\" .DE |
||||||
|
.\" End of indented unfilled display. |
||||||
|
.\" |
||||||
|
.\" .SO ?manpage? |
||||||
|
.\" Start of list of standard options for a Tk widget. The manpage |
||||||
|
.\" argument defines where to look up the standard options; if |
||||||
|
.\" omitted, defaults to "options". The options follow on successive |
||||||
|
.\" lines, in three columns separated by tabs. |
||||||
|
.\" |
||||||
|
.\" .SE |
||||||
|
.\" End of list of standard options for a Tk widget. |
||||||
|
.\" |
||||||
|
.\" .OP cmdName dbName dbClass |
||||||
|
.\" Start of description of a specific option. cmdName gives the |
||||||
|
.\" option's name as specified in the class command, dbName gives |
||||||
|
.\" the option's name in the option database, and dbClass gives |
||||||
|
.\" the option's class in the option database. |
||||||
|
.\" |
||||||
|
.\" .UL arg1 arg2 |
||||||
|
.\" Print arg1 underlined, then print arg2 normally. |
||||||
|
.\" |
||||||
|
.\" .QW arg1 ?arg2? |
||||||
|
.\" Print arg1 in quotes, then arg2 normally (for trailing punctuation). |
||||||
|
.\" |
||||||
|
.\" .PQ arg1 ?arg2? |
||||||
|
.\" Print an open parenthesis, arg1 in quotes, then arg2 normally |
||||||
|
.\" (for trailing punctuation) and then a closing parenthesis. |
||||||
|
.\" |
||||||
|
.\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. |
||||||
|
.if t .wh -1.3i ^B |
||||||
|
.nr ^l \n(.l |
||||||
|
.ad b |
||||||
|
.\" # Start an argument description |
||||||
|
.de AP |
||||||
|
.ie !"\\$4"" .TP \\$4 |
||||||
|
.el \{\ |
||||||
|
. ie !"\\$2"" .TP \\n()Cu |
||||||
|
. el .TP 15 |
||||||
|
.\} |
||||||
|
.ta \\n()Au \\n()Bu |
||||||
|
.ie !"\\$3"" \{\ |
||||||
|
\&\\$1 \\fI\\$2\\fP (\\$3) |
||||||
|
.\".b |
||||||
|
.\} |
||||||
|
.el \{\ |
||||||
|
.br |
||||||
|
.ie !"\\$2"" \{\ |
||||||
|
\&\\$1 \\fI\\$2\\fP |
||||||
|
.\} |
||||||
|
.el \{\ |
||||||
|
\&\\fI\\$1\\fP |
||||||
|
.\} |
||||||
|
.\} |
||||||
|
.. |
||||||
|
.\" # define tabbing values for .AP |
||||||
|
.de AS |
||||||
|
.nr )A 10n |
||||||
|
.if !"\\$1"" .nr )A \\w'\\$1'u+3n |
||||||
|
.nr )B \\n()Au+15n |
||||||
|
.\" |
||||||
|
.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n |
||||||
|
.nr )C \\n()Bu+\\w'(in/out)'u+2n |
||||||
|
.. |
||||||
|
.AS Tcl_Interp Tcl_CreateInterp in/out |
||||||
|
.\" # BS - start boxed text |
||||||
|
.\" # ^y = starting y location |
||||||
|
.\" # ^b = 1 |
||||||
|
.de BS |
||||||
|
.br |
||||||
|
.mk ^y |
||||||
|
.nr ^b 1u |
||||||
|
.if n .nf |
||||||
|
.if n .ti 0 |
||||||
|
.if n \l'\\n(.lu\(ul' |
||||||
|
.if n .fi |
||||||
|
.. |
||||||
|
.\" # BE - end boxed text (draw box now) |
||||||
|
.de BE |
||||||
|
.nf |
||||||
|
.ti 0 |
||||||
|
.mk ^t |
||||||
|
.ie n \l'\\n(^lu\(ul' |
||||||
|
.el \{\ |
||||||
|
.\" Draw four-sided box normally, but don't draw top of |
||||||
|
.\" box if the box started on an earlier page. |
||||||
|
.ie !\\n(^b-1 \{\ |
||||||
|
\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' |
||||||
|
.\} |
||||||
|
.el \}\ |
||||||
|
\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' |
||||||
|
.\} |
||||||
|
.\} |
||||||
|
.fi |
||||||
|
.br |
||||||
|
.nr ^b 0 |
||||||
|
.. |
||||||
|
.\" # VS - start vertical sidebar |
||||||
|
.\" # ^Y = starting y location |
||||||
|
.\" # ^v = 1 (for troff; for nroff this doesn't matter) |
||||||
|
.de VS |
||||||
|
.if !"\\$2"" .br |
||||||
|
.mk ^Y |
||||||
|
.ie n 'mc \s12\(br\s0 |
||||||
|
.el .nr ^v 1u |
||||||
|
.. |
||||||
|
.\" # VE - end of vertical sidebar |
||||||
|
.de VE |
||||||
|
.ie n 'mc |
||||||
|
.el \{\ |
||||||
|
.ev 2 |
||||||
|
.nf |
||||||
|
.ti 0 |
||||||
|
.mk ^t |
||||||
|
\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' |
||||||
|
.sp -1 |
||||||
|
.fi |
||||||
|
.ev |
||||||
|
.\} |
||||||
|
.nr ^v 0 |
||||||
|
.. |
||||||
|
.\" # Special macro to handle page bottom: finish off current |
||||||
|
.\" # box/sidebar if in box/sidebar mode, then invoked standard |
||||||
|
.\" # page bottom macro. |
||||||
|
.de ^B |
||||||
|
.ev 2 |
||||||
|
'ti 0 |
||||||
|
'nf |
||||||
|
.mk ^t |
||||||
|
.if \\n(^b \{\ |
||||||
|
.\" Draw three-sided box if this is the box's first page, |
||||||
|
.\" draw two sides but no top otherwise. |
||||||
|
.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c |
||||||
|
.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c |
||||||
|
.\} |
||||||
|
.if \\n(^v \{\ |
||||||
|
.nr ^x \\n(^tu+1v-\\n(^Yu |
||||||
|
\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c |
||||||
|
.\} |
||||||
|
.bp |
||||||
|
'fi |
||||||
|
.ev |
||||||
|
.if \\n(^b \{\ |
||||||
|
.mk ^y |
||||||
|
.nr ^b 2 |
||||||
|
.\} |
||||||
|
.if \\n(^v \{\ |
||||||
|
.mk ^Y |
||||||
|
.\} |
||||||
|
.. |
||||||
|
.\" # DS - begin display |
||||||
|
.de DS |
||||||
|
.RS |
||||||
|
.nf |
||||||
|
.sp |
||||||
|
.. |
||||||
|
.\" # DE - end display |
||||||
|
.de DE |
||||||
|
.fi |
||||||
|
.RE |
||||||
|
.sp |
||||||
|
.. |
||||||
|
.\" # SO - start of list of standard options |
||||||
|
.de SO |
||||||
|
'ie '\\$1'' .ds So \\fBoptions\\fR |
||||||
|
'el .ds So \\fB\\$1\\fR |
||||||
|
.SH "STANDARD OPTIONS" |
||||||
|
.LP |
||||||
|
.nf |
||||||
|
.ta 5.5c 11c |
||||||
|
.ft B |
||||||
|
.. |
||||||
|
.\" # SE - end of list of standard options |
||||||
|
.de SE |
||||||
|
.fi |
||||||
|
.ft R |
||||||
|
.LP |
||||||
|
See the \\*(So manual entry for details on the standard options. |
||||||
|
.. |
||||||
|
.\" # OP - start of full description for a single option |
||||||
|
.de OP |
||||||
|
.LP |
||||||
|
.nf |
||||||
|
.ta 4c |
||||||
|
Command-Line Name: \\fB\\$1\\fR |
||||||
|
Database Name: \\fB\\$2\\fR |
||||||
|
Database Class: \\fB\\$3\\fR |
||||||
|
.fi |
||||||
|
.IP |
||||||
|
.. |
||||||
|
.\" # CS - begin code excerpt |
||||||
|
.de CS |
||||||
|
.RS |
||||||
|
.nf |
||||||
|
.ta .25i .5i .75i 1i |
||||||
|
.. |
||||||
|
.\" # CE - end code excerpt |
||||||
|
.de CE |
||||||
|
.fi |
||||||
|
.RE |
||||||
|
.. |
||||||
|
.\" # UL - underline word |
||||||
|
.de UL |
||||||
|
\\$1\l'|0\(ul'\\$2 |
||||||
|
.. |
||||||
|
.\" # QW - apply quotation marks to word |
||||||
|
.de QW |
||||||
|
.ie '\\*(lq'"' ``\\$1''\\$2 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el \\*(lq\\$1\\*(rq\\$2 |
||||||
|
.. |
||||||
|
.\" # PQ - apply parens and quotation marks to word |
||||||
|
.de PQ |
||||||
|
.ie '\\*(lq'"' (``\\$1''\\$2)\\$3 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el (\\*(lq\\$1\\*(rq\\$2)\\$3 |
||||||
|
.. |
||||||
|
.\" # QR - quoted range |
||||||
|
.de QR |
||||||
|
.ie '\\*(lq'"' ``\\$1''\\-``\\$2''\\$3 |
||||||
|
.\"" fix emacs highlighting |
||||||
|
.el \\*(lq\\$1\\*(rq\\-\\*(lq\\$2\\*(rq\\$3 |
||||||
|
.. |
||||||
|
.\" # MT - "empty" string |
||||||
|
.de MT |
||||||
|
.QW "" |
||||||
|
.. |
||||||
|
.BS |
||||||
|
.SH NAME |
||||||
|
shellspy_module_::punk::ansi::colourmap \- Module API |
||||||
|
.SH SYNOPSIS |
||||||
|
package require \fB::punk::ansi::colourmap\fR |
||||||
|
.sp |
||||||
|
.BE |
||||||
|
.SH DESCRIPTION |
||||||
|
.PP |
||||||
|
- |
||||||
|
.SH OVERVIEW |
||||||
|
.PP |
||||||
|
overview of ::punk::ansi::colourmap |
||||||
|
.SS CONCEPTS |
||||||
|
.PP |
||||||
|
- |
||||||
|
.SS DEPENDENCIES |
||||||
|
.PP |
||||||
|
packages used by ::punk::ansi::colourmap |
||||||
|
.IP \(bu |
||||||
|
\fBTcl 8\&.6\fR |
||||||
|
.PP |
||||||
|
.SH API |
||||||
|
.SS "NAMESPACE ::PUNK::ANSI::COLOURMAP" |
||||||
|
.PP |
||||||
|
Core API functions for ::punk::ansi::colourmap |
||||||
|
.PP |
||||||
|
.SS "NAMESPACE ::PUNK::ANSI::COLOURMAP::LIB" |
||||||
|
.PP |
||||||
|
Secondary functions that are part of the API |
||||||
|
.PP |
||||||
|
.SH KEYWORDS |
||||||
|
module |
||||||
|
.SH COPYRIGHT |
||||||
|
.nf |
||||||
|
Copyright (c) 2025 |
||||||
|
|
||||||
|
.fi |
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue