Browse Source

kettle doc interim fix

master
Julian Noble 5 months ago
parent
commit
7251d10a80
  1. 11
      src/doc/_module_fauxlink-0.1.1.tm.man
  2. 37
      src/doc/_module_modpod-0.1.3.tm.man
  3. 49
      src/doc/_module_overtype-1.6.6.tm.man
  4. 32
      src/doc/_module_picalc-0.1.0.tm.man
  5. 44
      src/doc/_module_pipe-1.0.tm.man
  6. 2
      src/doc/_module_termscheme-0.1.0.tm.man
  7. 46
      src/doc/_module_textblock-0.1.1.tm.man
  8. 8
      src/doc/_module_textblock-0.1.3.tm.man
  9. 4
      src/doc/_module_tomlish-1.1.2.tm.man
  10. 74
      src/doc/_module_tomlish-1.1.3.tm.man
  11. 74
      src/doc/_module_tomlish-1.1.4.tm.man
  12. 64
      src/doc/_module_tomlish-1.1.5.tm.man
  13. 73
      src/doc/_module_tomlish-1.1.6.tm.man
  14. 1
      src/doc/punk/_module_ansi-0.1.1.tm.man
  15. 52
      src/doc/punk/_module_args-0.2.tm.man
  16. 1
      src/doc/punk/_module_assertion-0.1.0.tm.man
  17. 1
      src/doc/punk/_module_basictelnet-0.1.0.tm.man
  18. 2
      src/doc/punk/_module_blockletter-0.1.0.tm.man
  19. 5
      src/doc/punk/_module_cap-0.1.0.tm.man
  20. 3
      src/doc/punk/_module_cesu-0.1.1.tm.man
  21. 2
      src/doc/punk/_module_fileline-0.1.0.tm.man
  22. 44
      src/doc/punk/_module_icomm-0.1.0.tm.man
  23. 32
      src/doc/punk/_module_imap4-0.9.tm.man
  24. 2
      src/doc/punk/_module_lib-0.1.1.tm.man
  25. 194
      src/doc/punk/_module_lib-0.1.2.tm.man
  26. 26
      src/doc/punk/_module_libunknown-0.1.tm.man
  27. 43
      src/doc/punk/_module_netbox-0.1.0.tm.man
  28. 3
      src/doc/punk/_module_packagepreference-0.1.0.tm.man
  29. 2
      src/doc/punk/_module_path-0.1.0.tm.man
  30. 44
      src/doc/punk/_module_pcon-1.0.tm.man
  31. 44
      src/doc/punk/_module_pipe-1.0.tm.man
  32. 2
      src/doc/punk/_module_rest-0.1.0.tm.man
  33. 8
      src/doc/punk/_module_safe-0.1.0.tm.man
  34. 8
      src/doc/punk/_module_sixel-0.1.0.tm.man
  35. 1
      src/doc/punk/_module_trie-0.1.0.tm.man
  36. 2
      src/doc/punk/_module_winlnk-0.1.0.tm.man
  37. 44
      src/doc/punk/_module_winshell-0.1.0.tm.man
  38. 67
      src/doc/punk/_module_zip-0.1.0.tm.man
  39. 30
      src/doc/punk/ansi/_module_colourmap-0.1.0.tm.man
  40. 10
      src/doc/punk/args/_module_tclcore-0.1.0.tm.man
  41. 37
      src/doc/punk/args/_module_tkcore-0.1.0.tm.man
  42. 26
      src/doc/punk/args/_module_tzint-1.1.1.tm.man
  43. 2
      src/doc/punk/mix/commandset/_module_project-0.1.0.tm.man
  44. 1
      src/doc/punk/nav/_module_fs-0.1.0.tm.man
  45. 45
      src/doc/punk/netbox/_module_man-0.1.0.tm.man
  46. 12
      src/embedded/man/files/_module_fauxlink-0.1.1.tm.n
  47. 70
      src/embedded/man/files/_module_modpod-0.1.3.tm.n
  48. 354
      src/embedded/man/files/_module_overtype-1.6.6.tm.n
  49. 314
      src/embedded/man/files/_module_picalc-0.1.0.tm.n
  50. 325
      src/embedded/man/files/_module_pipe-1.0.tm.n
  51. 2
      src/embedded/man/files/_module_termscheme-0.1.0.tm.n
  52. 10
      src/embedded/man/files/_module_textblock-0.1.3.tm.n
  53. 8
      src/embedded/man/files/_module_tomlish-1.1.2.tm.n
  54. 380
      src/embedded/man/files/_module_tomlish-1.1.3.tm.n
  55. 380
      src/embedded/man/files/_module_tomlish-1.1.4.tm.n
  56. 356
      src/embedded/man/files/_module_tomlish-1.1.5.tm.n
  57. 369
      src/embedded/man/files/_module_tomlish-1.1.6.tm.n
  58. 4
      src/embedded/man/files/punk/_module_ansi-0.1.1.tm.n
  59. 57
      src/embedded/man/files/punk/_module_args-0.2.tm.n
  60. 1
      src/embedded/man/files/punk/_module_assertion-0.1.0.tm.n
  61. 2
      src/embedded/man/files/punk/_module_basictelnet-0.1.0.tm.n
  62. 2
      src/embedded/man/files/punk/_module_blockletter-0.1.0.tm.n
  63. 11
      src/embedded/man/files/punk/_module_cap-0.1.0.tm.n
  64. 5
      src/embedded/man/files/punk/_module_cesu-0.1.1.tm.n
  65. 2
      src/embedded/man/files/punk/_module_fileline-0.1.0.tm.n
  66. 326
      src/embedded/man/files/punk/_module_icomm-0.1.0.tm.n
  67. 314
      src/embedded/man/files/punk/_module_imap4-0.9.tm.n
  68. 2
      src/embedded/man/files/punk/_module_lib-0.1.1.tm.n
  69. 679
      src/embedded/man/files/punk/_module_lib-0.1.2.tm.n
  70. 306
      src/embedded/man/files/punk/_module_libunknown-0.1.tm.n
  71. 325
      src/embedded/man/files/punk/_module_netbox-0.1.0.tm.n
  72. 4
      src/embedded/man/files/punk/_module_packagepreference-0.1.0.tm.n
  73. 3
      src/embedded/man/files/punk/_module_path-0.1.0.tm.n
  74. 325
      src/embedded/man/files/punk/_module_pcon-1.0.tm.n
  75. 325
      src/embedded/man/files/punk/_module_pipe-1.0.tm.n
  76. 2
      src/embedded/man/files/punk/_module_rest-0.1.0.tm.n
  77. 8
      src/embedded/man/files/punk/_module_safe-0.1.0.tm.n
  78. 8
      src/embedded/man/files/punk/_module_sixel-0.1.0.tm.n
  79. 1
      src/embedded/man/files/punk/_module_trie-0.1.0.tm.n
  80. 2
      src/embedded/man/files/punk/_module_winlnk-0.1.0.tm.n
  81. 325
      src/embedded/man/files/punk/_module_winshell-0.1.0.tm.n
  82. 310
      src/embedded/man/files/punk/ansi/_module_colourmap-0.1.0.tm.n
  83. 11
      src/embedded/man/files/punk/args/_module_tclcore-0.1.0.tm.n
  84. 320
      src/embedded/man/files/punk/args/_module_tkcore-0.1.0.tm.n
  85. 306
      src/embedded/man/files/punk/args/_module_tzint-1.1.1.tm.n
  86. 4
      src/embedded/man/files/punk/mix/commandset/_module_project-0.1.0.tm.n
  87. 1
      src/embedded/man/files/punk/nav/_module_fs-0.1.0.tm.n
  88. 84
      src/embedded/man/files/punk/netbox/_module_man-0.1.0.tm.n
  89. 202
      src/embedded/man/index.n
  90. 74
      src/embedded/man/toc.n
  91. 30
      src/embedded/md/.doc/tocdoc
  92. 2
      src/embedded/md/.idx
  93. 2
      src/embedded/md/.toc
  94. 2
      src/embedded/md/.xrf
  95. 14
      src/embedded/md/doc/files/_module_fauxlink-0.1.1.tm.md
  96. 87
      src/embedded/md/doc/files/_module_modpod-0.1.3.tm.md
  97. 139
      src/embedded/md/doc/files/_module_overtype-1.6.6.tm.md
  98. 79
      src/embedded/md/doc/files/_module_picalc-0.1.0.tm.md
  99. 87
      src/embedded/md/doc/files/_module_pipe-1.0.tm.md
  100. 2
      src/embedded/md/doc/files/_module_termscheme-0.1.0.tm.md
  101. Some files were not shown because too many files have changed in this diff Show More

11
src/doc/_module_fauxlink-0.1.1.tm.man

@ -4,7 +4,7 @@
[manpage_begin fauxlink_module_fauxlink 0 0.1.1]
[copyright "2024"]
[titledesc {faux link application shortcuts}] [comment {-- Name section and table of contents description --}]
[moddesc {fauxlink .fxlnk}] [comment {-- Description at end of page heading --}]
[moddesc {.fauxlink .fxlnk}] [comment {-- Description at end of page heading --}]
[require fauxlink]
[keywords symlink faux fake shortcut toml]
[description]
@ -13,18 +13,19 @@
[para] A solution is required for application-driven filesystem links that survives cross platform moves as well as
[para] archiving and packaging systems.
[para] The target is specified in a minimally-encoded form in the filename itself - but still human readable.
[para] format of name <nominalname>#<encodedtarget>.fxlnk
[para] format of name <nominalname>#<encodedtarget>.fauxlink
[para] where <nominalname> can be empty - then the effective nominal name is the tail of the <encodedtarget>
[para] The file extension must be .fauxlink or .fxlnk
[para] The + symbol substitutes for forward-slashes.
[para] Other chars can be encoded using url-like encoding - (but only up to %7E !)
[para] We deliberately treat higher % sequences literally.
[para] This means actual uri::urn encoded unicode sequences (e.g %E2%99%A5 [lb]heart[rb]) can remain literal for linking to urls.
[para] e.g if an actual + or # is required in a filename or path segment they can be encoded as %2B & %23
[para] e.g a link to a file file#A.txt in parent dir could be:
[para] file%23A.txt#..+file%23A.txt.fxlnk
[para] or equivalently (but obviously affecting sorting) #..+file%23A.txt.fxlnk
[para] file%23A.txt#..+file%23A.txt.fauxlink
[para] or equivalently (but obviously affecting sorting) #..+file%23A.txt.fauxlink
[para] The <nominalname> can be unrelated to the actual target
[para] e.g datafile.dat#..+file%23A.txt.fxlnk
[para] e.g datafile.dat#..+file%23A.txt.fauxlink
[para] This system has no filesystem support - and must be completely application driven.
[para] This can be useful for example in application test packages which may be tarred or zipped and moved cross platform.
[para] The target being fully specified in the name means the file doesn't have to be read for the target to be determined

37
src/doc/_module_modpod-0.1.3.tm.man

@ -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]

49
src/doc/_module_overtype-1.6.6.tm.man

@ -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]

32
src/doc/_module_picalc-0.1.0.tm.man

@ -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]

44
src/doc/_module_pipe-1.0.tm.man

@ -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]

2
src/doc/_module_termscheme-0.1.0.tm.man

@ -22,6 +22,7 @@
[subsection {Namespace termscheme::class}]
[para] class definitions
if {[tcl::info::commands [tcl::namespace::current]::interface_sample1] eq ""} {
*** !doctools
[list_begin enumerated]
[list_end] [comment {--- end class enumeration ---}]
}
@ -37,6 +38,7 @@ if {[tcl::info::commands [tcl::namespace::current]::interface_sample1] eq ""} {
[list_end] [comment {--- end definitions namespace termscheme::lib ---}]
[section Internal]
tcl::namespace::eval termscheme::system {
*** !doctools
[subsection {Namespace termscheme::system}]
[para] Internal functions that are not part of the API
[manpage_end]

46
src/doc/_module_textblock-0.1.1.tm.man

@ -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]

8
src/doc/_module_textblock-0.1.2.tm.man → src/doc/_module_textblock-0.1.3.tm.man

@ -1,7 +1,7 @@
[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.2]
[manpage_begin punkshell_module_textblock 0 0.1.3]
[copyright "2024"]
[titledesc {punk textblock functions}] [comment {-- Name section and table of contents description --}]
[moddesc {punk textblock}] [comment {-- Description at end of page heading --}]
@ -63,7 +63,7 @@
[call class::table [method header_colspans]]
[para] Show the colspans configured for all headers
[call class::table [method configure_header]]
[para] - undocumented
[para] - configure header row-wise
[call class::table [method add_row]\
[arg valuelist]\
[opt "[option -minheight] [arg int_minheight]"]\
@ -113,8 +113,4 @@
[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
"
Already uniform blocks will join faster than textblock::join, and ragged blocks will join in a ragged manner
"
[manpage_end]

4
src/doc/_module_tomlish-1.1.1.tm.man → src/doc/_module_tomlish-1.1.2.tm.man

@ -1,7 +1,7 @@
[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.1]
[manpage_begin tomlish_module_tomlish 0 1.1.2]
[copyright "2024"]
[titledesc {tomlish toml parser}] [comment {-- Name section and table of contents description --}]
[moddesc {tomlish}] [comment {-- Description at end of page heading --}]
@ -41,7 +41,7 @@
[subsection {Namespace tomlish::decode}]
[para]
[list_begin definitions]
[call [fun toml] [arg s]]
[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}]

74
src/doc/_module_tomlish-1.1.3.tm.man

@ -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]

74
src/doc/_module_tomlish-1.1.4.tm.man

@ -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]

64
src/doc/_module_tomlish-1.1.5.tm.man

@ -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]

73
src/doc/_module_tomlish-1.1.6.tm.man

@ -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]

1
src/doc/punk/_module_ansi-0.1.1.tm.man

@ -75,6 +75,7 @@
[para][example {punk::ansi::move_emit 10 10 blah {*}[punk::console::get_cursor_pos_list] DONE}]
[para]A string created by any move_emit_return for punk::ansi would not behave in an intuitive manner compared to other punk::ansi move functions - so is deliberately omitted.
[call [fun move_emitblock] [arg row] [arg col] [arg textblock]]
[call [fun move_emitblock] [arg row] [arg col] [arg textblock]]
[call [fun move_forward] [arg n]]
[call [fun move_back] [arg n]]
[call [fun move_up] [arg n]]

52
src/doc/punk/_module_args-0.1.0.tm.man → src/doc/punk/_module_args-0.2.tm.man

@ -1,7 +1,7 @@
[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::args 0 0.1.0]
[manpage_begin punkshell_module_punk::args 0 0.2]
[copyright "2024"]
[titledesc {args parsing}] [comment {-- Name section and table of contents description --}]
[moddesc {args to nested dict of opts and values}] [comment {-- Description at end of page heading --}]
@ -25,19 +25,19 @@
[para]The proc can still contain some leading required values e.g [example "proc dostuff {arg1 arg2 args} {...}}"]
[para]but having the core values elements at the end of args is arguably more generally useful - especially in cases where the number of trailing values is unknown and/or the proc is to be called in a functional 'pipeline' style.
[para]
[para]The basic principle is that a call to punk::args::get_dict is made near the beginning of the proc with a cacheable first argument defining the parameters e.g
[para]The basic principle is that a call to punk::args::parse is made near the beginning of the proc with a cacheable argument defining the parameters e.g
[example {
proc dofilestuff {args} {
lassign [dict values [punk::args::get_dict {
*proc -help "do some stuff with files e.g dofilestuff <file1> <file2> <file3>"
*opts -type string
lassign [dict values [punk::args::parse $args withdef {
@cmd -help "do some stuff with files e.g dofilestuff <file1> <file2> <file3>"
@opts -type string
#comment lines ok
-directory -default ""
-translation -default binary
#setting -type none indicates a flag that doesn't take a value (solo flag)
-nocomplain -type none
*values -min 1 -max -1
} $args]] leaders opts values
@values -min 1 -max -1
}]] leaders opts values
puts "translation is [dict get $opts -translation]"
foreach f [dict values $values] {
@ -45,38 +45,40 @@
}
}
}]
[para]The lines beginning with * are optional in most cases and can be used to set defaults and some extra controls
[para] - the above example would work just fine with only the -<optionname> lines, but would allow zero filenames to be supplied as no -min value is set for *values
[para]valid * lines being with *proc *leaders *opts *values
[para]The lines beginning with @ are usually optional in most cases and can be used to set defaults and some extra controls
[para] - the above example would work just fine with only the -<optionname> lines, but would allow zero filenames to be supplied as no -min value is set for @values
[para]valid @ lines being with @cmd @leaders @opts @values
[para]lines beginning with a dash define options - a name can optionally be given to each trailing positional argument.
[para]If no names are defined for positional arguments, they will end up in the values key of the dict with numerical keys starting at zero.
[para]e.g the result from the punk::args call above may be something like:
[para] opts {-translation binary -directory "" -nocomplain 0} values {0 file1.txt 1 file2.txt 2 file3.txt}
[para]e.g the result from the punk::args::parse call above may be something like:
[para] leaders {} opts {-translation binary -directory "" -nocomplain 0} values {0 file1.txt 1 file2.txt 2 file3.txt}
[para]Here is an example that requires the number of values supplied to be exactly 2 and names the positional arguments
[para]It also demonstrates an inital argument 'category' that is outside of the scope for punk::args processing - allowing leading and trailing positional arguments
[para]This could also be implemented entirely using args - and the @leaders category of arguments
[example {
proc dofilestuff {category args} {
lassign [dict values [punk::args::get_dict {
lassign [dict values [punk::args::parse $args withdef {
@id -id ::dofilestuff
-directory -default ""
-translation -default binary
-nocomplain -type none
*values -min 2 -max 2
@values -min 2 -max 2
fileA -type existingfile 1
fileB -type existingfile 1
} $args]] leaders opts values
}]] leaders opts values
puts "$category fileA: [dict get $values fileA]"
puts "$category fileB: [dict get $values fileB]"
}
}]
[para]By using standard tcl proc named arguments prior to args, and setting *values -min 0 -max 0
[para]By using standard tcl proc named arguments prior to args, and setting @values -min 0 -max 0
[para]a Tk-style ordering can be acheived, where punk::args is only handling the trailing flags and the values element of the returned dict can be ignored
[para]This use of leading positional arguments means the type validation features can't be applied to them. It can be done manually as usual,
[para] or an additional call could be made to punk::args e.g
[example {
punk::args::get_dict {
punk::args::parse [list $category $another_leading_arg] withdef {
category -choices {cat1 cat2 cat3}
another_leading_arg -type boolean
} [list $category $another_leading_arg]
}
}]
[subsection Notes]
[para]For internal functions not requiring features such as solo flags, prefix matching, type checking etc - a well crafted switch statement will be the fastest pure-tcl solution.
@ -164,7 +166,7 @@ For functions that are part of an API a package may be more suitable.
[item] [package {Tcl 8.6-}]
[list_end]
[section API]
[subsection {Namespace punk::args}]
[subsection {Namespace punk::args::register}]
[para] cooperative namespace punk::args::register
[para] punk::args aware packages may add their own namespace to the public list variable NAMESPACES before or after punk::args is loaded
[para] The punk::args package will then test for a public list variable <namepace>::PUNKARGS containing argument definitions when it needs to.
@ -173,23 +175,23 @@ For functions that are part of an API a package may be more suitable.
[subsection {Namespace punk::args}]
[para] Core API functions for punk::args
[list_begin definitions]
[call [fun get_dict] [arg optionspecs] [arg rawargs]]
[call [fun get_dict] [arg deflist] [arg rawargs] [arg args]]
[para]Parse rawargs as a sequence of zero or more option-value pairs followed by zero or more values
[para]Returns a dict of the form: opts <options_dict> values <values_dict>
[para]ARGUMENTS:
[list_begin arguments]
[arg_def multiline-string optionspecs]
[para] This a block of text with records delimited by newlines (lf or crlf) - but with multiline values allowed if properly quoted/braced
[arg_def list-of-multiline-string deflist]
[para] These are blocks of text with records delimited by newlines (lf or crlf) - but with multiline values allowed if properly quoted/braced
[para]'info complete' is used to determine if a record spans multiple lines due to multiline values
[para]Each optionspec line defining a flag must be of the form:
[para]-optionname -key val -key2 val2...
[para]where the valid keys for each option specification are: -default -type -range -choices -optional
[para]where the valid keys for each option specification are: -default -type -range -choices -optional etc
[para]Each optionspec line defining a positional argument is of the form:
[para]argumentname -key val -ky2 val2...
[para]where the valid keys for each option specification are: -default -type -range -choices
[para]comment lines begining with # are ignored and can be placed anywhere except within a multiline value where it would become part of that value
[para]lines beginning with *proc *leaders *opts or *values also take -key val pairs and can be used to set defaults and control settings.
[para]*opts or *values lines can appear multiple times with defaults affecting flags/values that follow.
[para]lines beginning with @cmd @leaders @opts or @values also take -key val pairs and can be used to set defaults and control settings.
[para]@opts or @values lines can appear multiple times with defaults affecting flags/values that follow.
[arg_def list rawargs]
[para] This is a list of the arguments to parse. Usually it will be the $args value from the containing proc,
but it could be a manually constructed list of values made for example from positional args defined in the proc.

1
src/doc/punk/_module_assertion-0.1.0.tm.man

@ -28,7 +28,6 @@
[para] class definitions
[list_begin enumerated]
[list_end] [comment {--- end class enumeration ---}]
tcl::namespace::import ::punk::assertion::primary::assertActive
[subsection {Namespace punk::assertion}]
[para] Core API functions for punk::assertion
[list_begin definitions]

1
src/doc/punk/_module_basictelnet-0.1.0.tm.man

@ -17,6 +17,7 @@
[para] packages used by punk::basictelnet
[list_begin itemized]
[item] [package {Tcl 8.6}]
[item] [package {punk::args}]
[list_end]
[section API]
[subsection {Namespace punk::basictelnet::class}]

2
src/doc/punk/_module_blockletter-0.1.0.tm.man

@ -25,6 +25,7 @@
[subsection {Namespace punk::blockletter::class}]
[para] class definitions
if {[tcl::info::commands [tcl::namespace::current]::interface_sample1] eq ""} {
*** !doctools
[list_begin enumerated]
[list_end] [comment {--- end class enumeration ---}]
}
@ -40,6 +41,7 @@ if {[tcl::info::commands [tcl::namespace::current]::interface_sample1] eq ""} {
[list_end] [comment {--- end definitions namespace punk::blockletter::lib ---}]
[section Internal]
tcl::namespace::eval punk::blockletter::system {
*** !doctools
[subsection {Namespace punk::blockletter::system}]
[para] Internal functions that are not part of the API
[manpage_end]

5
src/doc/punk/_module_cap-0.1.0.tm.man

@ -66,11 +66,6 @@ namespace eval capsystem {
[para] The above example declares that your package can be registered as a provider for the capabilities named 'punk.templates' and 'another_capability_name'
[list_begin definitions]
[para] [emph METHODS]
[call class::interface_capprovider.registration [method get_declarations]]
[para] This method must be overridden by your provider using oo::objdefine cappprovider.registration as in the example above.
There must be at least one 2-element list in the result for the provider to be registerable.
[para]The first element of the list is the capabilityname - which can be custom to your provider/handler packages - or a well-known name that other authors may use/implement.
[para]The second element is a dictionary of keys specific to the capability being implemented. It may be empty if the any potential capability handlers for the named capability don't require registration data.
[list_end]
[enum] CLASS [class interface_capprovider.provider]
[para] Your provider package will need to instantiate this directly under it's own namespace with the command name of [emph {provider}]

3
src/doc/punk/_module_cesu-0.1.0.tm.man → src/doc/punk/_module_cesu-0.1.1.tm.man

@ -1,7 +1,7 @@
[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::cesu 0 0.1.0]
[manpage_begin punkshell_module_punk::cesu 0 0.1.1]
[copyright "2024"]
[titledesc {CESU compatibility ehcoding scheme for utf-16: 8-Bit (CESU-8) ??}] [comment {-- Name section and table of contents description --}]
[moddesc {CESU experimental}] [comment {-- Description at end of page heading --}]
@ -31,6 +31,7 @@
[list_end] [comment {--- end definitions namespace punk::cesu::lib ---}]
[section Internal]
tcl::namespace::eval punk::cesu::system {
*** !doctools
[subsection {Namespace punk::cesu::system}]
[para] Internal functions that are not part of the API
[manpage_end]

2
src/doc/punk/_module_fileline-0.1.0.tm.man

@ -57,7 +57,7 @@
[para] Constructor for textinfo object which represents a chunk or all of a file
[para] datachunk should be passed with the file data including line-endings as-is for full functionality. ie use something like:
[example_begin]
fconfigure $fd -translation binary
chan configure $fd -translation binary
set chunkdata [lb]read $fd[rb]]
or
set chunkdata [lb]fileutil::cat <filename> -translation binary[rb]

44
src/doc/punk/_module_icomm-0.1.0.tm.man

@ -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]

32
src/doc/punk/_module_imap4-0.9.tm.man

@ -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]

2
src/doc/punk/_module_lib-0.1.1.tm.man

@ -178,7 +178,7 @@ but has the disadvantage of being slower for 'small' numbers and using more memo
[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 joines the elements of the list with -joinchar
[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]]

194
src/doc/punk/_module_lib-0.1.2.tm.man

@ -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]

26
src/doc/punk/_module_libunknown-0.1.tm.man

@ -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]

43
src/doc/punk/_module_netbox-0.1.0.tm.man

@ -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]

3
src/doc/punk/_module_packagepreference-0.1.0.tm.man

@ -23,6 +23,7 @@
[subsection {Namespace punk::packagepreference::class}]
[para] class definitions
if {[tcl::info::commands [tcl::namespace::current]::interface_sample1] eq ""} {
*** !doctools
[list_begin enumerated]
[list_end] [comment {--- end class enumeration ---}]
}
@ -35,6 +36,7 @@ if {[tcl::info::commands [tcl::namespace::current]::interface_sample1] eq ""} {
[para]Return to the previous ::package implementation (This will be the builtin if no other override was present when install was called)
[call [fun install]]
[para]Override ::package builtin (or the current implementation if it has already been renamed/overridden) to check for and prefer lowercase packages/modules
[para](todo - check info loaded and restrict to existing version as determined from dll/so?)
[para]The overriding package command will call whatever implementation was in place before install to do the actual work - once it has modified 'package require' names to lowercase.
[para]This is intended to be in alignment with tip 590 "Recommend lowercase Package Names"
[para] https://core.tcl-lang.org/tips/doc/trunk/tip/590.md
@ -49,7 +51,6 @@ if {[tcl::info::commands [tcl::namespace::current]::interface_sample1] eq ""} {
[list_begin definitions]
[list_end] [comment {--- end definitions namespace punk::packagepreference::lib ---}]
[section Internal]
tcl::namespace::eval punk::packagepreference::system {
[subsection {Namespace punk::packagepreference::system}]
[para] Internal functions that are not part of the API
[manpage_end]

2
src/doc/punk/_module_path-0.1.0.tm.man

@ -17,11 +17,13 @@
[para] packages used by punk::path
[list_begin itemized]
[item] [package {Tcl 8.6-}]
[item] [package {punk::args}]
[list_end]
[section API]
[subsection {Namespace punk::path::class}]
[para] class definitions
if {[info commands [namespace current]::interface_sample1] eq ""} {
*** !doctools
[list_begin enumerated]
[list_end] [comment {--- end class enumeration ---}]
}

44
src/doc/punk/_module_pcon-1.0.tm.man

@ -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]

44
src/doc/punk/_module_pipe-1.0.tm.man

@ -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]

2
src/doc/punk/_module_rest-0.1.0.tm.man

@ -22,6 +22,7 @@
[subsection {Namespace punk::rest::class}]
[para] class definitions
if {[tcl::info::commands [tcl::namespace::current]::interface_sample1] eq ""} {
*** !doctools
[list_begin enumerated]
[list_end] [comment {--- end class enumeration ---}]
}
@ -37,6 +38,7 @@ if {[tcl::info::commands [tcl::namespace::current]::interface_sample1] eq ""} {
[list_end] [comment {--- end definitions namespace punk::rest::lib ---}]
[section Internal]
tcl::namespace::eval punk::rest::system {
*** !doctools
[subsection {Namespace punk::rest::system}]
[para] Internal functions that are not part of the API
[manpage_end]

8
src/doc/punk/_module_safe-0.1.0.tm.man

@ -20,14 +20,6 @@
[item] [package {punk::args}]
[list_end]
[section API]
[subsection {Namespace punk::safe::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::safe::lib}]
[para] Secondary functions that are part of the API
[list_begin definitions]

8
src/doc/punk/_module_sixel-0.1.0.tm.man

@ -23,14 +23,6 @@
[item] [package {punk::ansi}]
[list_end]
[section API]
[subsection {Namespace punk::sixel::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::sixel}]
[para] Core API functions for punk::sixel
[list_begin definitions]

1
src/doc/punk/_module_trie-0.1.0.tm.man

@ -34,6 +34,7 @@
[list_end] [comment {--- end definitions namespace punk::trie::lib ---}]
[section Internal]
tcl::namespace::eval punk::trie::system {
*** !doctools
[subsection {Namespace punk::trie::system}]
[para] Internal functions that are not part of the API
[manpage_end]

2
src/doc/punk/_module_winlnk-0.1.0.tm.man

@ -24,6 +24,7 @@
[subsection {Namespace punk::winlnk::class}]
[para] class definitions
if {[tcl::info::commands [tcl::namespace::current]::interface_sample1] eq ""} {
*** !doctools
[list_begin enumerated]
[list_end] [comment {--- end class enumeration ---}]
}
@ -45,6 +46,7 @@ if {[tcl::info::commands [tcl::namespace::current]::interface_sample1] eq ""} {
[list_end] [comment {--- end definitions namespace punk::winlnk::lib ---}]
[section Internal]
tcl::namespace::eval punk::winlnk::system {
*** !doctools
[subsection {Namespace punk::winlnk::system}]
[para] Internal functions that are not part of the API
[manpage_end]

44
src/doc/punk/_module_winshell-0.1.0.tm.man

@ -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]

67
src/doc/punk/_module_zip-0.1.0.tm.man

@ -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]

30
src/doc/punk/ansi/_module_colourmap-0.1.0.tm.man

@ -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]

10
src/doc/punk/args/_module_tclcore-0.1.0.tm.man

@ -18,16 +18,9 @@
[list_begin itemized]
[item] [package {Tcl 8.6}]
[item] [package {punk::args}]
[item] [package {textblock}]
[list_end]
[section API]
[subsection {Namespace punk::args::tclcore::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::args::tclcore}]
[para] Core API functions for punk::args::tclcore
[list_begin definitions]
@ -38,6 +31,7 @@ if {[tcl::info::commands [tcl::namespace::current]::interface_sample1] eq ""} {
[list_end] [comment {--- end definitions namespace punk::args::tclcore::lib ---}]
[section Internal]
tcl::namespace::eval punk::args::tclcore::system {
*** !doctools
[subsection {Namespace punk::args::tclcore::system}]
[para] Internal functions that are not part of the API
[manpage_end]

37
src/doc/punk/args/_module_tkcore-0.1.0.tm.man

@ -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]

26
src/doc/punk/args/_module_tzint-1.1.1.tm.man

@ -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]

2
src/doc/punk/mix/commandset/_module_project-0.1.0.tm.man

@ -49,7 +49,7 @@ create minimal folder structure only by specifying in args: -modules {}
[para] commandset functions for operating with multiple projects.
[para] It would usually be imported with the prefix "projects" and separator "." to result in commands such as: <ensemblecommand> projects.detail
[list_begin definitions]
[call [fun _default] [arg glob] [opt {option value...}]]
[call [fun _default] [arg glob...]]
[para]List projects under fossil management, showing fossil db location and number of checkouts
[para]The glob argument is optional unless option/value pairs are also supplied, in which case * should be explicitly supplied
[para]glob restricts output based on the name of the fossil db file e.g s* for all projects beginning with s

1
src/doc/punk/nav/_module_fs-0.1.0.tm.man

@ -27,6 +27,7 @@
[subsection {Namespace punk::nav::fs::class}]
[para] class definitions
if {[tcl::info::commands [tcl::namespace::current]::interface_sample1] eq ""} {
*** !doctools
[list_begin enumerated]
[list_end] [comment {--- end class enumeration ---}]
}

45
src/doc/punk/netbox/_module_man-0.1.0.tm.man

@ -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]

12
src/embedded/man/files/_module_fauxlink-0.1.1.tm.n

@ -2,7 +2,7 @@
'\" Generated from file '_module_fauxlink-0\&.1\&.1\&.tm\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2024
'\"
.TH "fauxlink_module_fauxlink" 0 0\&.1\&.1 doc "fauxlink \&.fxlnk"
.TH "fauxlink_module_fauxlink" 0 0\&.1\&.1 doc "\&.fauxlink \&.fxlnk"
.\" The -*- nroff -*- definitions below are for supplemental macros used
.\" in Tcl/Tk manual entries.
.\"
@ -289,10 +289,12 @@ archiving and packaging systems\&.
.PP
The target is specified in a minimally-encoded form in the filename itself - but still human readable\&.
.PP
format of name <nominalname>#<encodedtarget>\&.fxlnk
format of name <nominalname>#<encodedtarget>\&.fauxlink
.PP
where <nominalname> can be empty - then the effective nominal name is the tail of the <encodedtarget>
.PP
The file extension must be \&.fauxlink or \&.fxlnk
.PP
The + symbol substitutes for forward-slashes\&.
.PP
Other chars can be encoded using url-like encoding - (but only up to %7E !)
@ -305,13 +307,13 @@ e\&.g if an actual + or # is required in a filename or path segment they can be
.PP
e\&.g a link to a file file#A\&.txt in parent dir could be:
.PP
file%23A\&.txt#\&.\&.+file%23A\&.txt\&.fxlnk
file%23A\&.txt#\&.\&.+file%23A\&.txt\&.fauxlink
.PP
or equivalently (but obviously affecting sorting) #\&.\&.+file%23A\&.txt\&.fxlnk
or equivalently (but obviously affecting sorting) #\&.\&.+file%23A\&.txt\&.fauxlink
.PP
The <nominalname> can be unrelated to the actual target
.PP
e\&.g datafile\&.dat#\&.\&.+file%23A\&.txt\&.fxlnk
e\&.g datafile\&.dat#\&.\&.+file%23A\&.txt\&.fauxlink
.PP
This system has no filesystem support - and must be completely application driven\&.
.PP

70
src/embedded/man/files/_module_textblock-0.1.1.tm.n → src/embedded/man/files/_module_modpod-0.1.3.tm.n

@ -1,8 +1,8 @@
'\"
'\" Generated from file '_module_textblock-0\&.1\&.1\&.tm\&.man' by tcllib/doctools with format 'nroff'
'\" Generated from file '_module_modpod-0\&.1\&.3\&.tm\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2024
'\"
.TH "punkshell_module_textblock" 0 0\&.1\&.1 doc "punk textblock"
.TH "modpod_module_modpod" 0 0\&.1\&.3 doc "-"
.\" The -*- nroff -*- definitions below are for supplemental macros used
.\" in Tcl/Tk manual entries.
.\"
@ -272,71 +272,45 @@ Database Class: \\fB\\$3\\fR
..
.BS
.SH NAME
punkshell_module_textblock \- punk textblock functions
modpod_module_modpod \- Module API
.SH SYNOPSIS
package require \fBtextblock \fR
.sp
class::table \fBconstructor\fR \fIargs\fR
.sp
class::table \fBadd_column\fR \fIargs\fR
.sp
class::table \fBadd_row\fR \fIargs\fR
package require \fBmodpod\fR
.sp
.BE
.SH DESCRIPTION
.PP
Ansi-aware terminal textblock manipulation
-
.SH OVERVIEW
.PP
overview of textblock
overview of modpod
.SS CONCEPTS
.PP
-
.SS DEPENDENCIES
.PP
packages used by textblock
packages used by modpod
.IP \(bu
\fBTcl 8\&.6-\fR
.IP \(bu
\fBpunk::args\fR
.IP \(bu
\fBpunk::char\fR
.IP \(bu
\fBpunk::ansi\fR
.IP \(bu
\fBpunk::lib\fR
.IP \(bu
\fBovertype\fR
.IP \(bu
\fBterm::ansi::code::macros\fR
.IP \(bu
\fBtextutil\fR
.PP
.SH API
.SS "NAMESPACE TEXTBLOCK::CLASS"
.SS "NAMESPACE MODPOD::CLASS"
.PP
class definitions
.IP \(bu
.sp
\fIhandler_classes\fR
.RS
.IP [1]
CLASS \fBtextblock::class::table\fR
.RS
.sp
\fIMETHODS\fR
.TP
class::table \fBconstructor\fR \fIargs\fR
.TP
class::table \fBadd_column\fR \fIargs\fR
.TP
class::table \fBadd_row\fR \fIargs\fR
.RE
.RE
.PP
Already uniform blocks will join faster than textblock::join, and ragged blocks will join in a ragged manner
"
.SS "NAMESPACE MODPOD"
.PP
Core API functions for modpod
.PP
.SS "NAMESPACE MODPOD::LIB"
.PP
Secondary functions that are part of the API
.PP
.SH INTERNAL
.SS "NAMESPACE MODPOD::SYSTEM"
.PP
Internal functions that are not part of the API
.SH KEYWORDS
lib, module, utility
module
.SH COPYRIGHT
.nf
Copyright (c) 2024

354
src/embedded/man/files/_module_overtype-1.6.6.tm.n

@ -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

314
src/embedded/man/files/_module_picalc-0.1.0.tm.n

@ -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

325
src/embedded/man/files/_module_pipe-1.0.tm.n

@ -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

2
src/embedded/man/files/_module_termscheme-0.1.0.tm.n

@ -297,6 +297,7 @@ packages used by termscheme
.PP
class definitions
if { eq ""} {
*** !doctools
.PP
}
}
@ -311,6 +312,7 @@ Secondary functions that are part of the API
.PP
.SH INTERNAL
tcl::namespace::eval termscheme::system {
*** !doctools
.SS "NAMESPACE TERMSCHEME::SYSTEM"
.PP
Internal functions that are not part of the API

10
src/embedded/man/files/_module_textblock-0.1.2.tm.n → src/embedded/man/files/_module_textblock-0.1.3.tm.n

@ -1,8 +1,8 @@
'\"
'\" Generated from file '_module_textblock-0\&.1\&.2\&.tm\&.man' by tcllib/doctools with format 'nroff'
'\" Generated from file '_module_textblock-0\&.1\&.3\&.tm\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2024
'\"
.TH "punkshell_module_textblock" 0 0\&.1\&.2 doc "punk textblock"
.TH "punkshell_module_textblock" 0 0\&.1\&.3 doc "punk textblock"
.\" The -*- nroff -*- definitions below are for supplemental macros used
.\" in Tcl/Tk manual entries.
.\"
@ -425,7 +425,7 @@ Show the colspans configured for all headers
.TP
class::table \fBconfigure_header\fR
.sp
- undocumented
- configure header row-wise
.TP
class::table \fBadd_row\fR \fIvaluelist\fR ?\fB-minheight\fR \fIint_minheight\fR? ?\fB-maxheight\fR \fIint_maxheight\fR? ?\fB-ansibase\fR \fIansicode\fR?
.TP
@ -499,10 +499,6 @@ If the original cell data itself contains ANSI - the output will still contain t
.RE
.RE
.PP
Already uniform blocks will join faster than textblock::join, and ragged blocks will join in a ragged manner
"
Already uniform blocks will join faster than textblock::join, and ragged blocks will join in a ragged manner
"
.SH KEYWORDS
ansi, colour, console, frame, layout, module, table, terminal, text
.SH COPYRIGHT

8
src/embedded/man/files/_module_tomlish-1.1.1.tm.n → src/embedded/man/files/_module_tomlish-1.1.2.tm.n

@ -1,8 +1,8 @@
'\"
'\" Generated from file '_module_tomlish-1\&.1\&.1\&.tm\&.man' by tcllib/doctools with format 'nroff'
'\" Generated from file '_module_tomlish-1\&.1\&.2\&.tm\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2024
'\"
.TH "tomlish_module_tomlish" 0 1\&.1\&.1 doc "tomlish"
.TH "tomlish_module_tomlish" 0 1\&.1\&.2 doc "tomlish"
.\" The -*- nroff -*- definitions below are for supplemental macros used
.\" in Tcl/Tk manual entries.
.\"
@ -278,7 +278,7 @@ package require \fBtomlish \fR
.sp
\fBjson_to_toml\fR \fIjson\fR
.sp
\fBtoml\fR \fIs\fR
\fBtoml\fR \fIarg\&.\&.\&.\fR
.sp
app::\fBdecoder\fR \fIargs\fR
.sp
@ -332,7 +332,7 @@ Core API functions for tomlish
.SS "NAMESPACE TOMLISH::DECODE"
.PP
.TP
\fBtoml\fR \fIs\fR
\fBtoml\fR \fIarg\&.\&.\&.\fR
.sp
return a Tcl list of tomlish tokens
.PP

380
src/embedded/man/files/_module_tomlish-1.1.3.tm.n

@ -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

380
src/embedded/man/files/_module_tomlish-1.1.4.tm.n

@ -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

356
src/embedded/man/files/_module_tomlish-1.1.5.tm.n

@ -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

369
src/embedded/man/files/_module_tomlish-1.1.6.tm.n

@ -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

4
src/embedded/man/files/punk/_module_ansi-0.1.1.tm.n

@ -306,6 +306,8 @@ package require \fBpunk::ansi \fR
.sp
\fBmove_emitblock\fR \fIrow\fR \fIcol\fR \fItextblock\fR
.sp
\fBmove_emitblock\fR \fIrow\fR \fIcol\fR \fItextblock\fR
.sp
\fBmove_forward\fR \fIn\fR
.sp
\fBmove_back\fR \fIn\fR
@ -516,6 +518,8 @@ A string created by any move_emit_return for punk::ansi would not behave in an i
.TP
\fBmove_emitblock\fR \fIrow\fR \fIcol\fR \fItextblock\fR
.TP
\fBmove_emitblock\fR \fIrow\fR \fIcol\fR \fItextblock\fR
.TP
\fBmove_forward\fR \fIn\fR
.TP
\fBmove_back\fR \fIn\fR

57
src/embedded/man/files/punk/_module_args-0.1.0.tm.n → src/embedded/man/files/punk/_module_args-0.2.tm.n

@ -1,8 +1,8 @@
'\"
'\" Generated from file '_module_args-0\&.1\&.0\&.tm\&.man' by tcllib/doctools with format 'nroff'
'\" Generated from file '_module_args-0\&.2\&.tm\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2024
'\"
.TH "punkshell_module_punk::args" 0 0\&.1\&.0 doc "args to nested dict of opts and values"
.TH "punkshell_module_punk::args" 0 0\&.2 doc "args to nested dict of opts and values"
.\" The -*- nroff -*- definitions below are for supplemental macros used
.\" in Tcl/Tk manual entries.
.\"
@ -276,7 +276,7 @@ punkshell_module_punk::args \- args parsing
.SH SYNOPSIS
package require \fBpunk::args\fR
.sp
\fBget_dict\fR \fIoptionspecs\fR \fIrawargs\fR
\fBget_dict\fR \fIdeflist\fR \fIrawargs\fR \fIargs\fR
.sp
.BE
.SH DESCRIPTION
@ -311,21 +311,21 @@ proc dostuff {arg1 arg2 args} {\&.\&.\&.}}
but having the core values elements at the end of args is arguably more generally useful - especially in cases where the number of trailing values is unknown and/or the proc is to be called in a functional 'pipeline' style\&.
.PP
.PP
The basic principle is that a call to punk::args::get_dict is made near the beginning of the proc with a cacheable first argument defining the parameters e\&.g
The basic principle is that a call to punk::args::parse is made near the beginning of the proc with a cacheable argument defining the parameters e\&.g
.CS
proc dofilestuff {args} {
lassign [dict values [punk::args::get_dict {
*proc -help "do some stuff with files e\&.g dofilestuff <file1> <file2> <file3>"
*opts -type string
lassign [dict values [punk::args::parse $args withdef {
@cmd -help "do some stuff with files e\&.g dofilestuff <file1> <file2> <file3>"
@opts -type string
#comment lines ok
-directory -default ""
-translation -default binary
#setting -type none indicates a flag that doesn't take a value (solo flag)
-nocomplain -type none
*values -min 1 -max -1
} $args]] leaders opts values
@values -min 1 -max -1
}]] leaders opts values
puts "translation is [dict get $opts -translation]"
foreach f [dict values $values] {
@ -335,42 +335,45 @@ The basic principle is that a call to punk::args::get_dict is made near the begi
.CE
.PP
The lines beginning with * are optional in most cases and can be used to set defaults and some extra controls
The lines beginning with @ are usually optional in most cases and can be used to set defaults and some extra controls
.PP
- the above example would work just fine with only the -<optionname> lines, but would allow zero filenames to be supplied as no -min value is set for *values
- the above example would work just fine with only the -<optionname> lines, but would allow zero filenames to be supplied as no -min value is set for @values
.PP
valid * lines being with *proc *leaders *opts *values
valid @ lines being with @cmd @leaders @opts @values
.PP
lines beginning with a dash define options - a name can optionally be given to each trailing positional argument\&.
.PP
If no names are defined for positional arguments, they will end up in the values key of the dict with numerical keys starting at zero\&.
.PP
e\&.g the result from the punk::args call above may be something like:
e\&.g the result from the punk::args::parse call above may be something like:
.PP
opts {-translation binary -directory "" -nocomplain 0} values {0 file1\&.txt 1 file2\&.txt 2 file3\&.txt}
leaders {} opts {-translation binary -directory "" -nocomplain 0} values {0 file1\&.txt 1 file2\&.txt 2 file3\&.txt}
.PP
Here is an example that requires the number of values supplied to be exactly 2 and names the positional arguments
.PP
It also demonstrates an inital argument 'category' that is outside of the scope for punk::args processing - allowing leading and trailing positional arguments
.PP
This could also be implemented entirely using args - and the @leaders category of arguments
.CS
proc dofilestuff {category args} {
lassign [dict values [punk::args::get_dict {
lassign [dict values [punk::args::parse $args withdef {
@id -id ::dofilestuff
-directory -default ""
-translation -default binary
-nocomplain -type none
*values -min 2 -max 2
@values -min 2 -max 2
fileA -type existingfile 1
fileB -type existingfile 1
} $args]] leaders opts values
}]] leaders opts values
puts "$category fileA: [dict get $values fileA]"
puts "$category fileB: [dict get $values fileB]"
}
.CE
.PP
By using standard tcl proc named arguments prior to args, and setting *values -min 0 -max 0
By using standard tcl proc named arguments prior to args, and setting @values -min 0 -max 0
.PP
a Tk-style ordering can be acheived, where punk::args is only handling the trailing flags and the values element of the returned dict can be ignored
.PP
@ -380,10 +383,10 @@ or an additional call could be made to punk::args e\&.g
.CS
punk::args::get_dict {
punk::args::parse [list $category $another_leading_arg] withdef {
category -choices {cat1 cat2 cat3}
another_leading_arg -type boolean
} [list $category $another_leading_arg]
}
.CE
.SS NOTES
@ -488,7 +491,7 @@ packages used by punk::args
\fBTcl 8\&.6-\fR
.PP
.SH API
.SS "NAMESPACE PUNK::ARGS"
.SS "NAMESPACE PUNK::ARGS::REGISTER"
.PP
cooperative namespace punk::args::register
.PP
@ -500,7 +503,7 @@ The punk::args package will then test for a public list variable <namepace>::PUN
.PP
Core API functions for punk::args
.TP
\fBget_dict\fR \fIoptionspecs\fR \fIrawargs\fR
\fBget_dict\fR \fIdeflist\fR \fIrawargs\fR \fIargs\fR
.sp
Parse rawargs as a sequence of zero or more option-value pairs followed by zero or more values
.sp
@ -509,9 +512,9 @@ Returns a dict of the form: opts <options_dict> values <values_dict>
ARGUMENTS:
.RS
.TP
multiline-string \fIoptionspecs\fR
list-of-multiline-string \fIdeflist\fR
.sp
This a block of text with records delimited by newlines (lf or crlf) - but with multiline values allowed if properly quoted/braced
These are blocks of text with records delimited by newlines (lf or crlf) - but with multiline values allowed if properly quoted/braced
.sp
\'info complete' is used to determine if a record spans multiple lines due to multiline values
.sp
@ -519,7 +522,7 @@ Each optionspec line defining a flag must be of the form:
.sp
-optionname -key val -key2 val2\&.\&.\&.
.sp
where the valid keys for each option specification are: -default -type -range -choices -optional
where the valid keys for each option specification are: -default -type -range -choices -optional etc
.sp
Each optionspec line defining a positional argument is of the form:
.sp
@ -529,9 +532,9 @@ where the valid keys for each option specification are: -default -type -range -c
.sp
comment lines begining with # are ignored and can be placed anywhere except within a multiline value where it would become part of that value
.sp
lines beginning with *proc *leaders *opts or *values also take -key val pairs and can be used to set defaults and control settings\&.
lines beginning with @cmd @leaders @opts or @values also take -key val pairs and can be used to set defaults and control settings\&.
.sp
*opts or *values lines can appear multiple times with defaults affecting flags/values that follow\&.
@opts or @values lines can appear multiple times with defaults affecting flags/values that follow\&.
.TP
list \fIrawargs\fR
.sp

1
src/embedded/man/files/punk/_module_assertion-0.1.0.tm.n

@ -307,7 +307,6 @@ packages used by punk::assertion
.PP
class definitions
.PP
tcl::namespace::import ::punk::assertion::primary::assertActive
.SS "NAMESPACE PUNK::ASSERTION"
.PP
Core API functions for punk::assertion

2
src/embedded/man/files/punk/_module_basictelnet-0.1.0.tm.n

@ -291,6 +291,8 @@ overview of punk::basictelnet
packages used by punk::basictelnet
.IP \(bu
\fBTcl 8\&.6\fR
.IP \(bu
\fBpunk::args\fR
.PP
.SH API
.SS "NAMESPACE PUNK::BASICTELNET::CLASS"

2
src/embedded/man/files/punk/_module_blockletter-0.1.0.tm.n

@ -303,6 +303,7 @@ packages used by punk::blockletter
.PP
class definitions
if { eq ""} {
*** !doctools
.PP
}
}
@ -317,6 +318,7 @@ Secondary functions that are part of the API
.PP
.SH INTERNAL
tcl::namespace::eval punk::blockletter::system {
*** !doctools
.SS "NAMESPACE PUNK::BLOCKLETTER::SYSTEM"
.PP
Internal functions that are not part of the API

11
src/embedded/man/files/punk/_module_cap-0.1.0.tm.n

@ -280,8 +280,6 @@ class::interface_caphandler\&.registry \fBpkg_register\fR \fIpkg\fR \fIcapname\f
.sp
class::interface_caphandler\&.registry \fBpkg_unregister\fR \fIpkg\fR
.sp
class::interface_capprovider\&.registration \fBget_declarations\fR
.sp
class::interface_capprovider\&.provider \fBconstructor\fR \fIproviderpkg\fR
.sp
class::interface_capprovider\&.provider \fBregister\fR ?capabilityname_glob?
@ -379,15 +377,6 @@ The above example declares that your package can be registered as a provider for
.RS
.sp
\fIMETHODS\fR
.TP
class::interface_capprovider\&.registration \fBget_declarations\fR
.sp
This method must be overridden by your provider using oo::objdefine cappprovider\&.registration as in the example above\&.
There must be at least one 2-element list in the result for the provider to be registerable\&.
.sp
The first element of the list is the capabilityname - which can be custom to your provider/handler packages - or a well-known name that other authors may use/implement\&.
.sp
The second element is a dictionary of keys specific to the capability being implemented\&. It may be empty if the any potential capability handlers for the named capability don't require registration data\&.
.RE
.IP [2]
CLASS \fBinterface_capprovider\&.provider\fR

5
src/embedded/man/files/punk/_module_cesu-0.1.0.tm.n → src/embedded/man/files/punk/_module_cesu-0.1.1.tm.n

@ -1,8 +1,8 @@
'\"
'\" Generated from file '_module_cesu-0\&.1\&.0\&.tm\&.man' by tcllib/doctools with format 'nroff'
'\" Generated from file '_module_cesu-0\&.1\&.1\&.tm\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2024
'\"
.TH "punkshell_module_punk::cesu" 0 0\&.1\&.0 doc "CESU experimental"
.TH "punkshell_module_punk::cesu" 0 0\&.1\&.1 doc "CESU experimental"
.\" The -*- nroff -*- definitions below are for supplemental macros used
.\" in Tcl/Tk manual entries.
.\"
@ -307,6 +307,7 @@ Secondary functions that are part of the API
.PP
.SH INTERNAL
tcl::namespace::eval punk::cesu::system {
*** !doctools
.SS "NAMESPACE PUNK::CESU::SYSTEM"
.PP
Internal functions that are not part of the API

2
src/embedded/man/files/punk/_module_fileline-0.1.0.tm.n

@ -411,7 +411,7 @@ datachunk should be passed with the file data including line-endings as-is for f
.CS
fconfigure $fd -translation binary
chan configure $fd -translation binary
set chunkdata [read $fd]]
or
set chunkdata [fileutil::cat <filename> -translation binary]

326
src/embedded/man/files/punk/_module_icomm-0.1.0.tm.n

@ -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

314
src/embedded/man/files/punk/_module_imap4-0.9.tm.n

@ -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

2
src/embedded/man/files/punk/_module_lib-0.1.1.tm.n

@ -651,7 +651,7 @@ options are flags as accepted by lsort ie -ascii -command -decreasing -dictionar
.TP
\fBlist_as_lines\fR ?-joinchar char? \fIlinelist\fR
.sp
This simply joines the elements of the list with -joinchar
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

679
src/embedded/man/files/punk/_module_lib-0.1.2.tm.n

@ -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

306
src/embedded/man/files/punk/_module_libunknown-0.1.tm.n

@ -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

325
src/embedded/man/files/punk/_module_netbox-0.1.0.tm.n

@ -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

4
src/embedded/man/files/punk/_module_packagepreference-0.1.0.tm.n

@ -303,6 +303,7 @@ packages used by punk::packagepreference
.PP
class definitions
if { eq ""} {
*** !doctools
.PP
}
}
@ -319,6 +320,8 @@ Return to the previous ::package implementation (This will be the builtin if no
.sp
Override ::package builtin (or the current implementation if it has already been renamed/overridden) to check for and prefer lowercase packages/modules
.sp
(todo - check info loaded and restrict to existing version as determined from dll/so?)
.sp
The overriding package command will call whatever implementation was in place before install to do the actual work - once it has modified 'package require' names to lowercase\&.
.sp
This is intended to be in alignment with tip 590 "Recommend lowercase Package Names"
@ -340,7 +343,6 @@ Return to the standard ::package builtin by calling punk::packagepreference::uni
Secondary functions that are part of the API
.PP
.SH INTERNAL
tcl::namespace::eval punk::packagepreference::system {
.SS "NAMESPACE PUNK::PACKAGEPREFERENCE::SYSTEM"
.PP
Internal functions that are not part of the API

3
src/embedded/man/files/punk/_module_path-0.1.0.tm.n

@ -299,12 +299,15 @@ Filesystem path utility functions
packages used by punk::path
.IP \(bu
\fBTcl 8\&.6-\fR
.IP \(bu
\fBpunk::args\fR
.PP
.SH API
.SS "NAMESPACE PUNK::PATH::CLASS"
.PP
class definitions
if { eq ""} {
*** !doctools
.PP
}
}

325
src/embedded/man/files/punk/_module_pcon-1.0.tm.n

@ -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

325
src/embedded/man/files/punk/_module_pipe-1.0.tm.n

@ -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

2
src/embedded/man/files/punk/_module_rest-0.1.0.tm.n

@ -297,6 +297,7 @@ packages used by punk::rest
.PP
class definitions
if { eq ""} {
*** !doctools
.PP
}
}
@ -311,6 +312,7 @@ Secondary functions that are part of the API
.PP
.SH INTERNAL
tcl::namespace::eval punk::rest::system {
*** !doctools
.SS "NAMESPACE PUNK::REST::SYSTEM"
.PP
Internal functions that are not part of the API

8
src/embedded/man/files/punk/_module_safe-0.1.0.tm.n

@ -297,14 +297,6 @@ packages used by punk::safe
\fBpunk::args\fR
.PP
.SH API
.SS "NAMESPACE PUNK::SAFE::CLASS"
.PP
class definitions
if { eq ""} {
.PP
}
}
++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++
.SS "NAMESPACE PUNK::SAFE::LIB"
.PP
Secondary functions that are part of the API

8
src/embedded/man/files/punk/_module_sixel-0.1.0.tm.n

@ -301,14 +301,6 @@ packages used by punk::sixel
\fBpunk::ansi\fR
.PP
.SH API
.SS "NAMESPACE PUNK::SIXEL::CLASS"
.PP
class definitions
if { eq ""} {
.PP
}
}
++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++
.SS "NAMESPACE PUNK::SIXEL"
.PP
Core API functions for punk::sixel

1
src/embedded/man/files/punk/_module_trie-0.1.0.tm.n

@ -313,6 +313,7 @@ Secondary functions that are part of the API
.PP
.SH INTERNAL
tcl::namespace::eval punk::trie::system {
*** !doctools
.SS "NAMESPACE PUNK::TRIE::SYSTEM"
.PP
Internal functions that are not part of the API

2
src/embedded/man/files/punk/_module_winlnk-0.1.0.tm.n

@ -305,6 +305,7 @@ packages used by punk::winlnk
.PP
class definitions
if { eq ""} {
*** !doctools
.PP
}
}
@ -331,6 +332,7 @@ Secondary functions that are part of the API
.PP
.SH INTERNAL
tcl::namespace::eval punk::winlnk::system {
*** !doctools
.SS "NAMESPACE PUNK::WINLNK::SYSTEM"
.PP
Internal functions that are not part of the API

325
src/embedded/man/files/punk/_module_winshell-0.1.0.tm.n

@ -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

310
src/embedded/man/files/punk/ansi/_module_colourmap-0.1.0.tm.n

@ -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

11
src/embedded/man/files/punk/args/_module_tclcore-0.1.0.tm.n

@ -293,16 +293,10 @@ packages used by punk::args::tclcore
\fBTcl 8\&.6\fR
.IP \(bu
\fBpunk::args\fR
.IP \(bu
\fBtextblock\fR
.PP
.SH API
.SS "NAMESPACE PUNK::ARGS::TCLCORE::CLASS"
.PP
class definitions
if { eq ""} {
.PP
}
}
++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++
.SS "NAMESPACE PUNK::ARGS::TCLCORE"
.PP
Core API functions for punk::args::tclcore
@ -313,6 +307,7 @@ Secondary functions that are part of the API
.PP
.SH INTERNAL
tcl::namespace::eval punk::args::tclcore::system {
*** !doctools
.SS "NAMESPACE PUNK::ARGS::TCLCORE::SYSTEM"
.PP
Internal functions that are not part of the API

320
src/embedded/man/files/punk/args/_module_tkcore-0.1.0.tm.n

@ -0,0 +1,320 @@
'\"
'\" Generated from file '_module_tkcore-0\&.1\&.0\&.tm\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2025
'\"
.TH "shellspy_module_punk::args::tkcore" 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::args::tkcore \- Module API
.SH SYNOPSIS
package require \fBpunk::args::tkcore\fR
.sp
.BE
.SH DESCRIPTION
.PP
-
.SH OVERVIEW
.PP
overview of punk::args::tkcore
.SS CONCEPTS
.PP
-
.SS DEPENDENCIES
.PP
packages used by punk::args::tkcore
.IP \(bu
\fBTcl 8\&.6\fR
.IP \(bu
\fBpunk::args\fR
.IP \(bu
\fBtextblock\fR
.PP
.SH API
.SS "NAMESPACE PUNK::ARGS::TKCORE"
.PP
Core API functions for punk::args::tkcore
.PP
.SS "NAMESPACE PUNK::ARGS::TKCORE::LIB"
.PP
Secondary functions that are part of the API
.PP
.SH INTERNAL
tcl::namespace::eval punk::args::tkcore::system {
*** !doctools
.SS "NAMESPACE PUNK::ARGS::TKCORE::SYSTEM"
.PP
Internal functions that are not part of the API
.SH KEYWORDS
module
.SH COPYRIGHT
.nf
Copyright (c) 2025
.fi

306
src/embedded/man/files/punk/args/_module_tzint-1.1.1.tm.n

@ -0,0 +1,306 @@
'\"
'\" Generated from file '_module_tzint-1\&.1\&.1\&.tm\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2025
'\"
.TH "shellspy_module_punk::args::tzint" 0 1\&.1\&.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::args::tzint \- Module API
.SH SYNOPSIS
package require \fBpunk::args::tzint\fR
.sp
.BE
.SH DESCRIPTION
.PP
-
.SH OVERVIEW
.PP
overview of punk::args::tzint
.SS CONCEPTS
.PP
-
.SS DEPENDENCIES
.PP
packages used by punk::args::tzint
.IP \(bu
\fBTcl 8\&.6\fR
.PP
.SH API
.SS "NAMESPACE PUNK::ARGS::TZINT"
.PP
Core API functions for punk::args::tzint
.PP
.SH KEYWORDS
module
.SH COPYRIGHT
.nf
Copyright (c) 2025
.fi

4
src/embedded/man/files/punk/mix/commandset/_module_project-0.1.0.tm.n

@ -278,7 +278,7 @@ package require \fBpunk::mix::commandset::project \fR
.sp
\fBnew\fR \fInewprojectpath_or_name\fR ?args?
.sp
\fB_default\fR \fIglob\fR ?option value\&.\&.\&.?
\fB_default\fR \fIglob\&.\&.\&.\fR
.sp
.BE
.SH DESCRIPTION
@ -342,7 +342,7 @@ commandset functions for operating with multiple projects\&.
.PP
It would usually be imported with the prefix "projects" and separator "\&." to result in commands such as: <ensemblecommand> projects\&.detail
.TP
\fB_default\fR \fIglob\fR ?option value\&.\&.\&.?
\fB_default\fR \fIglob\&.\&.\&.\fR
.sp
List projects under fossil management, showing fossil db location and number of checkouts
.sp

1
src/embedded/man/files/punk/nav/_module_fs-0.1.0.tm.n

@ -307,6 +307,7 @@ packages used by punk::nav::fs
.PP
class definitions
if { eq ""} {
*** !doctools
.PP
}
}

84
src/embedded/man/files/punk/_module_zip-0.1.0.tm.n → src/embedded/man/files/punk/netbox/_module_man-0.1.0.tm.n

@ -1,8 +1,8 @@
'\"
'\" Generated from file '_module_zip-0\&.1\&.0\&.tm\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2024
'\" Generated from file '_module_man-0\&.1\&.0\&.tm\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2025
'\"
.TH "shellspy_module_punk::zip" 0 0\&.1\&.0 doc "-"
.TH "shellspy_module_punk::netbox::man" 0 0\&.1\&.0 doc "-"
.\" The -*- nroff -*- definitions below are for supplemental macros used
.\" in Tcl/Tk manual entries.
.\"
@ -272,17 +272,9 @@ Database Class: \\fB\\$3\\fR
..
.BS
.SH NAME
shellspy_module_punk::zip \- Module API
shellspy_module_punk::netbox::man \- Module API
.SH SYNOPSIS
package require \fBpunk::zip \fR
.sp
\fBTimet_to_dos\fR \fItime_t\fR
.sp
\fBwalk\fR \fI?options?\fR \fIbase\fR
.sp
\fBMkzipfile\fR \fIzipchan\fR \fIbase\fR \fIpath\fR \fI?comment?\fR
.sp
\fBmkzip\fR \fI?options?\fR \fIfilename\fR
package require \fBpunk::netbox::man\fR
.sp
.BE
.SH DESCRIPTION
@ -290,88 +282,46 @@ package require \fBpunk::zip \fR
-
.SH OVERVIEW
.PP
overview of punk::zip
overview of punk::netbox::man
.SS CONCEPTS
.PP
-
.SS DEPENDENCIES
.PP
packages used by punk::zip
packages used by punk::netbox::man
.IP \(bu
\fBTcl 8\&.6\fR
.IP \(bu
\fBpunk::args\fR
\fBpunk::netbox\fR
.PP
.SH API
.SS "NAMESPACE PUNK::ZIP::CLASS"
.SS "NAMESPACE PUNK::NETBOX::MAN::CLASS"
.PP
class definitions
if { eq ""} {
*** !doctools
.PP
}
}
++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++
.SS "NAMESPACE PUNK::ZIP"
.SS "NAMESPACE PUNK::NETBOX::MAN"
.PP
Core API functions for punk::zip
.TP
\fBTimet_to_dos\fR \fItime_t\fR
.sp
convert a unix timestamp into a DOS timestamp for ZIP times\&.
.CS
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|
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
.CE
.TP
\fBwalk\fR \fI?options?\fR \fIbase\fR
.sp
Walk a directory tree rooted at base
.sp
the -excludes list can be a set of glob expressions to match against files and avoid
.sp
e\&.g
.CS
punk::zip::walk -exclude {CVS/* *~\&.#*} library
.CE
.TP
\fBMkzipfile\fR \fIzipchan\fR \fIbase\fR \fIpath\fR \fI?comment?\fR
.sp
Add a single file to a zip archive
.sp
The zipchan channel should already be open and binary\&.
.sp
You can provide a -comment for the file\&.
.sp
The return value is the central directory record that will need to be used when finalizing the zip archive\&.
.TP
\fBmkzip\fR \fI?options?\fR \fIfilename\fR
.sp
Create a zip archive in 'filename'
.sp
If a file already exists, an error will be raised\&.
Core API functions for punk::netbox::man
.PP
.SS "NAMESPACE PUNK::ZIP::LIB"
.SS "NAMESPACE PUNK::NETBOX::MAN::LIB"
.PP
Secondary functions that are part of the API
.PP
.SH INTERNAL
tcl::namespace::eval punk::zip::system {
.SS "NAMESPACE PUNK::ZIP::SYSTEM"
tcl::namespace::eval punk::netbox::man::system {
*** !doctools
.SS "NAMESPACE PUNK::NETBOX::MAN::SYSTEM"
.PP
Internal functions that are not part of the API
.SH KEYWORDS
module
.SH COPYRIGHT
.nf
Copyright (c) 2024
Copyright (c) 2025
.fi

202
src/embedded/man/index.n

@ -296,22 +296,25 @@ ansi
\fBfiles/_module_overtype-1\&.6\&.5\&.tm\&.n\fR
overtype_module_overtype
.TP
\fBfiles/_module_overtype-1\&.6\&.6\&.tm\&.n\fR
overtype_module_overtype
.TP
\fBfiles/punk/_module_ansi-0\&.1\&.1\&.tm\&.n\fR
punkshell_module_punk::ansi
.TP
\fBfiles/_module_textblock-0\&.1\&.2\&.tm\&.n\fR
\fBfiles/_module_textblock-0\&.1\&.3\&.tm\&.n\fR
punkshell_module_textblock
.RE
args
.RS
.TP
\fBfiles/punk/_module_args-0\&.1\&.0\&.tm\&.n\fR
\fBfiles/punk/_module_args-0\&.2\&.tm\&.n\fR
punkshell_module_punk::args
.RE
arguments
.RS
.TP
\fBfiles/punk/_module_args-0\&.1\&.0\&.tm\&.n\fR
\fBfiles/punk/_module_args-0\&.2\&.tm\&.n\fR
punkshell_module_punk::args
.RE
assert
@ -335,7 +338,7 @@ punkshell_module_punk::cap
cesu
.RS
.TP
\fBfiles/punk/_module_cesu-0\&.1\&.0\&.tm\&.n\fR
\fBfiles/punk/_module_cesu-0\&.1\&.1\&.tm\&.n\fR
punkshell_module_punk::cesu
.RE
changelog
@ -344,10 +347,16 @@ changelog
\fBfiles/project_changes\&.n\fR
punkshell__project_changes
.RE
client
.RS
.TP
\fBfiles/punk/_module_imap4-0\&.9\&.tm\&.n\fR
punkshell_module_punk::imap4
.RE
colour
.RS
.TP
\fBfiles/_module_textblock-0\&.1\&.2\&.tm\&.n\fR
\fBfiles/_module_textblock-0\&.1\&.3\&.tm\&.n\fR
punkshell_module_textblock
.RE
commandset
@ -359,13 +368,25 @@ punkshell_module_scriptwrap
compatibility
.RS
.TP
\fBfiles/punk/_module_cesu-0\&.1\&.0\&.tm\&.n\fR
\fBfiles/punk/_module_cesu-0\&.1\&.1\&.tm\&.n\fR
punkshell_module_punk::cesu
.RE
configuration
.RS
.TP
\fBfiles/_module_tomlish-1\&.1\&.1\&.tm\&.n\fR
\fBfiles/_module_tomlish-1\&.1\&.5\&.tm\&.n\fR
tomlish_module_tomlish
.TP
\fBfiles/_module_tomlish-1\&.1\&.2\&.tm\&.n\fR
tomlish_module_tomlish
.TP
\fBfiles/_module_tomlish-1\&.1\&.4\&.tm\&.n\fR
tomlish_module_tomlish
.TP
\fBfiles/_module_tomlish-1\&.1\&.6\&.tm\&.n\fR
tomlish_module_tomlish
.TP
\fBfiles/_module_tomlish-1\&.1\&.3\&.tm\&.n\fR
tomlish_module_tomlish
.RE
console
@ -383,7 +404,7 @@ punkshell_module_punk::ansi
\fBfiles/punk/_module_console-0\&.1\&.1\&.tm\&.n\fR
punkshell_module_punk::console
.TP
\fBfiles/_module_textblock-0\&.1\&.2\&.tm\&.n\fR
\fBfiles/_module_textblock-0\&.1\&.3\&.tm\&.n\fR
punkshell_module_textblock
.RE
crossplatform
@ -407,7 +428,7 @@ punkshell_module_punk::assertion
encoding
.RS
.TP
\fBfiles/punk/_module_cesu-0\&.1\&.0\&.tm\&.n\fR
\fBfiles/punk/_module_cesu-0\&.1\&.1\&.tm\&.n\fR
punkshell_module_punk::cesu
.TP
\fBfiles/punk/_module_fileline-0\&.1\&.0\&.tm\&.n\fR
@ -425,7 +446,7 @@ punkshell_module_punk::encmime
experimental
.RS
.TP
\fBfiles/punk/_module_cesu-0\&.1\&.0\&.tm\&.n\fR
\fBfiles/punk/_module_cesu-0\&.1\&.1\&.tm\&.n\fR
punkshell_module_punk::cesu
.TP
\fBfiles/punk/_module_flib-0\&.1\&.0\&.tm\&.n\fR
@ -473,7 +494,7 @@ punkshell_module_punk::path
frame
.RS
.TP
\fBfiles/_module_textblock-0\&.1\&.2\&.tm\&.n\fR
\fBfiles/_module_textblock-0\&.1\&.3\&.tm\&.n\fR
punkshell_module_textblock
.RE
http
@ -482,6 +503,18 @@ http
\fBfiles/punk/_module_rest-0\&.1\&.0\&.tm\&.n\fR
punkshell_module_punk::rest
.RE
imap
.RS
.TP
\fBfiles/punk/_module_imap4-0\&.9\&.tm\&.n\fR
punkshell_module_punk::imap4
.RE
imap4
.RS
.TP
\fBfiles/punk/_module_imap4-0\&.9\&.tm\&.n\fR
punkshell_module_punk::imap4
.RE
interp
.RS
.TP
@ -497,17 +530,17 @@ punkshell_module_scriptwrap
layout
.RS
.TP
\fBfiles/_module_textblock-0\&.1\&.2\&.tm\&.n\fR
\fBfiles/_module_textblock-0\&.1\&.3\&.tm\&.n\fR
punkshell_module_textblock
.RE
lib
.RS
.TP
\fBfiles/punk/_module_lib-0\&.1\&.1\&.tm\&.n\fR
\fBfiles/punk/_module_lib-0\&.1\&.2\&.tm\&.n\fR
punkshell_module_punk::lib
.TP
\fBfiles/_module_textblock-0\&.1\&.1\&.tm\&.n\fR
punkshell_module_textblock
\fBfiles/punk/_module_lib-0\&.1\&.1\&.tm\&.n\fR
punkshell_module_punk::lib
.RE
lnk
.RS
@ -515,15 +548,33 @@ lnk
\fBfiles/punk/_module_winlnk-0\&.1\&.0\&.tm\&.n\fR
punkshell_module_punk::winlnk
.RE
mail
.RS
.TP
\fBfiles/punk/_module_imap4-0\&.9\&.tm\&.n\fR
punkshell_module_punk::imap4
.RE
mailclient
.RS
.TP
\fBfiles/punk/_module_imap4-0\&.9\&.tm\&.n\fR
punkshell_module_punk::imap4
.RE
module
.RS
.TP
\fBfiles/_module_modpod-0\&.1\&.3\&.tm\&.n\fR
modpod_module_modpod
.TP
\fBfiles/_module_modpod-0\&.1\&.2\&.tm\&.n\fR
modpod_module_modpod
.TP
\fBfiles/_module_overtype-1\&.6\&.5\&.tm\&.n\fR
overtype_module_overtype
.TP
\fBfiles/_module_overtype-1\&.6\&.6\&.tm\&.n\fR
overtype_module_overtype
.TP
\fBfiles/punk/_module_basictelnet-0\&.1\&.0\&.tm\&.n\fR
punkshell::basictelnet
.TP
@ -539,7 +590,7 @@ punkshell_module_punk::aliascore
\fBfiles/punk/_module_ansi-0\&.1\&.1\&.tm\&.n\fR
punkshell_module_punk::ansi
.TP
\fBfiles/punk/_module_args-0\&.1\&.0\&.tm\&.n\fR
\fBfiles/punk/_module_args-0\&.2\&.tm\&.n\fR
punkshell_module_punk::args
.TP
\fBfiles/punk/args/_module_tclcore-0\&.1\&.0\&.tm\&.n\fR
@ -554,7 +605,7 @@ punkshell_module_punk::blockletter
\fBfiles/punk/_module_cap-0\&.1\&.0\&.tm\&.n\fR
punkshell_module_punk::cap
.TP
\fBfiles/punk/_module_cesu-0\&.1\&.0\&.tm\&.n\fR
\fBfiles/punk/_module_cesu-0\&.1\&.1\&.tm\&.n\fR
punkshell_module_punk::cesu
.TP
\fBfiles/punk/_module_char-0\&.1\&.0\&.tm\&.n\fR
@ -575,9 +626,15 @@ punkshell_module_punk::fileline
\fBfiles/punk/_module_flib-0\&.1\&.0\&.tm\&.n\fR
punkshell_module_punk::flib
.TP
\fBfiles/punk/_module_imap4-0\&.9\&.tm\&.n\fR
punkshell_module_punk::imap4
.TP
\fBfiles/punk/_module_island-0\&.1\&.0\&.tm\&.n\fR
punkshell_module_punk::island
.TP
\fBfiles/punk/_module_lib-0\&.1\&.2\&.tm\&.n\fR
punkshell_module_punk::lib
.TP
\fBfiles/punk/_module_lib-0\&.1\&.1\&.tm\&.n\fR
punkshell_module_punk::lib
.TP
@ -590,10 +647,10 @@ punkshell_module_punk::packagepreference
\fBfiles/punk/_module_path-0\&.1\&.0\&.tm\&.n\fR
punkshell_module_punk::path
.TP
\fBfiles/punk/repl/_module_codethread-0\&.1\&.1\&.tm\&.n\fR
\fBfiles/punk/repl/_module_codethread-0\&.1\&.0\&.tm\&.n\fR
punkshell_module_punk::repl::codethread
.TP
\fBfiles/punk/repl/_module_codethread-0\&.1\&.0\&.tm\&.n\fR
\fBfiles/punk/repl/_module_codethread-0\&.1\&.1\&.tm\&.n\fR
punkshell_module_punk::repl::codethread
.TP
\fBfiles/punk/_module_rest-0\&.1\&.0\&.tm\&.n\fR
@ -623,19 +680,61 @@ punkshell_module_punk::zip
\fBfiles/punk/mix/commandset/_module_scriptwrap-0\&.1\&.0\&.tm\&.n\fR
punkshell_module_scriptwrap
.TP
\fBfiles/_module_textblock-0\&.1\&.1\&.tm\&.n\fR
\fBfiles/_module_textblock-0\&.1\&.3\&.tm\&.n\fR
punkshell_module_textblock
.TP
\fBfiles/_module_textblock-0\&.1\&.2\&.tm\&.n\fR
punkshell_module_textblock
\fBfiles/punk/ansi/_module_colourmap-0\&.1\&.0\&.tm\&.n\fR
shellspy_module_::punk::ansi::colourmap
.TP
\fBfiles/_module_picalc-0\&.1\&.0\&.tm\&.n\fR
shellspy_module_picalc
.TP
\fBfiles/_module_pipe-1\&.0\&.tm\&.n\fR
shellspy_module_pipe
.TP
\fBfiles/punk/_module_zip-0\&.1\&.0\&.tm\&.n\fR
shellspy_module_punk::zip
\fBfiles/punk/args/_module_tkcore-0\&.1\&.0\&.tm\&.n\fR
shellspy_module_punk::args::tkcore
.TP
\fBfiles/punk/args/_module_tzint-1\&.1\&.1\&.tm\&.n\fR
shellspy_module_punk::args::tzint
.TP
\fBfiles/punk/_module_icomm-0\&.1\&.0\&.tm\&.n\fR
shellspy_module_punk::icomm
.TP
\fBfiles/punk/_module_libunknown-0\&.1\&.tm\&.n\fR
shellspy_module_punk::libunknown
.TP
\fBfiles/punk/_module_netbox-0\&.1\&.0\&.tm\&.n\fR
shellspy_module_punk::netbox
.TP
\fBfiles/punk/netbox/_module_man-0\&.1\&.0\&.tm\&.n\fR
shellspy_module_punk::netbox::man
.TP
\fBfiles/punk/_module_pcon-1\&.0\&.tm\&.n\fR
shellspy_module_punk::pcon
.TP
\fBfiles/punk/_module_pipe-1\&.0\&.tm\&.n\fR
shellspy_module_punk::pipe
.TP
\fBfiles/punk/_module_winshell-0\&.1\&.0\&.tm\&.n\fR
shellspy_module_punk::winshell
.TP
\fBfiles/_module_termscheme-0\&.1\&.0\&.tm\&.n\fR
shellspy_module_termscheme
.TP
\fBfiles/_module_tomlish-1\&.1\&.1\&.tm\&.n\fR
\fBfiles/_module_tomlish-1\&.1\&.5\&.tm\&.n\fR
tomlish_module_tomlish
.TP
\fBfiles/_module_tomlish-1\&.1\&.2\&.tm\&.n\fR
tomlish_module_tomlish
.TP
\fBfiles/_module_tomlish-1\&.1\&.4\&.tm\&.n\fR
tomlish_module_tomlish
.TP
\fBfiles/_module_tomlish-1\&.1\&.6\&.tm\&.n\fR
tomlish_module_tomlish
.TP
\fBfiles/_module_tomlish-1\&.1\&.3\&.tm\&.n\fR
tomlish_module_tomlish
.RE
package
@ -647,7 +746,7 @@ punkshell_module_punk::packagepreference
parse
.RS
.TP
\fBfiles/punk/_module_args-0\&.1\&.0\&.tm\&.n\fR
\fBfiles/punk/_module_args-0\&.2\&.tm\&.n\fR
punkshell_module_punk::args
.TP
\fBfiles/punk/_module_fileline-0\&.1\&.0\&.tm\&.n\fR
@ -659,7 +758,19 @@ punkshell_module_punk::winlnk
parsing
.RS
.TP
\fBfiles/_module_tomlish-1\&.1\&.1\&.tm\&.n\fR
\fBfiles/_module_tomlish-1\&.1\&.5\&.tm\&.n\fR
tomlish_module_tomlish
.TP
\fBfiles/_module_tomlish-1\&.1\&.2\&.tm\&.n\fR
tomlish_module_tomlish
.TP
\fBfiles/_module_tomlish-1\&.1\&.4\&.tm\&.n\fR
tomlish_module_tomlish
.TP
\fBfiles/_module_tomlish-1\&.1\&.6\&.tm\&.n\fR
tomlish_module_tomlish
.TP
\fBfiles/_module_tomlish-1\&.1\&.3\&.tm\&.n\fR
tomlish_module_tomlish
.RE
path
@ -677,7 +788,7 @@ punkshell_module_punk::cap
proc
.RS
.TP
\fBfiles/punk/_module_args-0\&.1\&.0\&.tm\&.n\fR
\fBfiles/punk/_module_args-0\&.2\&.tm\&.n\fR
punkshell_module_punk::args
.RE
prompt
@ -722,10 +833,10 @@ punkshell__project_changes
\fBfiles/project_intro\&.n\fR
punkshell__project_intro
.TP
\fBfiles/punk/repl/_module_codethread-0\&.1\&.1\&.tm\&.n\fR
\fBfiles/punk/repl/_module_codethread-0\&.1\&.0\&.tm\&.n\fR
punkshell_module_punk::repl::codethread
.TP
\fBfiles/punk/repl/_module_codethread-0\&.1\&.0\&.tm\&.n\fR
\fBfiles/punk/repl/_module_codethread-0\&.1\&.1\&.tm\&.n\fR
punkshell_module_punk::repl::codethread
.RE
rest
@ -782,7 +893,7 @@ fauxlink_module_fauxlink
table
.RS
.TP
\fBfiles/_module_textblock-0\&.1\&.2\&.tm\&.n\fR
\fBfiles/_module_textblock-0\&.1\&.3\&.tm\&.n\fR
punkshell_module_textblock
.RE
telnet
@ -809,7 +920,7 @@ punkshell_module_punk::console
\fBfiles/punk/nav/_module_fs-0\&.1\&.0\&.tm\&.n\fR
punkshell_module_punk::nav::fs
.TP
\fBfiles/_module_textblock-0\&.1\&.2\&.tm\&.n\fR
\fBfiles/_module_textblock-0\&.1\&.3\&.tm\&.n\fR
punkshell_module_textblock
.RE
text
@ -818,10 +929,13 @@ text
\fBfiles/_module_overtype-1\&.6\&.5\&.tm\&.n\fR
overtype_module_overtype
.TP
\fBfiles/_module_overtype-1\&.6\&.6\&.tm\&.n\fR
overtype_module_overtype
.TP
\fBfiles/punk/_module_fileline-0\&.1\&.0\&.tm\&.n\fR
punkshell_module_punk::fileline
.TP
\fBfiles/_module_textblock-0\&.1\&.2\&.tm\&.n\fR
\fBfiles/_module_textblock-0\&.1\&.3\&.tm\&.n\fR
punkshell_module_textblock
.RE
theme
@ -836,7 +950,19 @@ toml
\fBfiles/_module_fauxlink-0\&.1\&.1\&.tm\&.n\fR
fauxlink_module_fauxlink
.TP
\fBfiles/_module_tomlish-1\&.1\&.1\&.tm\&.n\fR
\fBfiles/_module_tomlish-1\&.1\&.5\&.tm\&.n\fR
tomlish_module_tomlish
.TP
\fBfiles/_module_tomlish-1\&.1\&.2\&.tm\&.n\fR
tomlish_module_tomlish
.TP
\fBfiles/_module_tomlish-1\&.1\&.4\&.tm\&.n\fR
tomlish_module_tomlish
.TP
\fBfiles/_module_tomlish-1\&.1\&.6\&.tm\&.n\fR
tomlish_module_tomlish
.TP
\fBfiles/_module_tomlish-1\&.1\&.3\&.tm\&.n\fR
tomlish_module_tomlish
.RE
trie
@ -854,7 +980,7 @@ punkshell_module_punk::uc
unofficial
.RS
.TP
\fBfiles/punk/_module_cesu-0\&.1\&.0\&.tm\&.n\fR
\fBfiles/punk/_module_cesu-0\&.1\&.1\&.tm\&.n\fR
punkshell_module_punk::cesu
.TP
\fBfiles/punk/_module_uc-0\&.1\&.0\&.tm\&.n\fR
@ -863,11 +989,11 @@ punkshell_module_punk::uc
utility
.RS
.TP
\fBfiles/punk/_module_lib-0\&.1\&.1\&.tm\&.n\fR
\fBfiles/punk/_module_lib-0\&.1\&.2\&.tm\&.n\fR
punkshell_module_punk::lib
.TP
\fBfiles/_module_textblock-0\&.1\&.1\&.tm\&.n\fR
punkshell_module_textblock
\fBfiles/punk/_module_lib-0\&.1\&.1\&.tm\&.n\fR
punkshell_module_punk::lib
.RE
wcswidth
.RS

74
src/embedded/man/toc.n

@ -277,11 +277,17 @@ doc
\fIfiles/_module_fauxlink-0\&.1\&.1\&.tm\&.n\fR: faux link application shortcuts
.TP
\fBmodpod_module_modpod\fR
\fIfiles/_module_modpod-0\&.1\&.3\&.tm\&.n\fR: Module API
.TP
\fBmodpod_module_modpod\fR
\fIfiles/_module_modpod-0\&.1\&.2\&.tm\&.n\fR: Module API
.TP
\fBovertype_module_overtype\fR
\fIfiles/_module_overtype-1\&.6\&.5\&.tm\&.n\fR: overtype text layout - ansi aware
.TP
\fBovertype_module_overtype\fR
\fIfiles/_module_overtype-1\&.6\&.6\&.tm\&.n\fR: overtype text layout - ansi aware
.TP
\fBpunkshell\fR
\fIfiles/main\&.n\fR: punkshell - Core
.TP
@ -307,7 +313,7 @@ doc
\fIfiles/punk/_module_ansi-0\&.1\&.1\&.tm\&.n\fR: Ansi string functions
.TP
\fBpunkshell_module_punk::args\fR
\fIfiles/punk/_module_args-0\&.1\&.0\&.tm\&.n\fR: args parsing
\fIfiles/punk/_module_args-0\&.2\&.tm\&.n\fR: args parsing
.TP
\fBpunkshell_module_punk::args::tclcore\fR
\fIfiles/punk/args/_module_tclcore-0\&.1\&.0\&.tm\&.n\fR: punk::args definitions for tcl core commands
@ -322,7 +328,7 @@ doc
\fIfiles/punk/_module_cap-0\&.1\&.0\&.tm\&.n\fR: capability provider and handler plugin system
.TP
\fBpunkshell_module_punk::cesu\fR
\fIfiles/punk/_module_cesu-0\&.1\&.0\&.tm\&.n\fR: CESU compatibility ehcoding scheme for utf-16: 8-Bit (CESU-8) ??
\fIfiles/punk/_module_cesu-0\&.1\&.1\&.tm\&.n\fR: CESU compatibility ehcoding scheme for utf-16: 8-Bit (CESU-8) ??
.TP
\fBpunkshell_module_punk::char\fR
\fIfiles/punk/_module_char-0\&.1\&.0\&.tm\&.n\fR: character-set and unicode utilities
@ -342,10 +348,16 @@ doc
\fBpunkshell_module_punk::flib\fR
\fIfiles/punk/_module_flib-0\&.1\&.0\&.tm\&.n\fR: flib experimental
.TP
\fBpunkshell_module_punk::imap4\fR
\fIfiles/punk/_module_imap4-0\&.9\&.tm\&.n\fR: IMAP4 client
.TP
\fBpunkshell_module_punk::island\fR
\fIfiles/punk/_module_island-0\&.1\&.0\&.tm\&.n\fR: filesystem islands for safe interps
.TP
\fBpunkshell_module_punk::lib\fR
\fIfiles/punk/_module_lib-0\&.1\&.2\&.tm\&.n\fR: punk general utility functions
.TP
\fBpunkshell_module_punk::lib\fR
\fIfiles/punk/_module_lib-0\&.1\&.1\&.tm\&.n\fR: punk general utility functions
.TP
\fBpunkshell_module_punk::mix::commandset::project\fR
@ -361,10 +373,10 @@ doc
\fIfiles/punk/_module_path-0\&.1\&.0\&.tm\&.n\fR: Filesystem path utilities
.TP
\fBpunkshell_module_punk::repl::codethread\fR
\fIfiles/punk/repl/_module_codethread-0\&.1\&.1\&.tm\&.n\fR: Module repl codethread
\fIfiles/punk/repl/_module_codethread-0\&.1\&.0\&.tm\&.n\fR: Module repl codethread
.TP
\fBpunkshell_module_punk::repl::codethread\fR
\fIfiles/punk/repl/_module_codethread-0\&.1\&.0\&.tm\&.n\fR: Module repl codethread
\fIfiles/punk/repl/_module_codethread-0\&.1\&.1\&.tm\&.n\fR: Module repl codethread
.TP
\fBpunkshell_module_punk::rest\fR
\fIfiles/punk/_module_rest-0\&.1\&.0\&.tm\&.n\fR: punk::rest
@ -394,16 +406,58 @@ doc
\fIfiles/punk/mix/commandset/_module_scriptwrap-0\&.1\&.0\&.tm\&.n\fR: scriptwrap polyglot tool
.TP
\fBpunkshell_module_textblock\fR
\fIfiles/_module_textblock-0\&.1\&.1\&.tm\&.n\fR: punk textblock functions
\fIfiles/_module_textblock-0\&.1\&.3\&.tm\&.n\fR: punk textblock functions
.TP
\fBpunkshell_module_textblock\fR
\fIfiles/_module_textblock-0\&.1\&.2\&.tm\&.n\fR: punk textblock functions
\fBshellspy_module_::punk::ansi::colourmap\fR
\fIfiles/punk/ansi/_module_colourmap-0\&.1\&.0\&.tm\&.n\fR: Module API
.TP
\fBshellspy_module_picalc\fR
\fIfiles/_module_picalc-0\&.1\&.0\&.tm\&.n\fR: Module API
.TP
\fBshellspy_module_pipe\fR
\fIfiles/_module_pipe-1\&.0\&.tm\&.n\fR: Module API
.TP
\fBshellspy_module_punk::args::tkcore\fR
\fIfiles/punk/args/_module_tkcore-0\&.1\&.0\&.tm\&.n\fR: Module API
.TP
\fBshellspy_module_punk::zip\fR
\fIfiles/punk/_module_zip-0\&.1\&.0\&.tm\&.n\fR: Module API
\fBshellspy_module_punk::args::tzint\fR
\fIfiles/punk/args/_module_tzint-1\&.1\&.1\&.tm\&.n\fR: Module API
.TP
\fBshellspy_module_punk::icomm\fR
\fIfiles/punk/_module_icomm-0\&.1\&.0\&.tm\&.n\fR: Module API
.TP
\fBshellspy_module_punk::libunknown\fR
\fIfiles/punk/_module_libunknown-0\&.1\&.tm\&.n\fR: Module API
.TP
\fBshellspy_module_punk::netbox\fR
\fIfiles/punk/_module_netbox-0\&.1\&.0\&.tm\&.n\fR: Module API
.TP
\fBshellspy_module_punk::netbox::man\fR
\fIfiles/punk/netbox/_module_man-0\&.1\&.0\&.tm\&.n\fR: Module API
.TP
\fBshellspy_module_punk::pcon\fR
\fIfiles/punk/_module_pcon-1\&.0\&.tm\&.n\fR: Module API
.TP
\fBshellspy_module_punk::pipe\fR
\fIfiles/punk/_module_pipe-1\&.0\&.tm\&.n\fR: Module API
.TP
\fBshellspy_module_punk::winshell\fR
\fIfiles/punk/_module_winshell-0\&.1\&.0\&.tm\&.n\fR: Module API
.TP
\fBshellspy_module_termscheme\fR
\fIfiles/_module_termscheme-0\&.1\&.0\&.tm\&.n\fR: Module API
.TP
\fBtomlish_module_tomlish\fR
\fIfiles/_module_tomlish-1\&.1\&.1\&.tm\&.n\fR: tomlish toml parser
\fIfiles/_module_tomlish-1\&.1\&.5\&.tm\&.n\fR: tomlish toml parser
.TP
\fBtomlish_module_tomlish\fR
\fIfiles/_module_tomlish-1\&.1\&.2\&.tm\&.n\fR: tomlish toml parser
.TP
\fBtomlish_module_tomlish\fR
\fIfiles/_module_tomlish-1\&.1\&.4\&.tm\&.n\fR: tomlish toml parser
.TP
\fBtomlish_module_tomlish\fR
\fIfiles/_module_tomlish-1\&.1\&.6\&.tm\&.n\fR: tomlish toml parser
.TP
\fBtomlish_module_tomlish\fR
\fIfiles/_module_tomlish-1\&.1\&.3\&.tm\&.n\fR: tomlish toml parser

30
src/embedded/md/.doc/tocdoc

@ -1,6 +1,8 @@
[toc_begin {Table Of Contents} doc]
[item doc/files/_module_fauxlink-0.1.1.tm.md fauxlink_module_fauxlink {faux link application shortcuts}]
[item doc/files/_module_modpod-0.1.3.tm.md modpod_module_modpod {Module API}]
[item doc/files/_module_modpod-0.1.2.tm.md modpod_module_modpod {Module API}]
[item doc/files/_module_overtype-1.6.6.tm.md overtype_module_overtype {overtype text layout - ansi aware}]
[item doc/files/_module_overtype-1.6.5.tm.md overtype_module_overtype {overtype text layout - ansi aware}]
[item doc/files/main.md punkshell {punkshell - Core}]
[item doc/files/punk/_module_basictelnet-0.1.0.tm.md punkshell::basictelnet {basic telnet client - DKF/Wiki}]
@ -10,19 +12,21 @@
[item doc/files/_module_poshinfo-0.1.0.tm.md punkshell_module_poshinfo {poshinfo prompt theme tool}]
[item doc/files/punk/_module_aliascore-0.1.0.tm.md punkshell_module_punk::aliascore {punkshell command aliases}]
[item doc/files/punk/_module_ansi-0.1.1.tm.md punkshell_module_punk::ansi {Ansi string functions}]
[item doc/files/punk/_module_args-0.1.0.tm.md punkshell_module_punk::args {args parsing}]
[item doc/files/punk/_module_args-0.2.tm.md punkshell_module_punk::args {args parsing}]
[item doc/files/punk/args/_module_tclcore-0.1.0.tm.md punkshell_module_punk::args::tclcore {punk::args definitions for tcl core commands}]
[item doc/files/punk/_module_assertion-0.1.0.tm.md punkshell_module_punk::assertion {assertion alternative to control::assert}]
[item doc/files/punk/_module_blockletter-0.1.0.tm.md punkshell_module_punk::blockletter {punk::blockletter frame-based large lettering test/logo}]
[item doc/files/punk/_module_cap-0.1.0.tm.md punkshell_module_punk::cap {capability provider and handler plugin system}]
[item doc/files/punk/_module_cesu-0.1.0.tm.md punkshell_module_punk::cesu {CESU compatibility ehcoding scheme for utf-16: 8-Bit (CESU-8) ??}]
[item doc/files/punk/_module_cesu-0.1.1.tm.md punkshell_module_punk::cesu {CESU compatibility ehcoding scheme for utf-16: 8-Bit (CESU-8) ??}]
[item doc/files/punk/_module_char-0.1.0.tm.md punkshell_module_punk::char {character-set and unicode utilities}]
[item doc/files/punk/_module_console-0.1.1.tm.md punkshell_module_punk::console {punk console}]
[item doc/files/punk/_module_encmime-0.1.0.tm.md punkshell_module_punk::encmime {mime encodings related subset of tcllib mime}]
[item doc/files/punk/_module_experiment-0.1.0.tm.md punkshell_module_punk::experiment {Module API}]
[item doc/files/punk/_module_fileline-0.1.0.tm.md punkshell_module_punk::fileline {file line-handling utilities}]
[item doc/files/punk/_module_flib-0.1.0.tm.md punkshell_module_punk::flib {flib experimental}]
[item doc/files/punk/_module_imap4-0.9.tm.md punkshell_module_punk::imap4 {IMAP4 client}]
[item doc/files/punk/_module_island-0.1.0.tm.md punkshell_module_punk::island {filesystem islands for safe interps}]
[item doc/files/punk/_module_lib-0.1.2.tm.md punkshell_module_punk::lib {punk general utility functions}]
[item doc/files/punk/_module_lib-0.1.1.tm.md punkshell_module_punk::lib {punk general utility functions}]
[item doc/files/punk/mix/commandset/_module_project-0.1.0.tm.md punkshell_module_punk::mix::commandset::project {dec commandset - project}]
[item doc/files/punk/nav/_module_fs-0.1.0.tm.md punkshell_module_punk::nav::fs {punk::nav::fs console filesystem navigation}]
@ -39,9 +43,23 @@
[item doc/files/punk/_module_winlnk-0.1.0.tm.md punkshell_module_punk::winlnk {windows shortcut .lnk library}]
[item doc/files/punk/_module_zip-0.1.1.tm.md punkshell_module_punk::zip {Module API}]
[item doc/files/punk/mix/commandset/_module_scriptwrap-0.1.0.tm.md punkshell_module_scriptwrap {scriptwrap polyglot tool}]
[item doc/files/_module_textblock-0.1.1.tm.md punkshell_module_textblock {punk textblock functions}]
[item doc/files/_module_textblock-0.1.2.tm.md punkshell_module_textblock {punk textblock functions}]
[item doc/files/punk/_module_zip-0.1.0.tm.md shellspy_module_punk::zip {Module API}]
[item doc/files/_module_textblock-0.1.3.tm.md punkshell_module_textblock {punk textblock functions}]
[item doc/files/punk/ansi/_module_colourmap-0.1.0.tm.md shellspy_module_::punk::ansi::colourmap {Module API}]
[item doc/files/_module_picalc-0.1.0.tm.md shellspy_module_picalc {Module API}]
[item doc/files/_module_pipe-1.0.tm.md shellspy_module_pipe {Module API}]
[item doc/files/punk/args/_module_tkcore-0.1.0.tm.md shellspy_module_punk::args::tkcore {Module API}]
[item doc/files/punk/args/_module_tzint-1.1.1.tm.md shellspy_module_punk::args::tzint {Module API}]
[item doc/files/punk/_module_icomm-0.1.0.tm.md shellspy_module_punk::icomm {Module API}]
[item doc/files/punk/_module_libunknown-0.1.tm.md shellspy_module_punk::libunknown {Module API}]
[item doc/files/punk/_module_netbox-0.1.0.tm.md shellspy_module_punk::netbox {Module API}]
[item doc/files/punk/netbox/_module_man-0.1.0.tm.md shellspy_module_punk::netbox::man {Module API}]
[item doc/files/punk/_module_pcon-1.0.tm.md shellspy_module_punk::pcon {Module API}]
[item doc/files/punk/_module_pipe-1.0.tm.md shellspy_module_punk::pipe {Module API}]
[item doc/files/punk/_module_winshell-0.1.0.tm.md shellspy_module_punk::winshell {Module API}]
[item doc/files/_module_termscheme-0.1.0.tm.md shellspy_module_termscheme {Module API}]
[item doc/files/_module_tomlish-1.1.1.tm.md tomlish_module_tomlish {tomlish toml parser}]
[item doc/files/_module_tomlish-1.1.3.tm.md tomlish_module_tomlish {tomlish toml parser}]
[item doc/files/_module_tomlish-1.1.2.tm.md tomlish_module_tomlish {tomlish toml parser}]
[item doc/files/_module_tomlish-1.1.6.tm.md tomlish_module_tomlish {tomlish toml parser}]
[item doc/files/_module_tomlish-1.1.5.tm.md tomlish_module_tomlish {tomlish toml parser}]
[item doc/files/_module_tomlish-1.1.4.tm.md tomlish_module_tomlish {tomlish toml parser}]
[toc_end]

2
src/embedded/md/.idx

File diff suppressed because one or more lines are too long

2
src/embedded/md/.toc

File diff suppressed because one or more lines are too long

2
src/embedded/md/.xrf

File diff suppressed because one or more lines are too long

14
src/embedded/md/doc/files/_module_fauxlink-0.1.1.tm.md

@ -1,8 +1,8 @@
[//000000001]: # (fauxlink\_module\_fauxlink \- fauxlink \.fxlnk)
[//000000001]: # (fauxlink\_module\_fauxlink \- \.fauxlink \.fxlnk)
[//000000002]: # (Generated from file '\_module\_fauxlink\-0\.1\.1\.tm\.man' by tcllib/doctools with format 'markdown')
[//000000003]: # (Copyright &copy; 2024)
[//000000004]: # (fauxlink\_module\_fauxlink\(0\) 0\.1\.1 doc "fauxlink \.fxlnk")
[//000000004]: # (fauxlink\_module\_fauxlink\(0\) 0\.1\.1 doc "\.fauxlink \.fxlnk")
<hr> [ <a href="../../toc.md">Main Table Of Contents</a> &#124; <a
href="../toc.md">Table Of Contents</a> &#124; <a
@ -60,11 +60,13 @@ archiving and packaging systems\.
The target is specified in a minimally\-encoded form in the filename itself \- but
still human readable\.
format of name <nominalname>\#<encodedtarget>\.fxlnk
format of name <nominalname>\#<encodedtarget>\.fauxlink
where <nominalname> can be empty \- then the effective nominal name is the tail
of the <encodedtarget>
The file extension must be \.fauxlink or \.fxlnk
The \+ symbol substitutes for forward\-slashes\.
Other chars can be encoded using url\-like encoding \- \(but only up to %7E \!\)
@ -79,13 +81,13 @@ encoded as %2B & %23
e\.g a link to a file file\#A\.txt in parent dir could be:
file%23A\.txt\#\.\.\+file%23A\.txt\.fxlnk
file%23A\.txt\#\.\.\+file%23A\.txt\.fauxlink
or equivalently \(but obviously affecting sorting\) \#\.\.\+file%23A\.txt\.fxlnk
or equivalently \(but obviously affecting sorting\) \#\.\.\+file%23A\.txt\.fauxlink
The <nominalname> can be unrelated to the actual target
e\.g datafile\.dat\#\.\.\+file%23A\.txt\.fxlnk
e\.g datafile\.dat\#\.\.\+file%23A\.txt\.fauxlink
This system has no filesystem support \- and must be completely application
driven\.

87
src/embedded/md/doc/files/_module_modpod-0.1.3.tm.md

@ -0,0 +1,87 @@
[//000000001]: # (modpod\_module\_modpod \- \-)
[//000000002]: # (Generated from file '\_module\_modpod\-0\.1\.3\.tm\.man' by tcllib/doctools with format 'markdown')
[//000000003]: # (Copyright &copy; 2024)
[//000000004]: # (modpod\_module\_modpod\(0\) 0\.1\.3 doc "\-")
<hr> [ <a href="../../toc.md">Main Table Of Contents</a> &#124; <a
href="../toc.md">Table Of Contents</a> &#124; <a
href="../../index.md">Keyword Index</a> ] <hr>
# NAME
modpod\_module\_modpod \- Module API
# <a name='toc'></a>Table Of Contents
- [Table Of Contents](#toc)
- [Synopsis](#synopsis)
- [Description](#section1)
- [Overview](#section2)
- [Concepts](#subsection1)
- [dependencies](#subsection2)
- [API](#section3)
- [Namespace modpod::class](#subsection3)
- [Namespace modpod](#subsection4)
- [Namespace modpod::lib](#subsection5)
- [Internal](#section4)
- [Namespace modpod::system](#subsection6)
- [Keywords](#keywords)
- [Copyright](#copyright)
# <a name='synopsis'></a>SYNOPSIS
package require modpod
# <a name='description'></a>DESCRIPTION
\-
# <a name='section2'></a>Overview
overview of modpod
## <a name='subsection1'></a>Concepts
\-
## <a name='subsection2'></a>dependencies
packages used by modpod
- __Tcl 8\.6\-__
# <a name='section3'></a>API
## <a name='subsection3'></a>Namespace modpod::class
class definitions
## <a name='subsection4'></a>Namespace modpod
## <a name='subsection5'></a>Namespace modpod::lib
# <a name='section4'></a>Internal
## <a name='subsection6'></a>Namespace modpod::system
# <a name='keywords'></a>KEYWORDS
[module](\.\./\.\./index\.md\#module)
# <a name='copyright'></a>COPYRIGHT
Copyright &copy; 2024

139
src/embedded/md/doc/files/_module_overtype-1.6.6.tm.md

@ -0,0 +1,139 @@
[//000000001]: # (overtype\_module\_overtype \- overtype text layout)
[//000000002]: # (Generated from file '\_module\_overtype\-1\.6\.6\.tm\.man' by tcllib/doctools with format 'markdown')
[//000000003]: # (Copyright &copy; 2024)
[//000000004]: # (overtype\_module\_overtype\(0\) 1\.6\.6 doc "overtype text layout")
<hr> [ <a href="../../toc.md">Main Table Of Contents</a> &#124; <a
href="../toc.md">Table Of Contents</a> &#124; <a
href="../../index.md">Keyword Index</a> ] <hr>
# NAME
overtype\_module\_overtype \- overtype text layout \- ansi aware
# <a name='toc'></a>Table Of Contents
- [Table Of Contents](#toc)
- [Synopsis](#synopsis)
- [Description](#section1)
- [Overview](#section2)
- [Concepts](#subsection1)
- [dependencies](#subsection2)
- [API](#section3)
- [Namespace overtype](#subsection3)
- [Keywords](#keywords)
- [Copyright](#copyright)
# <a name='synopsis'></a>SYNOPSIS
package require overtype
[__overtype::renderspace__ *args*](#1)
[__overtype::renderline__ *args*](#2)
# <a name='description'></a>DESCRIPTION
\-
# <a name='section2'></a>Overview
overview of overtype
## <a name='subsection1'></a>Concepts
\-
## <a name='subsection2'></a>dependencies
packages used by overtype
- __Tcl 8\.6__
- __textutil__
- __punk::ansi__
\- required to detect, split, strip and calculate lengths of text possibly
containing ansi codes
- __punk::char__
\- box drawing \- and also unicode character width determination for proper
layout of text with double\-column\-width chars
# <a name='section3'></a>API
## <a name='subsection3'></a>Namespace overtype
Core API functions for overtype
- <a name='1'></a>__overtype::renderspace__ *args*
usage: ?\-transparent \[0&#124;1\]? ?\-expand\_right \[1&#124;0\]? ?\-ellipsis \[1&#124;0\]?
?\-ellipsistext \.\.\.? undertext overtext
- <a name='2'></a>__overtype::renderline__ *args*
renderline is the core engine for overtype string processing \(frames &
textblocks\), and the raw mode commandline repl for the Tcl Punk Shell
It is also a central part of an ansi \(micro\) virtual terminal\-emulator of
sorts
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
Renderline helps maintain ANSI text styling reset/replay codes so that the
styling of one block doesn't affect another\.
Calling on the punk::ansi library \- it can coalesce codes to keep the size
down\.
It is a giant mess of doing exactly what common wisdom says not to do\.\.\.
lots at once\.
renderline is part of the Unicode and ANSI aware Overtype system which
'renders' a block of text onto a static underlay
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\.
The overlay couuld be similar \- in which case it may often be used to
overwrite a column or section of the underlay\.
The overlay could however be a sequence of ANSI\-laden text that jumps all
over the place\.
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\.
By suppyling the \-info 1 option \- it can return various fields indicating
the state of the render\.
The main 3 are the result, overflow\_right, and unapplied\.
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\.
# <a name='keywords'></a>KEYWORDS
[ansi](\.\./\.\./index\.md\#ansi), [module](\.\./\.\./index\.md\#module),
[text](\.\./\.\./index\.md\#text)
# <a name='copyright'></a>COPYRIGHT
Copyright &copy; 2024

79
src/embedded/md/doc/files/_module_picalc-0.1.0.tm.md

@ -0,0 +1,79 @@
[//000000001]: # (shellspy\_module\_picalc \- \-)
[//000000002]: # (Generated from file '\_module\_picalc\-0\.1\.0\.tm\.man' by tcllib/doctools with format 'markdown')
[//000000003]: # (Copyright &copy; 2025)
[//000000004]: # (shellspy\_module\_picalc\(0\) 0\.1\.0 doc "\-")
<hr> [ <a href="../../toc.md">Main Table Of Contents</a> &#124; <a
href="../toc.md">Table Of Contents</a> &#124; <a
href="../../index.md">Keyword Index</a> ] <hr>
# NAME
shellspy\_module\_picalc \- Module API
# <a name='toc'></a>Table Of Contents
- [Table Of Contents](#toc)
- [Synopsis](#synopsis)
- [Description](#section1)
- [Overview](#section2)
- [Concepts](#subsection1)
- [dependencies](#subsection2)
- [API](#section3)
- [Namespace picalc](#subsection3)
- [Namespace picalc::lib](#subsection4)
- [Keywords](#keywords)
- [Copyright](#copyright)
# <a name='synopsis'></a>SYNOPSIS
package require picalc
# <a name='description'></a>DESCRIPTION
\-
# <a name='section2'></a>Overview
overview of picalc
## <a name='subsection1'></a>Concepts
\-
## <a name='subsection2'></a>dependencies
packages used by picalc
- __Tcl 8\.6__
- __punk::lib__
- __punk::args__
# <a name='section3'></a>API
## <a name='subsection3'></a>Namespace picalc
Core API functions for picalc
## <a name='subsection4'></a>Namespace picalc::lib
# <a name='keywords'></a>KEYWORDS
[module](\.\./\.\./index\.md\#module)
# <a name='copyright'></a>COPYRIGHT
Copyright &copy; 2025

87
src/embedded/md/doc/files/_module_pipe-1.0.tm.md

@ -0,0 +1,87 @@
[//000000001]: # (shellspy\_module\_pipe \- \-)
[//000000002]: # (Generated from file '\_module\_pipe\-1\.0\.tm\.man' by tcllib/doctools with format 'markdown')
[//000000003]: # (Copyright &copy; 2025)
[//000000004]: # (shellspy\_module\_pipe\(0\) 1\.0 doc "\-")
<hr> [ <a href="../../toc.md">Main Table Of Contents</a> &#124; <a
href="../toc.md">Table Of Contents</a> &#124; <a
href="../../index.md">Keyword Index</a> ] <hr>
# NAME
shellspy\_module\_pipe \- Module API
# <a name='toc'></a>Table Of Contents
- [Table Of Contents](#toc)
- [Synopsis](#synopsis)
- [Description](#section1)
- [Overview](#section2)
- [Concepts](#subsection1)
- [dependencies](#subsection2)
- [API](#section3)
- [Namespace pipe::class](#subsection3)
- [Namespace pipe](#subsection4)
- [Namespace pipe::lib](#subsection5)
- [Internal](#section4)
- [Namespace pipe::system](#subsection6)
- [Keywords](#keywords)
- [Copyright](#copyright)
# <a name='synopsis'></a>SYNOPSIS
package require pipe
# <a name='description'></a>DESCRIPTION
\-
# <a name='section2'></a>Overview
overview of pipe
## <a name='subsection1'></a>Concepts
\-
## <a name='subsection2'></a>dependencies
packages used by pipe
- __Tcl 8\.6__
# <a name='section3'></a>API
## <a name='subsection3'></a>Namespace pipe::class
class definitions if \{ eq ""\} \{ \*\*\* \!doctools
## <a name='subsection4'></a>Namespace pipe
## <a name='subsection5'></a>Namespace pipe::lib
# <a name='section4'></a>Internal
## <a name='subsection6'></a>Namespace pipe::system
# <a name='keywords'></a>KEYWORDS
[module](\.\./\.\./index\.md\#module)
# <a name='copyright'></a>COPYRIGHT
Copyright &copy; 2025

2
src/embedded/md/doc/files/_module_termscheme-0.1.0.tm.md

@ -68,7 +68,7 @@ packages used by termscheme
## <a name='subsection3'></a>Namespace termscheme::class
class definitions if \{ eq ""\} \{
class definitions if \{ eq ""\} \{ \*\*\* \!doctools
## <a name='subsection4'></a>Namespace termscheme

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save