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