Browse Source

docs

master
Julian Noble 8 months ago
parent
commit
c72d63f227
  1. 27
      src/doc/_module_overtype-1.5.1.tm.man
  2. 27
      src/doc/_module_overtype-1.5.2.tm.man
  3. 27
      src/doc/_module_overtype-1.5.3.tm.man
  4. 127
      src/doc/punk/_module_ansi-0.1.0.tm.man
  5. 87
      src/doc/punk/_module_args-0.1.0.tm.man
  6. 27
      src/doc/punk/_module_char-0.1.0.tm.man
  7. 55
      src/doc/punk/_module_encmime-0.1.0.tm.man
  8. 20
      src/doc/punk/_module_fileline-0.1.0.tm.man
  9. 13
      src/doc/punk/_module_flib-0.1.0.tm.man
  10. 125
      src/doc/punk/_module_lib-0.1.0.tm.man
  11. 9
      src/doc/punk/_module_path-0.1.0.tm.man
  12. 4
      src/doc/punk/mix/commandset/_module_project-0.1.0.tm.man
  13. 312
      src/embedded/man/files/_module_overtype-1.5.1.tm.n
  14. 312
      src/embedded/man/files/_module_overtype-1.5.2.tm.n
  15. 312
      src/embedded/man/files/_module_overtype-1.5.3.tm.n
  16. 4
      src/embedded/man/files/punk/_module_args-0.1.0.tm.n
  17. 312
      src/embedded/man/files/punk/_module_char-0.1.0.tm.n
  18. 357
      src/embedded/man/files/punk/_module_encmime-0.1.0.tm.n
  19. 36
      src/embedded/man/files/punk/_module_fileline-0.1.0.tm.n
  20. 12
      src/embedded/man/files/punk/_module_flib-0.1.0.tm.n
  21. 524
      src/embedded/man/files/punk/_module_lib-0.1.0.tm.n
  22. 4
      src/embedded/man/files/punk/mix/commandset/_module_project-0.1.0.tm.n
  23. 75
      src/embedded/man/index.n
  24. 22
      src/embedded/man/toc.n
  25. 10
      src/embedded/md/.doc/tocdoc
  26. 2
      src/embedded/md/.idx
  27. 2
      src/embedded/md/.toc
  28. 2
      src/embedded/md/.xrf
  29. 78
      src/embedded/md/doc/files/_module_overtype-1.5.1.tm.md
  30. 78
      src/embedded/md/doc/files/_module_overtype-1.5.2.tm.md
  31. 78
      src/embedded/md/doc/files/_module_overtype-1.5.3.tm.md
  32. 6
      src/embedded/md/doc/files/punk/_module_args-0.1.0.tm.md
  33. 76
      src/embedded/md/doc/files/punk/_module_char-0.1.0.tm.md
  34. 136
      src/embedded/md/doc/files/punk/_module_encmime-0.1.0.tm.md
  35. 69
      src/embedded/md/doc/files/punk/_module_fileline-0.1.0.tm.md
  36. 14
      src/embedded/md/doc/files/punk/_module_flib-0.1.0.tm.md
  37. 307
      src/embedded/md/doc/files/punk/_module_lib-0.1.0.tm.md
  38. 6
      src/embedded/md/doc/files/punk/mix/commandset/_module_project-0.1.0.tm.md
  39. 16
      src/embedded/md/doc/toc.md
  40. 38
      src/embedded/md/index.md
  41. 16
      src/embedded/md/toc.md
  42. 10
      src/embedded/www/.doc/tocdoc
  43. 2
      src/embedded/www/.idx
  44. 2
      src/embedded/www/.toc
  45. 2
      src/embedded/www/.xrf
  46. 161
      src/embedded/www/doc/files/_module_overtype-1.5.1.tm.html
  47. 161
      src/embedded/www/doc/files/_module_overtype-1.5.2.tm.html
  48. 161
      src/embedded/www/doc/files/_module_overtype-1.5.3.tm.html
  49. 3
      src/embedded/www/doc/files/punk/_module_args-0.1.0.tm.html
  50. 161
      src/embedded/www/doc/files/punk/_module_char-0.1.0.tm.html
  51. 211
      src/embedded/www/doc/files/punk/_module_encmime-0.1.0.tm.html
  52. 36
      src/embedded/www/doc/files/punk/_module_fileline-0.1.0.tm.html
  53. 13
      src/embedded/www/doc/files/punk/_module_flib-0.1.0.tm.html
  54. 293
      src/embedded/www/doc/files/punk/_module_lib-0.1.0.tm.html
  55. 6
      src/embedded/www/doc/files/punk/mix/commandset/_module_project-0.1.0.tm.html
  56. 40
      src/embedded/www/doc/toc.html
  57. 78
      src/embedded/www/index.html
  58. 40
      src/embedded/www/toc.html

27
src/doc/_module_overtype-1.5.1.tm.man

@ -0,0 +1,27 @@
[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.5.1]
[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]
[manpage_end]

27
src/doc/_module_overtype-1.5.2.tm.man

@ -0,0 +1,27 @@
[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.5.2]
[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]
[manpage_end]

27
src/doc/_module_overtype-1.5.3.tm.man

@ -0,0 +1,27 @@
[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.5.3]
[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]
[manpage_end]

127
src/doc/punk/_module_ansi-0.1.0.tm.man

@ -0,0 +1,127 @@
[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::ansi 0 0.1.0]
[copyright "2023"]
[titledesc {Ansi string functions}] [comment {-- Name section and table of contents description --}]
[moddesc {punk Ansi library}] [comment {-- Description at end of page heading --}]
[require punk::ansi]
[keywords module ansi terminal console string]
[description]
[para]Ansi based terminal control string functions
[para]See [package punk::ansi::console] for related functions for controlling a console
[section Overview]
[para] overview of punk::ansi
[para]punk::ansi functions return their values - no implicit emission to console/stdout
[subsection Concepts]
[para]Ansi codes can be used to control most terminals on most platforms in an 'almost' standard manner
[para]There are many differences in terminal implementations - but most should support a core set of features
[para]punk::ansi does not contain any code for direct terminal manipulation via the local system APIs.
[para]Sticking to ansi codes where possible may be better for cross-platform and remote operation where such APIs are unlikely to be useable.
[subsection dependencies]
[para] packages used by punk::ansi
[list_begin itemized]
[item] [package {Tcl 8.6}]
[list_end]
[section API]
[subsection {Namespace punk::ansi}]
[para] Core API functions for punk::ansi
[list_begin definitions]
[call [fun stripansi] [arg text] ]
[para]Return a string with ansi codes stripped out
[call [fun a?] [opt {ansicode...}]]
[para]Return an ansi string representing a table of codes and a panel showing the colours
[call [fun a+] [opt {ansicode...}]]
[para]Returns the ansi code to apply those from the supplied list - without any reset being performed first
[para] e.g to set foreground red and bold
[para]punk::ansi::a red bold
[para]to set background red
[para]punk::ansi::a Red
[para]see [cmd punk::ansi::a?] to display a list of codes
[call [fun a] [opt {ansicode...}]]
[para]Returns the ansi code to reset any current settings and apply those from the supplied list
[para] by calling punk::ansi::a with no arguments - the result is a reset to plain text
[para] e.g to set foreground red and bold
[para]punk::ansi::a red bold
[para]to set background red
[para]punk::ansi::a Red
[para]see [cmd punk::ansi::a?] to display a list of codes
[call [fun get_code_name] [arg code]]
[para]for example
[para] get_code_name red will return 31
[para] get_code_name 31 will return red
[call [fun reset]]
[para]reset console
[call [fun reset_soft]]
[call [fun reset_colour]]
[para]reset colour only
[call [fun clear]]
[call [fun clear_above]]
[call [fun clear_below]]
[call [fun cursor_on]]
[call [fun cursor_off]]
[call [fun move] [arg row] [arg col]]
[para]Return an ansi sequence to move to row,col
[para]aka cursor home
[call [fun move_emit] [arg row] [arg col] [arg data] [opt {row col data...}]]
[para]Return an ansi string representing a move to row col with data appended
[para]row col data can be repeated any number of times to return a string representing the output of the data elements at all those points
[para]Compare to punk::console::move_emit which calls this function - but writes it to stdout
[para]punk::console::move_emit_return will also return the cursor to the original position
[para]There is no punk::ansi::move_emit_return because in a standard console there is no ansi string which can represent a jump back to starting position.
[para]There is an ansi code to write the current cursor position to stdin (which will generally display on the console) - this is not quite the same thing.
[para]punk::console::move_emit_return does it by emitting that code and starting a loop to read stdin
[para]punk::ansi could implement a move_emit_return using the punk::console mechanism - but the resulting string would capture the cursor position at the time the string is built - which is not necessarily when the string is used.
[para]The following example shows how to do this manually, emitting the string blah at screen position 10,10 and emitting DONE back at the line we started:
[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_forward] [arg n]]
[call [fun move_back] [arg n]]
[call [fun move_up] [arg n]]
[call [fun move_down] [arg n]]
[call [fun erase_line]]
[call [fun erase_sol]]
[para]Erase to start of line, leaving cursor position alone.
[call [fun erase_eol]]
[call [fun cursor_pos]]
[para]cursor_pos unlikely to be useful on it's own like this as when written to the terminal, this sequence causes the terminal to emit the row;col sequence to stdin
[para]The output on screen will look something like ^[lb][lb]47;3R
[para]Use punk::console::get_cursor_pos or punk::console::get_cursor_pos_list instead.
[para]These functions will emit the code - but read it in from stdin so that it doesn't display, and then return the row and column as a colon-delimited string or list respectively.
[para]The punk::ansi::cursor_pos function is used by punk::console::get_cursor_pos and punk::console::get_cursor_pos_list
[call [fun titleset] [arg windowtitles]]
[para]Returns the code to set the title of the terminal window to windowtitle
[para]This may not work on terminals which have multiple panes/windows
[list_end] [comment {--- end definitions namespace punk::ansi ---}]
[subsection {Namespace punk::ansi::ta}]
[para] text ansi functions
[para] based on but not identical to the Perl Text Ansi module:
[para] https://github.com/perlancar/perl-Text-ANSI-Util/blob/master/lib/Text/ANSI/BaseUtil.pm
[list_begin definitions]
[call [fun detect] [arg text]]
[para]Return a boolean indicating whether Ansi codes were detected in text
[para]
[call [fun detect_csi] [arg text]]
[para]Return a boolean indicating whether an Ansi Control Sequence Introducer (CSI) was detected in text
[para]The csi is often represented in code as \x1b or \033 followed by a left bracket [lb]
[para]The initial byte or escape is commonly referenced as ESC in Ansi documentation
[para]There is also a multi-byte escape sequence \u009b
[para]This is less commonly used but is also detected here
[para](This function is not in perl ta)
[call [fun detect_sgr] [arg text]]
[para]Return a boolean indicating whether an ansi Select Graphics Rendition code was detected.
[para]This is the set of CSI sequences ending in 'm'
[para]This is most commonly an Ansi colour code - but also things such as underline and italics
[para]An SGR with empty or a single zero argument is a reset of the SGR features - this is also detected.
[para](This function is not in perl ta)
[call [fun strip] [arg text]]
[para]Return text stripped of Ansi codes
[para]This is a tailcall to punk::ansi::stripansi
[call [fun length] [arg text]]
[para]Return the character length after stripping ansi codes - not the printing length
[list_end] [comment {--- end definitions namespace punk::ansi::ta ---}]
[subsection {Namespace punk::ansi::ansistring}]
[para]punk::ansi::string ensemble
[list_begin definitions]
[list_end] [comment {--- end definitions namespace punk::ansi::ta ---}]
[manpage_end]

87
src/doc/punk/_module_args-0.1.0.tm.man

@ -0,0 +1,87 @@
[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]
[copyright "2024"]
[titledesc {args parsing}] [comment {-- Name section and table of contents description --}]
[moddesc {args to option-value dict and values dict}] [comment {-- Description at end of page heading --}]
[require punk::args]
[keywords module proc args arguments parse]
[description]
[para]Utilities for parsing proc args
[section Overview]
[para] overview of punk::args
[subsection Concepts]
[para]There are 2 main conventions for parsing a proc args list
[list_begin enumerated]
[enum]
[para]leading option-value pairs followed by a list of values (Tk style)
[enum]
[para]leading list of values followed by option-value pairs (Tcl style)
[list_end]
[para]punk::args is focused on the 1st convention (Tk style): parsing of args in leading option-value pair style - even for non-Tk usage.
[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 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]The basic principle is that a call to punk::args::opts_vals is made near the beginning of the proc e.g
[example_begin]
proc dofilestuff {args} {
lassign [lb]dict values [lb]punk::args {
-directory -default ""
-translation -default binary
} $args[rb][rb] opts values
puts "translation is [lb]dict get $opts -translation[rb]"
foreach f [lb]dict values $values[rb] {
puts "doing stuff with file: $f"
}
}
[example_end]
[subsection Notes]
[para]There are alternative args parsing packages such as:
[list_begin enumerated]
[enum]argp
[enum]The tcllib set of TEPAM modules
[para]TEPAM requires an alternative procedure declaration syntax instead of proc - but has support for Tk and documentation generation.
[list_end]
[para]punk::args was designed initially without specific reference to TEPAM - and to handle some edge cases in specific projects where TEPAM wasn't suitable.
[para]In subsequent revisions of punk::args - some features were made to operate in a way that is similar to TEPAM - to avoid gratuitous differences where possible, but of course there are differences
[para]and those used TEPAM or mixing TEPAM and punk::args should take care to assess the differences.
[para]TEPAM is a mature solution and is widely available as it is included in tcllib.
[para]Serious consideration should be given to using TEPAM if suitable for your project.
[subsection dependencies]
[para] packages used by punk::args
[list_begin itemized]
[item] [package {Tcl 8.6}]
[list_end]
[section API]
[subsection {Namespace punk::args::class}]
[para] class definitions
[list_begin enumerated]
[list_end] [comment {--- end class enumeration ---}]
[subsection {Namespace punk::args}]
[para] Core API functions for punk::args
[list_begin definitions]
[call [fun opts_values] [arg optionspecs] [arg rawargs] [opt {option value...}]]
[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
[para]'info complete' is used to determine if a record spans multiple lines due to multiline values
[para]Each optionspec line 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
[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
[list_end]
[para]
[list_end] [comment {--- end definitions namespace punk::args ---}]
[subsection {Namespace punk::args::lib}]
[para] Secondary functions that are part of the API
[list_begin definitions]
[list_end] [comment {--- end definitions namespace punk::args::lib ---}]
[section Internal]
[subsection {Namespace punk::args::system}]
[para] Internal functions that are not part of the API
[manpage_end]

27
src/doc/punk/_module_char-0.1.0.tm.man

@ -0,0 +1,27 @@
[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::char 0 0.1.0]
[copyright "2024"]
[titledesc {character-set and unicode utilities}] [comment {-- Name section and table of contents description --}]
[moddesc {character-set nad unicode}] [comment {-- Description at end of page heading --}]
[require punk::char]
[keywords module encodings]
[description]
[section Overview]
[para] overview of punk::char
[subsection Concepts]
[para] -
[subsection dependencies]
[para] packages used by punk::char
[list_begin itemized]
[item] [package {Tcl 8.6}]
[item] [package {overtype}]
[para] -
[item] [package {textblock}]
[para] -
[item] [package console]
[para] -
[list_end]
[section API]
[manpage_end]

55
src/doc/punk/_module_encmime-0.1.0.tm.man

@ -0,0 +1,55 @@
[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::encmime 0 0.1.0]
[copyright "2024"]
[titledesc {mime encodings related subset of tcllib mime}] [comment {-- Name section and table of contents description --}]
[moddesc {mime encoding names and aliases}] [comment {-- Description at end of page heading --}]
[require punk::encmime]
[keywords module encodings]
[description]
[para] This is a workaround package to provide the mime encoding names used in tcllib's mime package - without additional dependencies
[para]tcllib mime loads either Trf or tcl::memchan functions. punk::encmime needs to work in a context where tcllib may not yet be loaded/available, and even these few dependencies are too much.
[para]MAINTENANCE NOTE: The data in this module needs to be checked against the latest tcllib mime package
[para]taken from tcllib mime version: 1.7.2 in 2024
[section Overview]
[para] overview of punk::encmime
[subsection Concepts]
[para] Where practical - the actual tcllib mime package should be used instead.
[para]This set of encoding related functions is a snapshot of the data from the mime package - and may not be up to date.
[para]This pseudo-package was created to minimize dependencies for punk::char and punk::overtype
[subsection dependencies]
[para] packages used by punk::encmime
[list_begin itemized]
[item] [package {Tcl 8.6}]
[list_end]
[section API]
[subsection {Namespace punk::encmime::class}]
[para] class definitions
[list_begin enumerated]
[list_end] [comment {--- end class enumeration ---}]
[subsection {Namespace punk::encmime}]
[para] Core API functions for punk::encmime
[list_begin definitions]
[call mapencoding [arg enc]]
[para]maps tcl encodings onto the proper names for their MIME charset type.
[para]This is only done for encodings whose charset types were known.
[para]The remaining encodings return {} for now.
[para]NOTE: consider using tcllib's mime::mapencoding instead if mime package available
[call reversemapencoding [arg mimeType]]
[para]mime::reversemapencodings maps MIME charset types onto tcl encoding names.
[para]Returns the tcl encoding name for the specified mime charset, or {} if none is known
[para] Arguments:
[list_begin arguments]
[arg_def string mimeType] The MIME charset to convert into a tcl encoding type.
[list_end]
[para]NOTE: consider using tcllib's mime::reversemapencoding instead if mime package available
[list_end] [comment {--- end definitions namespace punk::encmime ---}]
[subsection {Namespace punk::encmime::lib}]
[para] Secondary functions that are part of the API
[list_begin definitions]
[list_end] [comment {--- end definitions namespace punk::encmime::lib ---}]
[section Internal]
[subsection {Namespace punk::encmime::system}]
[para] Internal functions that are not part of the API
[manpage_end]

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

@ -6,14 +6,16 @@
[titledesc {file line-handling utilities}] [comment {-- Name section and table of contents description --}]
[moddesc {punk fileline}] [comment {-- Description at end of page heading --}]
[require punk::fileline]
[keywords module text parse file]
[keywords module text parse file encoding BOM]
[description]
[para] -
[section Overview]
[para]Utilities for in-memory analysis of text file data as both line data and byte/char-counted data whilst preserving the line-endings (even if mixed)
[para]This is important for certain text files where examining the number of chars/bytes is important
[para]For example - windows .cmd/.bat files need some byte counting to determine if labels lie on chunk boundaries and need to be moved.
[para]Despite including the word 'file', the library doesn't deal with reading/writing to the filesystem. It is for operating on text-file like data.
[para]This chunk-size counting will depend on the character encoding.
[para]Despite including the word 'file', the library doesn't necessarily deal with reading/writing to the filesystem -
[para]The raw data can be supplied as a string, or loaded from a file using punk::fileline::get_textinfo -file <filename>
[subsection Concepts]
[para]A chunk of textfile data (possibly representing a whole file - but usually at least a complete set of lines) is loaded into a punk::fileline::class::textinfo instance at object creation.
[example_begin]
@ -32,6 +34,7 @@
[para] packages needed by punk::fileline
[list_begin itemized]
[item] [package {Tcl 8.6}]
[item] [package {punk::args}]
[list_end] [comment {- end dependencies list -}]
[subsection {optional dependencies}]
[para] packages that add functionality but aren't strictly required
@ -147,6 +150,19 @@ or
[subsection {Namespace punk::fileline}]
[para] Core API functions for punk::fileline
[list_begin definitions]
[call get_textinfo [opt {option value...}] [opt datachunk]]
[para]Returns textinfo object instance representing data in string datachunk or if -file filename supplied - data loaded from a file
[para]The encoding used is as specified in the -encoding option - or from the Byte Order Mark (bom) at the beginning of the data
[para]For Tcl 8.6 - encodings such as utf-16le may not be available - so the bytes are swapped appropriately depending on the platform byteOrder and encoding 'unicode' is used.
[para]encoding defaults to utf-8 if no -encoding specified and no BOM was found
[para]Specify -encoding binary to perform no encoding conversion
[para]Whether -encoding was specified or not - by default the BOM characters are not retained in the line-data
[para]If -includebom 1 is specified - the bom will be retained in the stored chunk and the data for line 1, but will undergo the same encoding transformation as the rest of the data
[para]The get_bomid method of the returned object will contain an identifier for any BOM encountered.
[para] e.g utf-8,utf-16be, utf-16le, utf-32be, utf32-le, SCSU, BOCU-1,GB18030, UTF-EBCDIC, utf-1, utf-7
[para]If the encoding specified in the BOM isn't recognised by Tcl - the resulting data is likely to remain as the raw bytes (binary translation)
[para]Currently only utf-8, utf-16* and utf-32* are properly supported even though the other BOMs are detected, reported via get_bomid, and stripped from the data.
[para]GB18030 falls back to cp936/gbk (unless a gb18030 encoding has been installed). Use -encoding binary if this isn't suitable and you need to do your own processing of the raw data.
[list_end] [comment {--- end definitions namespace punk::fileline ---}]
[subsection {Namespace punk::fileline::lib}]
[para] Secondary functions that are part of the API

13
src/doc/punk/_module_flib-0.1.0.tm.man

@ -1,22 +1,23 @@
[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::flib 0 0.1.0]
[manpage_begin punkshell_module_punk::flib 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 --}]
[titledesc {flib experimental}] [comment {-- Name section and table of contents description --}]
[moddesc {experimental pattern library}] [comment {-- Description at end of page heading --}]
[require punk::flib]
[keywords module]
[keywords module experimental]
[description]
[para] -
[para] Experimental
[section Overview]
[para] overview of punk::flib
[subsection Concepts]
[para] -
[para] Experiments in functional program related features and integration with the pattern library
[subsection dependencies]
[para] packages used by punk::flib
[list_begin itemized]
[item] [package {Tcl 8.6}]
[item] [package {pattern 1.2.4}]
[list_end]
[section API]
[subsection {Namespace punk::flib::class}]

125
src/doc/punk/_module_lib-0.1.0.tm.man

@ -0,0 +1,125 @@
[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.0]
[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}]
[list_end]
[section API]
[subsection {Namespace punk::lib::class}]
[para] class definitions
[list_begin enumerated]
[list_end] [comment {--- end class enumeration ---}]
[subsection {Namespace punk::lib}]
[para] Core API functions for punk::lib
[list_begin definitions]
[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 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 very 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]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]
[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]

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

@ -45,8 +45,13 @@
[para] If -nocase is not supplied - default to case sensitive *except for driveletter*
[para] ie - the driveletter alone in paths such as c:/etc will still be case insensitive. (ie c:/ETC/* will match C:/ETC/blah but not C:/etc/blah)
[para] Explicitly specifying -nocase 0 will require the entire case to match including the driveletter.
[call [fun treefilenames] [arg basepath] [arg tailglob] [opt {option value...}]]
[para]basic (glob based) list of filenames matching tailglob - recursive
[call [fun treefilenames] [opt {option value...}] [opt {globpattern...}]]
[para]basic (glob based) list of filenames matching each pattern in tailglobs - recursive
[para] options:
[para] [opt -dir] <path>
[para] defaults to [lb]pwd[rb] - base path for tree to search
[para] [opt -antiglob_paths] <list>
[para] list of path patterns to exclude - may include * and ** path segments e.g /usr/**
[para]no natsorting - so order is dependent on filesystem
[call [fun relative] [arg reference] [arg location]]
[para] Taking two directory paths, a reference and a location, computes the path

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

@ -3,8 +3,8 @@
[comment {--- punk::docgen overwrites this file ---}]
[manpage_begin punkshell_module_punk::mix::commandset::project 0 0.1.0]
[copyright "2023"]
[titledesc {pmix commandset - project}] [comment {-- Name section and table of contents description --}]
[moddesc {pmix CLI commandset - project}] [comment {-- Description at end of page heading --}]
[titledesc {dec commandset - project}] [comment {-- Name section and table of contents description --}]
[moddesc {deck CLI commandset - project}] [comment {-- Description at end of page heading --}]
[require punk::mix::commandset::project]
[description]
[section Overview]

312
src/embedded/man/files/_module_overtype-1.5.1.tm.n

@ -0,0 +1,312 @@
'\"
'\" Generated from file '_module_overtype-1\&.5\&.1\&.tm\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2024
'\"
.TH "overtype_module_overtype" 0 1\&.5\&.1 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
.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
.SH KEYWORDS
ansi, module, text
.SH COPYRIGHT
.nf
Copyright (c) 2024
.fi

312
src/embedded/man/files/_module_overtype-1.5.2.tm.n

@ -0,0 +1,312 @@
'\"
'\" Generated from file '_module_overtype-1\&.5\&.2\&.tm\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2024
'\"
.TH "overtype_module_overtype" 0 1\&.5\&.2 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
.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
.SH KEYWORDS
ansi, module, text
.SH COPYRIGHT
.nf
Copyright (c) 2024
.fi

312
src/embedded/man/files/_module_overtype-1.5.3.tm.n

@ -0,0 +1,312 @@
'\"
'\" Generated from file '_module_overtype-1\&.5\&.3\&.tm\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2024
'\"
.TH "overtype_module_overtype" 0 1\&.5\&.3 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
.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
.SH KEYWORDS
ansi, module, text
.SH COPYRIGHT
.nf
Copyright (c) 2024
.fi

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

@ -369,7 +369,9 @@ ARGUMENTS:
.TP
multiline-string \fIoptionspecs\fR
.sp
This a block of text with records delimited by newlines (lf or crlf)
This a block 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
Each optionspec line must be of the form:
.sp

312
src/embedded/man/files/punk/_module_char-0.1.0.tm.n

@ -0,0 +1,312 @@
'\"
'\" Generated from file '_module_char-0\&.1\&.0\&.tm\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2024
'\"
.TH "punkshell_module_punk::char" 0 0\&.1\&.0 doc "character-set nad unicode"
.\" 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::char \- character-set and unicode utilities
.SH SYNOPSIS
package require \fBpunk::char \fR
.sp
.BE
.SH DESCRIPTION
.SH OVERVIEW
.PP
overview of punk::char
.SS CONCEPTS
.PP
-
.SS DEPENDENCIES
.PP
packages used by punk::char
.IP \(bu
\fBTcl 8\&.6\fR
.IP \(bu
\fBovertype\fR
.sp
-
.IP \(bu
\fBtextblock\fR
.sp
-
.IP \(bu
\fBconsole\fR
.sp
-
.PP
.SH API
.SH KEYWORDS
encodings, module
.SH COPYRIGHT
.nf
Copyright (c) 2024
.fi

357
src/embedded/man/files/punk/_module_encmime-0.1.0.tm.n

@ -0,0 +1,357 @@
'\"
'\" Generated from file '_module_encmime-0\&.1\&.0\&.tm\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2024
'\"
.TH "punkshell_module_punk::encmime" 0 0\&.1\&.0 doc "mime encoding names and aliases"
.\" 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::encmime \- mime encodings related subset of tcllib mime
.SH SYNOPSIS
package require \fBpunk::encmime \fR
.sp
mapencoding \fIenc\fR
.sp
reversemapencoding \fImimeType\fR
.sp
.BE
.SH DESCRIPTION
.PP
This is a workaround package to provide the mime encoding names used in tcllib's mime package - without additional dependencies
.PP
tcllib mime loads either Trf or tcl::memchan functions\&. punk::encmime needs to work in a context where tcllib may not yet be loaded/available, and even these few dependencies are too much\&.
.PP
MAINTENANCE NOTE: The data in this module needs to be checked against the latest tcllib mime package
.PP
taken from tcllib mime version: 1\&.7\&.2 in 2024
.SH OVERVIEW
.PP
overview of punk::encmime
.SS CONCEPTS
.PP
Where practical - the actual tcllib mime package should be used instead\&.
.PP
This set of encoding related functions is a snapshot of the data from the mime package - and may not be up to date\&.
.PP
This pseudo-package was created to minimize dependencies for punk::char and punk::overtype
.SS DEPENDENCIES
.PP
packages used by punk::encmime
.IP \(bu
\fBTcl 8\&.6\fR
.PP
.SH API
.SS "NAMESPACE PUNK::ENCMIME::CLASS"
.PP
class definitions
.PP
.SS "NAMESPACE PUNK::ENCMIME"
.PP
Core API functions for punk::encmime
.TP
mapencoding \fIenc\fR
.sp
maps tcl encodings onto the proper names for their MIME charset type\&.
.sp
This is only done for encodings whose charset types were known\&.
.sp
The remaining encodings return {} for now\&.
.sp
NOTE: consider using tcllib's mime::mapencoding instead if mime package available
.TP
reversemapencoding \fImimeType\fR
.sp
mime::reversemapencodings maps MIME charset types onto tcl encoding names\&.
.sp
Returns the tcl encoding name for the specified mime charset, or {} if none is known
.sp
Arguments:
.RS
.TP
string \fImimeType\fR
The MIME charset to convert into a tcl encoding type\&.
.RE
.sp
NOTE: consider using tcllib's mime::reversemapencoding instead if mime package available
.PP
.SS "NAMESPACE PUNK::ENCMIME::LIB"
.PP
Secondary functions that are part of the API
.PP
.SH INTERNAL
.SS "NAMESPACE PUNK::ENCMIME::SYSTEM"
.PP
Internal functions that are not part of the API
.SH KEYWORDS
encodings, module
.SH COPYRIGHT
.nf
Copyright (c) 2024
.fi

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

@ -320,6 +320,8 @@ class::textinfo \fBnormalize_indices\fR \fIstartidx\fR \fIendidx\fR \fImax\fR
.sp
class::textinfo \fBregenerate_lines\fR
.sp
get_textinfo ?option value\&.\&.\&.? ?datachunk?
.sp
\fBlib::range_spans_chunk_boundaries\fR \fIstart\fR \fIend\fR \fIchunksize\fR
.sp
\fBansi::a\fR
@ -340,7 +342,11 @@ This is important for certain text files where examining the number of chars/byt
.PP
For example - windows \&.cmd/\&.bat files need some byte counting to determine if labels lie on chunk boundaries and need to be moved\&.
.PP
Despite including the word 'file', the library doesn't deal with reading/writing to the filesystem\&. It is for operating on text-file like data\&.
This chunk-size counting will depend on the character encoding\&.
.PP
Despite including the word 'file', the library doesn't necessarily deal with reading/writing to the filesystem -
.PP
The raw data can be supplied as a string, or loaded from a file using punk::fileline::get_textinfo -file <filename>
.SS CONCEPTS
.PP
A chunk of textfile data (possibly representing a whole file - but usually at least a complete set of lines) is loaded into a punk::fileline::class::textinfo instance at object creation\&.
@ -580,6 +586,32 @@ TODO - review whether such manual control will be necessary/desirable
.SS "NAMESPACE PUNK::FILELINE"
.PP
Core API functions for punk::fileline
.TP
get_textinfo ?option value\&.\&.\&.? ?datachunk?
.sp
Returns textinfo object instance representing data in string datachunk or if -file filename supplied - data loaded from a file
.sp
The encoding used is as specified in the -encoding option - or from the Byte Order Mark (bom) at the beginning of the data
.sp
For Tcl 8\&.6 - encodings such as utf-16le may not be available - so the bytes are swapped appropriately depending on the platform byteOrder and encoding 'unicode' is used\&.
.sp
encoding defaults to utf-8 if no -encoding specified and no BOM was found
.sp
Specify -encoding binary to perform no encoding conversion
.sp
Whether -encoding was specified or not - by default the BOM characters are not retained in the line-data
.sp
If -includebom 1 is specified - the bom will be retained in the stored chunk and the data for line 1, but will undergo the same encoding transformation as the rest of the data
.sp
The get_bomid method of the returned object will contain an identifier for any BOM encountered\&.
.sp
e\&.g utf-8,utf-16be, utf-16le, utf-32be, utf32-le, SCSU, BOCU-1,GB18030, UTF-EBCDIC, utf-1, utf-7
.sp
If the encoding specified in the BOM isn't recognised by Tcl - the resulting data is likely to remain as the raw bytes (binary translation)
.sp
Currently only utf-8, utf-16* and utf-32* are properly supported even though the other BOMs are detected, reported via get_bomid, and stripped from the data\&.
.sp
GB18030 falls back to cp936/gbk (unless a gb18030 encoding has been installed)\&. Use -encoding binary if this isn't suitable and you need to do your own processing of the raw data\&.
.PP
.SS "NAMESPACE PUNK::FILELINE::LIB"
.PP
@ -646,7 +678,7 @@ See \fBpunk::ansi\fR for documentation
\fBansi::stripansi\fR
.PP
.SH KEYWORDS
file, module, parse, text
BOM, encoding, file, module, parse, text
.SH COPYRIGHT
.nf
Copyright (c) 2024

12
src/embedded/man/files/punk/_module_flib-0.1.0.tm.n

@ -2,7 +2,7 @@
'\" Generated from file '_module_flib-0\&.1\&.0\&.tm\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2024
'\"
.TH "punkshell_module_punk::flib" 0 0\&.1\&.0 doc "-"
.TH "punkshell_module_punk::flib" 0 0\&.1\&.0 doc "experimental pattern library"
.\" The -*- nroff -*- definitions below are for supplemental macros used
.\" in Tcl/Tk manual entries.
.\"
@ -272,25 +272,27 @@ Database Class: \\fB\\$3\\fR
..
.BS
.SH NAME
punkshell_module_punk::flib \- Module API
punkshell_module_punk::flib \- flib experimental
.SH SYNOPSIS
package require \fBpunk::flib \fR
.sp
.BE
.SH DESCRIPTION
.PP
-
Experimental
.SH OVERVIEW
.PP
overview of punk::flib
.SS CONCEPTS
.PP
-
Experiments in functional program related features and integration with the pattern library
.SS DEPENDENCIES
.PP
packages used by punk::flib
.IP \(bu
\fBTcl 8\&.6\fR
.IP \(bu
\fBpattern 1\&.2\&.4\fR
.PP
.SH API
.SS "NAMESPACE PUNK::FLIB::CLASS"
@ -310,7 +312,7 @@ Secondary functions that are part of the API
.PP
Internal functions that are not part of the API
.SH KEYWORDS
module
experimental, module
.SH COPYRIGHT
.nf
Copyright (c) 2024

524
src/embedded/man/files/punk/_module_lib-0.1.0.tm.n

@ -0,0 +1,524 @@
'\"
'\" Generated from file '_module_lib-0\&.1\&.0\&.tm\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2024
'\"
.TH "punkshell_module_punk::lib" 0 0\&.1\&.0 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
\fBK\fR \fIx\fR \fIy\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
.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
.PP
.SH API
.SS "NAMESPACE PUNK::LIB::CLASS"
.PP
class definitions
.PP
.SS "NAMESPACE PUNK::LIB"
.PP
Core API functions for punk::lib
.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
\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 very 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
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
.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

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

@ -2,7 +2,7 @@
'\" Generated from file '_module_project-0\&.1\&.0\&.tm\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2023
'\"
.TH "punkshell_module_punk::mix::commandset::project" 0 0\&.1\&.0 doc "pmix CLI commandset - project"
.TH "punkshell_module_punk::mix::commandset::project" 0 0\&.1\&.0 doc "deck CLI commandset - project"
.\" The -*- nroff -*- definitions below are for supplemental macros used
.\" in Tcl/Tk manual entries.
.\"
@ -272,7 +272,7 @@ Database Class: \\fB\\$3\\fR
..
.BS
.SH NAME
punkshell_module_punk::mix::commandset::project \- pmix commandset - project
punkshell_module_punk::mix::commandset::project \- dec commandset - project
.SH SYNOPSIS
package require \fBpunk::mix::commandset::project \fR
.sp

75
src/embedded/man/index.n

@ -272,9 +272,24 @@ Database Class: \\fB\\$3\\fR
.SH INDEX
doc
.RS
BOM
.RS
.TP
\fBfiles/punk/_module_fileline-0\&.1\&.0\&.tm\&.n\fR
punkshell_module_punk::fileline
.RE
ansi
.RS
.TP
\fBfiles/_module_overtype-1\&.5\&.3\&.tm\&.n\fR
overtype_module_overtype
.TP
\fBfiles/_module_overtype-1\&.5\&.2\&.tm\&.n\fR
overtype_module_overtype
.TP
\fBfiles/_module_overtype-1\&.5\&.1\&.tm\&.n\fR
overtype_module_overtype
.TP
\fBfiles/punk/_module_ansi-0\&.1\&.0\&.tm\&.n\fR
punkshell_module_punk::ansi
.RE
@ -308,6 +323,27 @@ console
\fBfiles/punk/_module_ansi-0\&.1\&.0\&.tm\&.n\fR
punkshell_module_punk::ansi
.RE
encoding
.RS
.TP
\fBfiles/punk/_module_fileline-0\&.1\&.0\&.tm\&.n\fR
punkshell_module_punk::fileline
.RE
encodings
.RS
.TP
\fBfiles/punk/_module_char-0\&.1\&.0\&.tm\&.n\fR
punkshell_module_punk::char
.TP
\fBfiles/punk/_module_encmime-0\&.1\&.0\&.tm\&.n\fR
punkshell_module_punk::encmime
.RE
experimental
.RS
.TP
\fBfiles/punk/_module_flib-0\&.1\&.0\&.tm\&.n\fR
punkshell_module_punk::flib
.RE
file
.RS
.TP
@ -320,9 +356,24 @@ filesystem
\fBfiles/punk/_module_path-0\&.1\&.0\&.tm\&.n\fR
punkshell_module_punk::path
.RE
lib
.RS
.TP
\fBfiles/punk/_module_lib-0\&.1\&.0\&.tm\&.n\fR
punkshell_module_punk::lib
.RE
module
.RS
.TP
\fBfiles/_module_overtype-1\&.5\&.3\&.tm\&.n\fR
overtype_module_overtype
.TP
\fBfiles/_module_overtype-1\&.5\&.2\&.tm\&.n\fR
overtype_module_overtype
.TP
\fBfiles/_module_overtype-1\&.5\&.1\&.tm\&.n\fR
overtype_module_overtype
.TP
\fBfiles/punk/_module_ansi-0\&.1\&.0\&.tm\&.n\fR
punkshell_module_punk::ansi
.TP
@ -332,12 +383,21 @@ punkshell_module_punk::args
\fBfiles/punk/_module_cap-0\&.1\&.0\&.tm\&.n\fR
punkshell_module_punk::cap
.TP
\fBfiles/punk/_module_char-0\&.1\&.0\&.tm\&.n\fR
punkshell_module_punk::char
.TP
\fBfiles/punk/_module_encmime-0\&.1\&.0\&.tm\&.n\fR
punkshell_module_punk::encmime
.TP
\fBfiles/punk/_module_fileline-0\&.1\&.0\&.tm\&.n\fR
punkshell_module_punk::fileline
.TP
\fBfiles/punk/_module_flib-0\&.1\&.0\&.tm\&.n\fR
punkshell_module_punk::flib
.TP
\fBfiles/punk/_module_lib-0\&.1\&.0\&.tm\&.n\fR
punkshell_module_punk::lib
.TP
\fBfiles/punk/_module_path-0\&.1\&.0\&.tm\&.n\fR
punkshell_module_punk::path
.RE
@ -419,7 +479,22 @@ punkshell_module_punk::ansi
text
.RS
.TP
\fBfiles/_module_overtype-1\&.5\&.3\&.tm\&.n\fR
overtype_module_overtype
.TP
\fBfiles/_module_overtype-1\&.5\&.2\&.tm\&.n\fR
overtype_module_overtype
.TP
\fBfiles/_module_overtype-1\&.5\&.1\&.tm\&.n\fR
overtype_module_overtype
.TP
\fBfiles/punk/_module_fileline-0\&.1\&.0\&.tm\&.n\fR
punkshell_module_punk::fileline
.RE
utility
.RS
.TP
\fBfiles/punk/_module_lib-0\&.1\&.0\&.tm\&.n\fR
punkshell_module_punk::lib
.RE
.RE

22
src/embedded/man/toc.n

@ -273,6 +273,15 @@ Database Class: \\fB\\$3\\fR
doc
.RS
.TP
\fBovertype_module_overtype\fR
\fIfiles/_module_overtype-1\&.5\&.3\&.tm\&.n\fR: overtype text layout - ansi aware
.TP
\fBovertype_module_overtype\fR
\fIfiles/_module_overtype-1\&.5\&.2\&.tm\&.n\fR: overtype text layout - ansi aware
.TP
\fBovertype_module_overtype\fR
\fIfiles/_module_overtype-1\&.5\&.1\&.tm\&.n\fR: overtype text layout - ansi aware
.TP
\fBpunkshell\fR
\fIfiles/main\&.n\fR: punkshell - Core
.TP
@ -291,14 +300,23 @@ doc
\fBpunkshell_module_punk::cap\fR
\fIfiles/punk/_module_cap-0\&.1\&.0\&.tm\&.n\fR: capability provider and handler plugin system
.TP
\fBpunkshell_module_punk::char\fR
\fIfiles/punk/_module_char-0\&.1\&.0\&.tm\&.n\fR: character-set and unicode utilities
.TP
\fBpunkshell_module_punk::encmime\fR
\fIfiles/punk/_module_encmime-0\&.1\&.0\&.tm\&.n\fR: mime encodings related subset of tcllib mime
.TP
\fBpunkshell_module_punk::fileline\fR
\fIfiles/punk/_module_fileline-0\&.1\&.0\&.tm\&.n\fR: file line-handling utilities
.TP
\fBpunkshell_module_punk::flib\fR
\fIfiles/punk/_module_flib-0\&.1\&.0\&.tm\&.n\fR: Module API
\fIfiles/punk/_module_flib-0\&.1\&.0\&.tm\&.n\fR: flib experimental
.TP
\fBpunkshell_module_punk::lib\fR
\fIfiles/punk/_module_lib-0\&.1\&.0\&.tm\&.n\fR: punk general utility functions
.TP
\fBpunkshell_module_punk::mix::commandset::project\fR
\fIfiles/punk/mix/commandset/_module_project-0\&.1\&.0\&.tm\&.n\fR: pmix commandset - project
\fIfiles/punk/mix/commandset/_module_project-0\&.1\&.0\&.tm\&.n\fR: dec commandset - project
.TP
\fBpunkshell_module_punk::path\fR
\fIfiles/punk/_module_path-0\&.1\&.0\&.tm\&.n\fR: Filesystem path utilities

10
src/embedded/md/.doc/tocdoc

@ -1,12 +1,18 @@
[toc_begin {Table Of Contents} doc]
[item doc/files/_module_overtype-1.5.2.tm.md overtype_module_overtype {overtype text layout - ansi aware}]
[item doc/files/_module_overtype-1.5.3.tm.md overtype_module_overtype {overtype text layout - ansi aware}]
[item doc/files/_module_overtype-1.5.1.tm.md overtype_module_overtype {overtype text layout - ansi aware}]
[item doc/files/main.md punkshell {punkshell - Core}]
[item doc/files/project_changes.md punkshell__project_changes {punkshell Changes}]
[item doc/files/project_intro.md punkshell__project_intro {Introduction to punkshell}]
[item doc/files/punk/_module_ansi-0.1.0.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_cap-0.1.0.tm.md punkshell_module_punk::cap {capability provider and handler plugin system}]
[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_encmime-0.1.0.tm.md punkshell_module_punk::encmime {mime encodings related subset of tcllib mime}]
[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 {Module API}]
[item doc/files/punk/mix/commandset/_module_project-0.1.0.tm.md punkshell_module_punk::mix::commandset::project {pmix commandset - project}]
[item doc/files/punk/_module_flib-0.1.0.tm.md punkshell_module_punk::flib {flib experimental}]
[item doc/files/punk/_module_lib-0.1.0.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/_module_path-0.1.0.tm.md punkshell_module_punk::path {Filesystem path utilities}]
[toc_end]

2
src/embedded/md/.idx

File diff suppressed because one or more lines are too long

2
src/embedded/md/.toc

@ -1 +1 @@
doc {doc/toc {{doc/files/punk/_module_fileline-0.1.0.tm.md punkshell_module_punk::fileline {file line-handling utilities}} {doc/files/punk/_module_cap-0.1.0.tm.md punkshell_module_punk::cap {capability provider and handler plugin system}} {doc/files/project_intro.md punkshell__project_intro {Introduction to punkshell}} {doc/files/punk/_module_path-0.1.0.tm.md punkshell_module_punk::path {Filesystem path utilities}} {doc/files/punk/_module_flib-0.1.0.tm.md punkshell_module_punk::flib {Module API}} {doc/files/punk/_module_args-0.1.0.tm.md punkshell_module_punk::args {args parsing}} {doc/files/project_changes.md punkshell__project_changes {punkshell Changes}} {doc/files/punk/mix/commandset/_module_project-0.1.0.tm.md punkshell_module_punk::mix::commandset::project {pmix commandset - project}} {doc/files/punk/_module_ansi-0.1.0.tm.md punkshell_module_punk::ansi {Ansi string functions}} {doc/files/main.md punkshell {punkshell - Core}}}}
doc {doc/toc {{doc/files/project_intro.md punkshell__project_intro {Introduction to punkshell}} {doc/files/_module_overtype-1.5.2.tm.md overtype_module_overtype {overtype text layout - ansi aware}} {doc/files/_module_overtype-1.5.3.tm.md overtype_module_overtype {overtype text layout - ansi aware}} {doc/files/main.md punkshell {punkshell - Core}} {doc/files/punk/_module_flib-0.1.0.tm.md punkshell_module_punk::flib {flib experimental}} {doc/files/punk/mix/commandset/_module_project-0.1.0.tm.md punkshell_module_punk::mix::commandset::project {dec commandset - project}} {doc/files/punk/_module_fileline-0.1.0.tm.md punkshell_module_punk::fileline {file line-handling utilities}} {doc/files/punk/_module_ansi-0.1.0.tm.md punkshell_module_punk::ansi {Ansi string functions}} {doc/files/punk/_module_cap-0.1.0.tm.md punkshell_module_punk::cap {capability provider and handler plugin system}} {doc/files/punk/_module_path-0.1.0.tm.md punkshell_module_punk::path {Filesystem path utilities}} {doc/files/punk/_module_args-0.1.0.tm.md punkshell_module_punk::args {args parsing}} {doc/files/project_changes.md punkshell__project_changes {punkshell Changes}} {doc/files/punk/_module_encmime-0.1.0.tm.md punkshell_module_punk::encmime {mime encodings related subset of tcllib mime}} {doc/files/punk/_module_char-0.1.0.tm.md punkshell_module_punk::char {character-set and unicode utilities}} {doc/files/punk/_module_lib-0.1.0.tm.md punkshell_module_punk::lib {punk general utility functions}} {doc/files/_module_overtype-1.5.1.tm.md overtype_module_overtype {overtype text layout - ansi aware}}}}

2
src/embedded/md/.xrf

File diff suppressed because one or more lines are too long

78
src/embedded/md/doc/files/_module_overtype-1.5.1.tm.md

@ -0,0 +1,78 @@
[//000000001]: # (overtype\_module\_overtype \- overtype text layout)
[//000000002]: # (Generated from file '\_module\_overtype\-1\.5\.1\.tm\.man' by tcllib/doctools with format 'markdown')
[//000000003]: # (Copyright &copy; 2024)
[//000000004]: # (overtype\_module\_overtype\(0\) 1\.5\.1 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)
- [Keywords](#keywords)
- [Copyright](#copyright)
# <a name='synopsis'></a>SYNOPSIS
package require overtype
# <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='keywords'></a>KEYWORDS
[ansi](\.\./\.\./index\.md\#ansi), [module](\.\./\.\./index\.md\#module),
[text](\.\./\.\./index\.md\#text)
# <a name='copyright'></a>COPYRIGHT
Copyright &copy; 2024

78
src/embedded/md/doc/files/_module_overtype-1.5.2.tm.md

@ -0,0 +1,78 @@
[//000000001]: # (overtype\_module\_overtype \- overtype text layout)
[//000000002]: # (Generated from file '\_module\_overtype\-1\.5\.2\.tm\.man' by tcllib/doctools with format 'markdown')
[//000000003]: # (Copyright &copy; 2024)
[//000000004]: # (overtype\_module\_overtype\(0\) 1\.5\.2 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)
- [Keywords](#keywords)
- [Copyright](#copyright)
# <a name='synopsis'></a>SYNOPSIS
package require overtype
# <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='keywords'></a>KEYWORDS
[ansi](\.\./\.\./index\.md\#ansi), [module](\.\./\.\./index\.md\#module),
[text](\.\./\.\./index\.md\#text)
# <a name='copyright'></a>COPYRIGHT
Copyright &copy; 2024

78
src/embedded/md/doc/files/_module_overtype-1.5.3.tm.md

@ -0,0 +1,78 @@
[//000000001]: # (overtype\_module\_overtype \- overtype text layout)
[//000000002]: # (Generated from file '\_module\_overtype\-1\.5\.3\.tm\.man' by tcllib/doctools with format 'markdown')
[//000000003]: # (Copyright &copy; 2024)
[//000000004]: # (overtype\_module\_overtype\(0\) 1\.5\.3 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)
- [Keywords](#keywords)
- [Copyright](#copyright)
# <a name='synopsis'></a>SYNOPSIS
package require overtype
# <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='keywords'></a>KEYWORDS
[ansi](\.\./\.\./index\.md\#ansi), [module](\.\./\.\./index\.md\#module),
[text](\.\./\.\./index\.md\#text)
# <a name='copyright'></a>COPYRIGHT
Copyright &copy; 2024

6
src/embedded/md/doc/files/punk/_module_args-0.1.0.tm.md

@ -143,7 +143,11 @@ class definitions
* multiline\-string *optionspecs*
This a block of text with records delimited by newlines \(lf or crlf\)
This a block of text with records delimited by newlines \(lf or crlf\) \-
but with multiline values allowed if properly quoted/braced
'info complete' is used to determine if a record spans multiple lines
due to multiline values
Each optionspec line must be of the form:

76
src/embedded/md/doc/files/punk/_module_char-0.1.0.tm.md

@ -0,0 +1,76 @@
[//000000001]: # (punkshell\_module\_punk::char \- character\-set nad unicode)
[//000000002]: # (Generated from file '\_module\_char\-0\.1\.0\.tm\.man' by tcllib/doctools with format 'markdown')
[//000000003]: # (Copyright &copy; 2024)
[//000000004]: # (punkshell\_module\_punk::char\(0\) 0\.1\.0 doc "character\-set nad unicode")
<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
punkshell\_module\_punk::char \- character\-set and unicode utilities
# <a name='toc'></a>Table Of Contents
- [Table Of Contents](#toc)
- [Synopsis](#synopsis)
- [Description](#section1)
- [Overview](#section2)
- [Concepts](#subsection1)
- [dependencies](#subsection2)
- [API](#section3)
- [Keywords](#keywords)
- [Copyright](#copyright)
# <a name='synopsis'></a>SYNOPSIS
package require punk::char
# <a name='description'></a>DESCRIPTION
# <a name='section2'></a>Overview
overview of punk::char
## <a name='subsection1'></a>Concepts
\-
## <a name='subsection2'></a>dependencies
packages used by punk::char
- __Tcl 8\.6__
- __overtype__
\-
- __textblock__
\-
- __[console](\.\./\.\./\.\./index\.md\#console)__
\-
# <a name='section3'></a>API
# <a name='keywords'></a>KEYWORDS
[encodings](\.\./\.\./\.\./index\.md\#encodings),
[module](\.\./\.\./\.\./index\.md\#module)
# <a name='copyright'></a>COPYRIGHT
Copyright &copy; 2024

136
src/embedded/md/doc/files/punk/_module_encmime-0.1.0.tm.md

@ -0,0 +1,136 @@
[//000000001]: # (punkshell\_module\_punk::encmime \- mime encoding names and aliases)
[//000000002]: # (Generated from file '\_module\_encmime\-0\.1\.0\.tm\.man' by tcllib/doctools with format 'markdown')
[//000000003]: # (Copyright &copy; 2024)
[//000000004]: # (punkshell\_module\_punk::encmime\(0\) 0\.1\.0 doc "mime encoding names and aliases")
<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
punkshell\_module\_punk::encmime \- mime encodings related subset of tcllib mime
# <a name='toc'></a>Table Of Contents
- [Table Of Contents](#toc)
- [Synopsis](#synopsis)
- [Description](#section1)
- [Overview](#section2)
- [Concepts](#subsection1)
- [dependencies](#subsection2)
- [API](#section3)
- [Namespace punk::encmime::class](#subsection3)
- [Namespace punk::encmime](#subsection4)
- [Namespace punk::encmime::lib](#subsection5)
- [Internal](#section4)
- [Namespace punk::encmime::system](#subsection6)
- [Keywords](#keywords)
- [Copyright](#copyright)
# <a name='synopsis'></a>SYNOPSIS
package require punk::encmime
[mapencoding *enc*](#1)
[reversemapencoding *mimeType*](#2)
# <a name='description'></a>DESCRIPTION
This is a workaround package to provide the mime encoding names used in tcllib's
mime package \- without additional dependencies
tcllib mime loads either Trf or tcl::memchan functions\. punk::encmime needs to
work in a context where tcllib may not yet be loaded/available, and even these
few dependencies are too much\.
MAINTENANCE NOTE: The data in this module needs to be checked against the latest
tcllib mime package
taken from tcllib mime version: 1\.7\.2 in 2024
# <a name='section2'></a>Overview
overview of punk::encmime
## <a name='subsection1'></a>Concepts
Where practical \- the actual tcllib mime package should be used instead\.
This set of encoding related functions is a snapshot of the data from the mime
package \- and may not be up to date\.
This pseudo\-package was created to minimize dependencies for punk::char and
punk::overtype
## <a name='subsection2'></a>dependencies
packages used by punk::encmime
- __Tcl 8\.6__
# <a name='section3'></a>API
## <a name='subsection3'></a>Namespace punk::encmime::class
class definitions
## <a name='subsection4'></a>Namespace punk::encmime
- <a name='1'></a>mapencoding *enc*
maps tcl encodings onto the proper names for their MIME charset type\.
This is only done for encodings whose charset types were known\.
The remaining encodings return \{\} for now\.
NOTE: consider using tcllib's mime::mapencoding instead if mime package
available
- <a name='2'></a>reversemapencoding *mimeType*
mime::reversemapencodings maps MIME charset types onto tcl encoding names\.
Returns the tcl encoding name for the specified mime charset, or \{\} if none
is known
Arguments:
* string *mimeType*
The MIME charset to convert into a tcl encoding type\.
NOTE: consider using tcllib's mime::reversemapencoding instead if mime
package available
## <a name='subsection5'></a>Namespace punk::encmime::lib
Secondary functions that are part of the API
# <a name='section4'></a>Internal
## <a name='subsection6'></a>Namespace punk::encmime::system
# <a name='keywords'></a>KEYWORDS
[encodings](\.\./\.\./\.\./index\.md\#encodings),
[module](\.\./\.\./\.\./index\.md\#module)
# <a name='copyright'></a>COPYRIGHT
Copyright &copy; 2024

69
src/embedded/md/doc/files/punk/_module_fileline-0.1.0.tm.md

@ -74,10 +74,11 @@ package require punk::fileline
[class::textinfo __numeric\_chunkrange__ *startidx* *endidx*](#20)
[class::textinfo __normalize\_indices__ *startidx* *endidx* *max*](#21)
[class::textinfo __regenerate\_lines__](#22)
[__lib::range\_spans\_chunk\_boundaries__ *start* *end* *chunksize*](#23)
[__ansi::a__](#24)
[__ansi::a\+__](#25)
[__ansi::stripansi__](#26)
[get\_textinfo ?option value\.\.\.? ?datachunk?](#23)
[__lib::range\_spans\_chunk\_boundaries__ *start* *end* *chunksize*](#24)
[__ansi::a__](#25)
[__ansi::a\+__](#26)
[__ansi::stripansi__](#27)
# <a name='description'></a>DESCRIPTION
@ -94,8 +95,13 @@ chars/bytes is important
For example \- windows \.cmd/\.bat files need some byte counting to determine if
labels lie on chunk boundaries and need to be moved\.
Despite including the word 'file', the library doesn't deal with reading/writing
to the filesystem\. It is for operating on text\-file like data\.
This chunk\-size counting will depend on the character encoding\.
Despite including the word 'file', the library doesn't necessarily deal with
reading/writing to the filesystem \-
The raw data can be supplied as a string, or loaded from a file using
punk::fileline::get\_textinfo \-file <filename>
## <a name='subsection1'></a>Concepts
@ -387,9 +393,51 @@ class definitions
Core API functions for punk::fileline
- <a name='23'></a>get\_textinfo ?option value\.\.\.? ?datachunk?
Returns textinfo object instance representing data in string datachunk or if
\-file filename supplied \- data loaded from a file
The encoding used is as specified in the \-encoding option \- or from the Byte
Order Mark \(bom\) at the beginning of the data
For Tcl 8\.6 \- encodings such as utf\-16le may not be available \- so the bytes
are swapped appropriately depending on the platform byteOrder and encoding
'unicode' is used\.
encoding defaults to utf\-8 if no \-encoding specified and no BOM was found
Specify \-encoding binary to perform no encoding conversion
Whether \-encoding was specified or not \- by default the BOM characters are
not retained in the line\-data
If \-includebom 1 is specified \- the bom will be retained in the stored chunk
and the data for line 1, but will undergo the same encoding transformation
as the rest of the data
The get\_bomid method of the returned object will contain an identifier for
any BOM encountered\.
e\.g utf\-8,utf\-16be, utf\-16le, utf\-32be, utf32\-le, SCSU, BOCU\-1,GB18030,
UTF\-EBCDIC, utf\-1, utf\-7
If the encoding specified in the BOM isn't recognised by Tcl \- the resulting
data is likely to remain as the raw bytes \(binary translation\)
Currently only utf\-8, utf\-16\* and utf\-32\* are properly supported even though
the other BOMs are detected, reported via get\_bomid, and stripped from the
data\.
GB18030 falls back to cp936/gbk \(unless a gb18030 encoding has been
installed\)\. Use \-encoding binary if this isn't suitable and you need to do
your own processing of the raw data\.
## <a name='subsection7'></a>Namespace punk::fileline::lib
- <a name='23'></a>__lib::range\_spans\_chunk\_boundaries__ *start* *end* *chunksize*
Secondary functions that are part of the API
- <a name='24'></a>__lib::range\_spans\_chunk\_boundaries__ *start* *end* *chunksize*
Takes start and end offset, generally representing bytes or character
indices, and computes a list of boundaries at multiples of the chunksize
@ -440,14 +488,15 @@ unavailable
See __punk::ansi__ for documentation
- <a name='24'></a>__ansi::a__
- <a name='25'></a>__ansi::a__
- <a name='25'></a>__ansi::a\+__
- <a name='26'></a>__ansi::a\+__
- <a name='26'></a>__ansi::stripansi__
- <a name='27'></a>__ansi::stripansi__
# <a name='keywords'></a>KEYWORDS
[BOM](\.\./\.\./\.\./index\.md\#bom), [encoding](\.\./\.\./\.\./index\.md\#encoding),
[file](\.\./\.\./\.\./index\.md\#file), [module](\.\./\.\./\.\./index\.md\#module),
[parse](\.\./\.\./\.\./index\.md\#parse), [text](\.\./\.\./\.\./index\.md\#text)

14
src/embedded/md/doc/files/punk/_module_flib-0.1.0.tm.md

@ -1,8 +1,8 @@
[//000000001]: # (punkshell\_module\_punk::flib \- \-)
[//000000001]: # (punkshell\_module\_punk::flib \- experimental pattern library)
[//000000002]: # (Generated from file '\_module\_flib\-0\.1\.0\.tm\.man' by tcllib/doctools with format 'markdown')
[//000000003]: # (Copyright &copy; 2024)
[//000000004]: # (punkshell\_module\_punk::flib\(0\) 0\.1\.0 doc "\-")
[//000000004]: # (punkshell\_module\_punk::flib\(0\) 0\.1\.0 doc "experimental pattern library")
<hr> [ <a href="../../../toc.md">Main Table Of Contents</a> &#124; <a
href="../../toc.md">Table Of Contents</a> &#124; <a
@ -10,7 +10,7 @@ href="../../../index.md">Keyword Index</a> ] <hr>
# NAME
punkshell\_module\_punk::flib \- Module API
punkshell\_module\_punk::flib \- flib experimental
# <a name='toc'></a>Table Of Contents
@ -48,7 +48,7 @@ package require punk::flib
# <a name='description'></a>DESCRIPTION
\-
Experimental
# <a name='section2'></a>Overview
@ -56,7 +56,8 @@ overview of punk::flib
## <a name='subsection1'></a>Concepts
\-
Experiments in functional program related features and integration with the
pattern library
## <a name='subsection2'></a>dependencies
@ -64,6 +65,8 @@ packages used by punk::flib
- __Tcl 8\.6__
- __pattern 1\.2\.4__
# <a name='section3'></a>API
## <a name='subsection3'></a>Namespace punk::flib::class
@ -80,6 +83,7 @@ class definitions
# <a name='keywords'></a>KEYWORDS
[experimental](\.\./\.\./\.\./index\.md\#experimental),
[module](\.\./\.\./\.\./index\.md\#module)
# <a name='copyright'></a>COPYRIGHT

307
src/embedded/md/doc/files/punk/_module_lib-0.1.0.tm.md

@ -0,0 +1,307 @@
[//000000001]: # (punkshell\_module\_punk::lib \- punk library)
[//000000002]: # (Generated from file '\_module\_lib\-0\.1\.0\.tm\.man' by tcllib/doctools with format 'markdown')
[//000000003]: # (Copyright &copy; 2024)
[//000000004]: # (punkshell\_module\_punk::lib\(0\) 0\.1\.0 doc "punk library")
<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
punkshell\_module\_punk::lib \- punk general utility functions
# <a name='toc'></a>Table Of Contents
- [Table Of Contents](#toc)
- [Synopsis](#synopsis)
- [Description](#section1)
- [Overview](#section2)
- [Concepts](#subsection1)
- [dependencies](#subsection2)
- [API](#section3)
- [Namespace punk::lib::class](#subsection3)
- [Namespace punk::lib](#subsection4)
- [Internal](#section4)
- [Namespace punk::lib::system](#subsection5)
- [Keywords](#keywords)
- [Copyright](#copyright)
# <a name='synopsis'></a>SYNOPSIS
package require punk::lib
[__K__ *x* *y*](#1)
[__hex2dec__ ?option value\.\.\.? *list\_largeHex*](#2)
[__dex2hex__ ?option value\.\.\.? *list\_decimals*](#3)
[__log2__ *x*](#4)
[__logbase__ *b* *x*](#5)
[__factors__ *x*](#6)
[__oddFactors__ *x*](#7)
[__greatestFactorBelow__ *x*](#8)
[__greatestOddFactorBelow__ *x*](#9)
[__greatestOddFactor__ *x*](#10)
[__gcd__ *n* *m*](#11)
[__gcd__ *n* *m*](#12)
[__commonDivisors__ *x* *y*](#13)
[__hasglobs__ *str*](#14)
[__trimzero__ *number*](#15)
[__substring\_count__ *str* *substring*](#16)
[__dict\_merge\_ordered__ *defaults* *main*](#17)
[__askuser__ *question*](#18)
# <a name='description'></a>DESCRIPTION
This is a set of utility functions that are commonly used across punk modules or
are just considered to be general\-purpose functions\.
The base set includes string and math functions but has no specific theme
# <a name='section2'></a>Overview
overview of punk::lib
## <a name='subsection1'></a>Concepts
The punk::lib modules should have no strong dependencies other than Tcl
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\.
This requirement for no strong dependencies, means that many utility functions
that might otherwise seem worthy of inclusion here are not present\.
## <a name='subsection2'></a>dependencies
packages used by punk::lib
- __Tcl 8\.6__
# <a name='section3'></a>API
## <a name='subsection3'></a>Namespace punk::lib::class
class definitions
## <a name='subsection4'></a>Namespace punk::lib
- <a name='1'></a>__K__ *x* *y*
The K\-combinator function \- returns the first argument, x and discards y
see [https://wiki\.tcl\-lang\.org/page/K](https://wiki\.tcl\-lang\.org/page/K)
It is used in cases where command\-substitution at the calling\-point performs
some desired effect\.
- <a name='2'></a>__hex2dec__ ?option value\.\.\.? *list\_largeHex*
Convert a list of \(possibly large\) unprefixed hex strings to their decimal
values
hex2dec accepts and ignores internal underscores in the same manner as Tcl
8\.7\+ numbers e\.g hex2dec FF\_FF returns 65535
Leading and trailing underscores are ignored as a matter of implementation
convenience \- but this shouldn't be relied upon\.
Leading or trailing whitespace in each list member is allowed e\.g hex2dec "
F" returns 15
Internal whitespace e\.g "F F" is not permitted \- but a completely empty
element "" is allowed and will return 0
- <a name='3'></a>__dex2hex__ ?option value\.\.\.? *list\_decimals*
Convert a list of decimal integers to a list of hex values
\-width <int> can be used to make each hex value at least int characters
wide, with leading zeroes\.
\-case upper&#124;lower determines the case of the hex letters in the output
- <a name='4'></a>__log2__ *x*
log base2 of x
This uses a 'live' proc body \- the divisor for the change of base is
computed once at definition time
\(courtesy of RS
[https://wiki\.tcl\-lang\.org/page/Additional\+math\+functions](https://wiki\.tcl\-lang\.org/page/Additional\+math\+functions)\)
- <a name='5'></a>__logbase__ *b* *x*
log base b of x
This function uses expr's natural log and the change of base division\.
This means for example that we can get results like: logbase 10 1000 =
2\.9999999999999996
Use expr's log10\(\) function or tcl::mathfunc::log10 for base 10
- <a name='6'></a>__factors__ *x*
Return a sorted list of the positive factors of x where x > 0
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\)\*
This is a simple brute\-force implementation that iterates all numbers below
the square root of x to check the factors
Because the implementation is so simple \- the performance is very reasonable
for numbers below at least a few 10's of millions
See tcllib math::numtheory::factors for a more complex implementation \-
which seems to be slower for 'small' numbers
Comparisons were done with some numbers below 17 digits long
For seriously big numbers \- this simple algorithm would no doubt be
outperformed by more complex algorithms\.
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\.
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
\* Taking x=0; Notion of x being divisible by integer y being: There exists
an integer p such that x = py
In other mathematical contexts zero may be considered not to divide
anything\.
- <a name='7'></a>__oddFactors__ *x*
Return a list of odd integer factors of x, sorted in ascending order
- <a name='8'></a>__greatestFactorBelow__ *x*
Return the largest factor of x excluding itself
factor functions can be useful for console layout calculations
See Tcllib math::numtheory for more extensive implementations
- <a name='9'></a>__greatestOddFactorBelow__ *x*
Return the largest odd integer factor of x excluding x itself
- <a name='10'></a>__greatestOddFactor__ *x*
Return the largest odd integer factor of x
For an odd value of x \- this will always return x
- <a name='11'></a>__gcd__ *n* *m*
Return the greatest common divisor of m and n
Straight from Lars Hellström's math::numtheory library in Tcllib
Graphical use:
An a by b rectangle can be covered with square tiles of side\-length c,
only if c is a common divisor of a and b
- <a name='12'></a>__gcd__ *n* *m*
Return the lowest common multiple of m and n
Straight from Lars Hellström's math::numtheory library in Tcllib
- <a name='13'></a>__commonDivisors__ *x* *y*
Return a list of all the common factors of x and y
\(equivalent to factors of their gcd\)
- <a name='14'></a>__hasglobs__ *str*
Return a boolean indicating whether str contains any of the glob characters:
\* ? \[ \]
hasglobs uses append to preserve Tcls internal representation for str \- so
it should help avoid shimmering in the few cases where this may matter\.
- <a name='15'></a>__trimzero__ *number*
Return number with left\-hand\-side zeros trimmed off \- unless all zero
If number is all zero \- a single 0 is returned
- <a name='16'></a>__substring\_count__ *str* *substring*
Search str and return number of occurrences of substring
- <a name='17'></a>__dict\_merge\_ordered__ *defaults* *main*
The standard dict merge accepts multiple dicts with values from dicts to the
right \(2nd argument\) taking precedence\.
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\.
This function merges the two dicts whilst maintaining the key order of main
followed by defaults\.
- <a name='18'></a>__askuser__ *question*
A very basic utility to read an answer from stdin
The prompt is written to the terminal and then it waits for a user to type
something
stdin is temporarily configured to blocking and then put back in its
original state in case it wasn't already so\.
The user must hit enter to submit the response
The return value is the string if any that was typed prior to hitting enter\.
The question argument can be manually colourised using the various
punk::ansi funcitons
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"
}
# <a name='section4'></a>Internal
## <a name='subsection5'></a>Namespace punk::lib::system
Internal functions that are not part of the API
# <a name='keywords'></a>KEYWORDS
[lib](\.\./\.\./\.\./index\.md\#lib), [module](\.\./\.\./\.\./index\.md\#module),
[utility](\.\./\.\./\.\./index\.md\#utility)
# <a name='copyright'></a>COPYRIGHT
Copyright &copy; 2024

6
src/embedded/md/doc/files/punk/mix/commandset/_module_project-0.1.0.tm.md

@ -1,8 +1,8 @@
[//000000001]: # (punkshell\_module\_punk::mix::commandset::project \- pmix CLI commandset \- project)
[//000000001]: # (punkshell\_module\_punk::mix::commandset::project \- deck CLI commandset \- project)
[//000000002]: # (Generated from file '\_module\_project\-0\.1\.0\.tm\.man' by tcllib/doctools with format 'markdown')
[//000000003]: # (Copyright &copy; 2023)
[//000000004]: # (punkshell\_module\_punk::mix::commandset::project\(0\) 0\.1\.0 doc "pmix CLI commandset \- project")
[//000000004]: # (punkshell\_module\_punk::mix::commandset::project\(0\) 0\.1\.0 doc "deck CLI commandset \- project")
<hr> [ <a href="../../../../../toc.md">Main Table Of Contents</a> &#124;
<a href="../../../../toc.md">Table Of Contents</a> &#124; <a
@ -10,7 +10,7 @@ href="../../../../../index.md">Keyword Index</a> ] <hr>
# NAME
punkshell\_module\_punk::mix::commandset::project \- pmix commandset \- project
punkshell\_module\_punk::mix::commandset::project \- dec commandset \- project
# <a name='toc'></a>Table Of Contents

16
src/embedded/md/doc/toc.md

@ -3,6 +3,12 @@
# Table Of Contents \-\- doc
- [overtype\_module\_overtype](doc/files/\_module\_overtype\-1\.5\.2\.tm\.md) overtype text layout \- ansi aware
- [overtype\_module\_overtype](doc/files/\_module\_overtype\-1\.5\.3\.tm\.md) overtype text layout \- ansi aware
- [overtype\_module\_overtype](doc/files/\_module\_overtype\-1\.5\.1\.tm\.md) overtype text layout \- ansi aware
- [punkshell](doc/files/main\.md) punkshell \- Core
- [punkshell\_\_project\_changes](doc/files/project\_changes\.md) punkshell Changes
@ -15,10 +21,16 @@
- [punkshell\_module\_punk::cap](doc/files/punk/\_module\_cap\-0\.1\.0\.tm\.md) capability provider and handler plugin system
- [punkshell\_module\_punk::char](doc/files/punk/\_module\_char\-0\.1\.0\.tm\.md) character\-set and unicode utilities
- [punkshell\_module\_punk::encmime](doc/files/punk/\_module\_encmime\-0\.1\.0\.tm\.md) mime encodings related subset of tcllib mime
- [punkshell\_module\_punk::fileline](doc/files/punk/\_module\_fileline\-0\.1\.0\.tm\.md) file line\-handling utilities
- [punkshell\_module\_punk::flib](doc/files/punk/\_module\_flib\-0\.1\.0\.tm\.md) Module API
- [punkshell\_module\_punk::flib](doc/files/punk/\_module\_flib\-0\.1\.0\.tm\.md) flib experimental
- [punkshell\_module\_punk::lib](doc/files/punk/\_module\_lib\-0\.1\.0\.tm\.md) punk general utility functions
- [punkshell\_module\_punk::mix::commandset::project](doc/files/punk/mix/commandset/\_module\_project\-0\.1\.0\.tm\.md) pmix commandset \- project
- [punkshell\_module\_punk::mix::commandset::project](doc/files/punk/mix/commandset/\_module\_project\-0\.1\.0\.tm\.md) dec commandset \- project
- [punkshell\_module\_punk::path](doc/files/punk/\_module\_path\-0\.1\.0\.tm\.md) Filesystem path utilities

38
src/embedded/md/index.md

@ -5,7 +5,7 @@
----
[A](#cA) &#183; [C](#cC) &#183; [F](#cF) &#183; [M](#cM) &#183; [P](#cP) &#183; [R](#cR) &#183; [S](#cS) &#183; [T](#cT)
[A](#cA) &#183; [B](#cB) &#183; [C](#cC) &#183; [E](#cE) &#183; [F](#cF) &#183; [L](#cL) &#183; [M](#cM) &#183; [P](#cP) &#183; [R](#cR) &#183; [S](#cS) &#183; [T](#cT) &#183; [U](#cU)
----
@ -13,11 +13,18 @@
|||
|---|---|
|<a name='ansi'></a>ansi|[punkshell\_module\_punk::ansi](doc/files/punk/\_module\_ansi\-0\.1\.0\.tm\.md)|
|<a name='ansi'></a>ansi|[overtype\_module\_overtype](doc/files/\_module\_overtype\-1\.5\.2\.tm\.md) &#183; [overtype\_module\_overtype](doc/files/\_module\_overtype\-1\.5\.3\.tm\.md) &#183; [overtype\_module\_overtype](doc/files/\_module\_overtype\-1\.5\.1\.tm\.md) &#183; [punkshell\_module\_punk::ansi](doc/files/punk/\_module\_ansi\-0\.1\.0\.tm\.md)|
|<a name='args'></a>args|[punkshell\_module\_punk::args](doc/files/punk/\_module\_args\-0\.1\.0\.tm\.md)|
|<a name='arguments'></a>arguments|[punkshell\_module\_punk::args](doc/files/punk/\_module\_args\-0\.1\.0\.tm\.md)|
#### <a name='cB'></a>Keywords: B
|||
|---|---|
|<a name='bom'></a>BOM|[punkshell\_module\_punk::fileline](doc/files/punk/\_module\_fileline\-0\.1\.0\.tm\.md)|
#### <a name='cC'></a>Keywords: C
|||
@ -27,6 +34,15 @@
|<a name='console'></a>console|[punkshell\_module\_punk::ansi](doc/files/punk/\_module\_ansi\-0\.1\.0\.tm\.md)|
#### <a name='cE'></a>Keywords: E
|||
|---|---|
|<a name='encoding'></a>encoding|[punkshell\_module\_punk::fileline](doc/files/punk/\_module\_fileline\-0\.1\.0\.tm\.md)|
|<a name='encodings'></a>encodings|[punkshell\_module\_punk::char](doc/files/punk/\_module\_char\-0\.1\.0\.tm\.md) &#183; [punkshell\_module\_punk::encmime](doc/files/punk/\_module\_encmime\-0\.1\.0\.tm\.md)|
|<a name='experimental'></a>experimental|[punkshell\_module\_punk::flib](doc/files/punk/\_module\_flib\-0\.1\.0\.tm\.md)|
#### <a name='cF'></a>Keywords: F
|||
@ -35,11 +51,18 @@
|<a name='filesystem'></a>filesystem|[punkshell\_module\_punk::path](doc/files/punk/\_module\_path\-0\.1\.0\.tm\.md)|
#### <a name='cL'></a>Keywords: L
|||
|---|---|
|<a name='lib'></a>lib|[punkshell\_module\_punk::lib](doc/files/punk/\_module\_lib\-0\.1\.0\.tm\.md)|
#### <a name='cM'></a>Keywords: M
|||
|---|---|
|<a name='module'></a>module|[punkshell\_module\_punk::ansi](doc/files/punk/\_module\_ansi\-0\.1\.0\.tm\.md) &#183; [punkshell\_module\_punk::args](doc/files/punk/\_module\_args\-0\.1\.0\.tm\.md) &#183; [punkshell\_module\_punk::cap](doc/files/punk/\_module\_cap\-0\.1\.0\.tm\.md) &#183; [punkshell\_module\_punk::fileline](doc/files/punk/\_module\_fileline\-0\.1\.0\.tm\.md) &#183; [punkshell\_module\_punk::flib](doc/files/punk/\_module\_flib\-0\.1\.0\.tm\.md) &#183; [punkshell\_module\_punk::path](doc/files/punk/\_module\_path\-0\.1\.0\.tm\.md)|
|<a name='module'></a>module|[overtype\_module\_overtype](doc/files/\_module\_overtype\-1\.5\.2\.tm\.md) &#183; [overtype\_module\_overtype](doc/files/\_module\_overtype\-1\.5\.3\.tm\.md) &#183; [overtype\_module\_overtype](doc/files/\_module\_overtype\-1\.5\.1\.tm\.md) &#183; [punkshell\_module\_punk::ansi](doc/files/punk/\_module\_ansi\-0\.1\.0\.tm\.md) &#183; [punkshell\_module\_punk::args](doc/files/punk/\_module\_args\-0\.1\.0\.tm\.md) &#183; [punkshell\_module\_punk::cap](doc/files/punk/\_module\_cap\-0\.1\.0\.tm\.md) &#183; [punkshell\_module\_punk::char](doc/files/punk/\_module\_char\-0\.1\.0\.tm\.md) &#183; [punkshell\_module\_punk::encmime](doc/files/punk/\_module\_encmime\-0\.1\.0\.tm\.md) &#183; [punkshell\_module\_punk::fileline](doc/files/punk/\_module\_fileline\-0\.1\.0\.tm\.md) &#183; [punkshell\_module\_punk::flib](doc/files/punk/\_module\_flib\-0\.1\.0\.tm\.md) &#183; [punkshell\_module\_punk::lib](doc/files/punk/\_module\_lib\-0\.1\.0\.tm\.md) &#183; [punkshell\_module\_punk::path](doc/files/punk/\_module\_path\-0\.1\.0\.tm\.md)|
#### <a name='cP'></a>Keywords: P
@ -73,4 +96,11 @@
|||
|---|---|
|<a name='terminal'></a>terminal|[punkshell\_module\_punk::ansi](doc/files/punk/\_module\_ansi\-0\.1\.0\.tm\.md)|
|<a name='text'></a>text|[punkshell\_module\_punk::fileline](doc/files/punk/\_module\_fileline\-0\.1\.0\.tm\.md)|
|<a name='text'></a>text|[overtype\_module\_overtype](doc/files/\_module\_overtype\-1\.5\.2\.tm\.md) &#183; [overtype\_module\_overtype](doc/files/\_module\_overtype\-1\.5\.3\.tm\.md) &#183; [overtype\_module\_overtype](doc/files/\_module\_overtype\-1\.5\.1\.tm\.md) &#183; [punkshell\_module\_punk::fileline](doc/files/punk/\_module\_fileline\-0\.1\.0\.tm\.md)|
#### <a name='cU'></a>Keywords: U
|||
|---|---|
|<a name='utility'></a>utility|[punkshell\_module\_punk::lib](doc/files/punk/\_module\_lib\-0\.1\.0\.tm\.md)|

16
src/embedded/md/toc.md

@ -3,6 +3,12 @@
# Table Of Contents \-\- doc
- [overtype\_module\_overtype](doc/files/\_module\_overtype\-1\.5\.2\.tm\.md) overtype text layout \- ansi aware
- [overtype\_module\_overtype](doc/files/\_module\_overtype\-1\.5\.3\.tm\.md) overtype text layout \- ansi aware
- [overtype\_module\_overtype](doc/files/\_module\_overtype\-1\.5\.1\.tm\.md) overtype text layout \- ansi aware
- [punkshell](doc/files/main\.md) punkshell \- Core
- [punkshell\_\_project\_changes](doc/files/project\_changes\.md) punkshell Changes
@ -15,10 +21,16 @@
- [punkshell\_module\_punk::cap](doc/files/punk/\_module\_cap\-0\.1\.0\.tm\.md) capability provider and handler plugin system
- [punkshell\_module\_punk::char](doc/files/punk/\_module\_char\-0\.1\.0\.tm\.md) character\-set and unicode utilities
- [punkshell\_module\_punk::encmime](doc/files/punk/\_module\_encmime\-0\.1\.0\.tm\.md) mime encodings related subset of tcllib mime
- [punkshell\_module\_punk::fileline](doc/files/punk/\_module\_fileline\-0\.1\.0\.tm\.md) file line\-handling utilities
- [punkshell\_module\_punk::flib](doc/files/punk/\_module\_flib\-0\.1\.0\.tm\.md) Module API
- [punkshell\_module\_punk::flib](doc/files/punk/\_module\_flib\-0\.1\.0\.tm\.md) flib experimental
- [punkshell\_module\_punk::lib](doc/files/punk/\_module\_lib\-0\.1\.0\.tm\.md) punk general utility functions
- [punkshell\_module\_punk::mix::commandset::project](doc/files/punk/mix/commandset/\_module\_project\-0\.1\.0\.tm\.md) pmix commandset \- project
- [punkshell\_module\_punk::mix::commandset::project](doc/files/punk/mix/commandset/\_module\_project\-0\.1\.0\.tm\.md) dec commandset \- project
- [punkshell\_module\_punk::path](doc/files/punk/\_module\_path\-0\.1\.0\.tm\.md) Filesystem path utilities

10
src/embedded/www/.doc/tocdoc

@ -1,12 +1,18 @@
[toc_begin {Table Of Contents} doc]
[item doc/files/_module_overtype-1.5.1.tm.html overtype_module_overtype {overtype text layout - ansi aware}]
[item doc/files/_module_overtype-1.5.2.tm.html overtype_module_overtype {overtype text layout - ansi aware}]
[item doc/files/_module_overtype-1.5.3.tm.html overtype_module_overtype {overtype text layout - ansi aware}]
[item doc/files/main.html punkshell {punkshell - Core}]
[item doc/files/project_changes.html punkshell__project_changes {punkshell Changes}]
[item doc/files/project_intro.html punkshell__project_intro {Introduction to punkshell}]
[item doc/files/punk/_module_ansi-0.1.0.tm.html punkshell_module_punk::ansi {Ansi string functions}]
[item doc/files/punk/_module_args-0.1.0.tm.html punkshell_module_punk::args {args parsing}]
[item doc/files/punk/_module_cap-0.1.0.tm.html punkshell_module_punk::cap {capability provider and handler plugin system}]
[item doc/files/punk/_module_char-0.1.0.tm.html punkshell_module_punk::char {character-set and unicode utilities}]
[item doc/files/punk/_module_encmime-0.1.0.tm.html punkshell_module_punk::encmime {mime encodings related subset of tcllib mime}]
[item doc/files/punk/_module_fileline-0.1.0.tm.html punkshell_module_punk::fileline {file line-handling utilities}]
[item doc/files/punk/_module_flib-0.1.0.tm.html punkshell_module_punk::flib {Module API}]
[item doc/files/punk/mix/commandset/_module_project-0.1.0.tm.html punkshell_module_punk::mix::commandset::project {pmix commandset - project}]
[item doc/files/punk/_module_flib-0.1.0.tm.html punkshell_module_punk::flib {flib experimental}]
[item doc/files/punk/_module_lib-0.1.0.tm.html punkshell_module_punk::lib {punk general utility functions}]
[item doc/files/punk/mix/commandset/_module_project-0.1.0.tm.html punkshell_module_punk::mix::commandset::project {dec commandset - project}]
[item doc/files/punk/_module_path-0.1.0.tm.html punkshell_module_punk::path {Filesystem path utilities}]
[toc_end]

2
src/embedded/www/.idx

File diff suppressed because one or more lines are too long

2
src/embedded/www/.toc

@ -1 +1 @@
doc {doc/toc {{doc/files/punk/_module_fileline-0.1.0.tm.html punkshell_module_punk::fileline {file line-handling utilities}} {doc/files/punk/_module_cap-0.1.0.tm.html punkshell_module_punk::cap {capability provider and handler plugin system}} {doc/files/project_intro.html punkshell__project_intro {Introduction to punkshell}} {doc/files/punk/_module_path-0.1.0.tm.html punkshell_module_punk::path {Filesystem path utilities}} {doc/files/punk/_module_flib-0.1.0.tm.html punkshell_module_punk::flib {Module API}} {doc/files/punk/_module_args-0.1.0.tm.html punkshell_module_punk::args {args parsing}} {doc/files/project_changes.html punkshell__project_changes {punkshell Changes}} {doc/files/punk/mix/commandset/_module_project-0.1.0.tm.html punkshell_module_punk::mix::commandset::project {pmix commandset - project}} {doc/files/punk/_module_ansi-0.1.0.tm.html punkshell_module_punk::ansi {Ansi string functions}} {doc/files/main.html punkshell {punkshell - Core}}}}
doc {doc/toc {{doc/files/punk/_module_cap-0.1.0.tm.html punkshell_module_punk::cap {capability provider and handler plugin system}} {doc/files/punk/_module_path-0.1.0.tm.html punkshell_module_punk::path {Filesystem path utilities}} {doc/files/punk/_module_args-0.1.0.tm.html punkshell_module_punk::args {args parsing}} {doc/files/project_changes.html punkshell__project_changes {punkshell Changes}} {doc/files/punk/_module_encmime-0.1.0.tm.html punkshell_module_punk::encmime {mime encodings related subset of tcllib mime}} {doc/files/punk/_module_char-0.1.0.tm.html punkshell_module_punk::char {character-set and unicode utilities}} {doc/files/punk/_module_lib-0.1.0.tm.html punkshell_module_punk::lib {punk general utility functions}} {doc/files/_module_overtype-1.5.1.tm.html overtype_module_overtype {overtype text layout - ansi aware}} {doc/files/project_intro.html punkshell__project_intro {Introduction to punkshell}} {doc/files/_module_overtype-1.5.2.tm.html overtype_module_overtype {overtype text layout - ansi aware}} {doc/files/_module_overtype-1.5.3.tm.html overtype_module_overtype {overtype text layout - ansi aware}} {doc/files/main.html punkshell {punkshell - Core}} {doc/files/punk/_module_flib-0.1.0.tm.html punkshell_module_punk::flib {flib experimental}} {doc/files/punk/mix/commandset/_module_project-0.1.0.tm.html punkshell_module_punk::mix::commandset::project {dec commandset - project}} {doc/files/punk/_module_fileline-0.1.0.tm.html punkshell_module_punk::fileline {file line-handling utilities}} {doc/files/punk/_module_ansi-0.1.0.tm.html punkshell_module_punk::ansi {Ansi string functions}}}}

2
src/embedded/www/.xrf

File diff suppressed because one or more lines are too long

161
src/embedded/www/doc/files/_module_overtype-1.5.1.tm.html

@ -0,0 +1,161 @@
<!DOCTYPE html><html><head>
<title>overtype_module_overtype - overtype text layout</title>
<style type="text/css"><!--
HTML {
background: #FFFFFF;
color: black;
}
BODY {
background: #FFFFFF;
color: black;
}
DIV.doctools {
margin-left: 10%;
margin-right: 10%;
}
DIV.doctools H1,DIV.doctools H2 {
margin-left: -5%;
}
H1, H2, H3, H4 {
margin-top: 1em;
font-family: sans-serif;
font-size: large;
color: #005A9C;
background: transparent;
text-align: left;
}
H1.doctools_title {
text-align: center;
}
UL,OL {
margin-right: 0em;
margin-top: 3pt;
margin-bottom: 3pt;
}
UL LI {
list-style: disc;
}
OL LI {
list-style: decimal;
}
DT {
padding-top: 1ex;
}
UL.doctools_toc,UL.doctools_toc UL, UL.doctools_toc UL UL {
font: normal 12pt/14pt sans-serif;
list-style: none;
}
LI.doctools_section, LI.doctools_subsection {
list-style: none;
margin-left: 0em;
text-indent: 0em;
padding: 0em;
}
PRE {
display: block;
font-family: monospace;
white-space: pre;
margin: 0%;
padding-top: 0.5ex;
padding-bottom: 0.5ex;
padding-left: 1ex;
padding-right: 1ex;
width: 100%;
}
PRE.doctools_example {
color: black;
background: #f5dcb3;
border: 1px solid black;
}
UL.doctools_requirements LI, UL.doctools_syntax LI {
list-style: none;
margin-left: 0em;
text-indent: 0em;
padding: 0em;
}
DIV.doctools_synopsis {
color: black;
background: #80ffff;
border: 1px solid black;
font-family: serif;
margin-top: 1em;
margin-bottom: 1em;
}
UL.doctools_syntax {
margin-top: 1em;
border-top: 1px solid black;
}
UL.doctools_requirements {
margin-bottom: 1em;
border-bottom: 1px solid black;
}
--></style>
</head>
<!-- Generated from file '_module_overtype-1.5.1.tm.man' by tcllib/doctools with format 'html'
-->
<!-- Copyright &amp;copy; 2024
-->
<!-- overtype_module_overtype.0
-->
<body><hr> [
<a href="../../toc.html">Main Table Of Contents</a>
&#124; <a href="../toc.html">Table Of Contents</a>
&#124; <a href="../../index.html">Keyword Index</a>
] <hr>
<div class="doctools">
<h1 class="doctools_title">overtype_module_overtype(0) 1.5.1 doc &quot;overtype text layout&quot;</h1>
<div id="name" class="doctools_section"><h2><a name="name">Name</a></h2>
<p>overtype_module_overtype - overtype text layout - ansi aware</p>
</div>
<div id="toc" class="doctools_section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="doctools_toc">
<li class="doctools_section"><a href="#toc">Table Of Contents</a></li>
<li class="doctools_section"><a href="#synopsis">Synopsis</a></li>
<li class="doctools_section"><a href="#section1">Description</a></li>
<li class="doctools_section"><a href="#section2">Overview</a>
<ul>
<li class="doctools_subsection"><a href="#subsection1">Concepts</a></li>
<li class="doctools_subsection"><a href="#subsection2">dependencies</a></li>
</ul>
</li>
<li class="doctools_section"><a href="#section3">API</a></li>
<li class="doctools_section"><a href="#keywords">Keywords</a></li>
<li class="doctools_section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="doctools_section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="doctools_synopsis">
<ul class="doctools_requirements">
<li>package require <b class="pkgname">overtype</b></li>
</ul>
</div>
</div>
<div id="section1" class="doctools_section"><h2><a name="section1">Description</a></h2>
<p>-</p>
</div>
<div id="section2" class="doctools_section"><h2><a name="section2">Overview</a></h2>
<p>overview of overtype</p>
<div id="subsection1" class="doctools_subsection"><h3><a name="subsection1">Concepts</a></h3>
<p>-</p>
</div>
<div id="subsection2" class="doctools_subsection"><h3><a name="subsection2">dependencies</a></h3>
<p>packages used by overtype</p>
<ul class="doctools_itemized">
<li><p><b class="package">Tcl 8.6</b></p></li>
<li><p><b class="package">textutil</b></p></li>
<li><p><b class="package">punk::ansi</b></p>
<p>- required to detect, split, strip and calculate lengths of text possibly containing ansi codes</p></li>
<li><p><b class="package">punk::char</b></p>
<p>- box drawing - and also unicode character width determination for proper layout of text with double-column-width chars</p></li>
</ul>
</div>
</div>
<div id="section3" class="doctools_section"><h2><a name="section3">API</a></h2>
</div>
<div id="keywords" class="doctools_section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../index.html#ansi">ansi</a>, <a href="../../index.html#module">module</a>, <a href="../../index.html#text">text</a></p>
</div>
<div id="copyright" class="doctools_section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2024</p>
</div>
</div></body></html>

161
src/embedded/www/doc/files/_module_overtype-1.5.2.tm.html

@ -0,0 +1,161 @@
<!DOCTYPE html><html><head>
<title>overtype_module_overtype - overtype text layout</title>
<style type="text/css"><!--
HTML {
background: #FFFFFF;
color: black;
}
BODY {
background: #FFFFFF;
color: black;
}
DIV.doctools {
margin-left: 10%;
margin-right: 10%;
}
DIV.doctools H1,DIV.doctools H2 {
margin-left: -5%;
}
H1, H2, H3, H4 {
margin-top: 1em;
font-family: sans-serif;
font-size: large;
color: #005A9C;
background: transparent;
text-align: left;
}
H1.doctools_title {
text-align: center;
}
UL,OL {
margin-right: 0em;
margin-top: 3pt;
margin-bottom: 3pt;
}
UL LI {
list-style: disc;
}
OL LI {
list-style: decimal;
}
DT {
padding-top: 1ex;
}
UL.doctools_toc,UL.doctools_toc UL, UL.doctools_toc UL UL {
font: normal 12pt/14pt sans-serif;
list-style: none;
}
LI.doctools_section, LI.doctools_subsection {
list-style: none;
margin-left: 0em;
text-indent: 0em;
padding: 0em;
}
PRE {
display: block;
font-family: monospace;
white-space: pre;
margin: 0%;
padding-top: 0.5ex;
padding-bottom: 0.5ex;
padding-left: 1ex;
padding-right: 1ex;
width: 100%;
}
PRE.doctools_example {
color: black;
background: #f5dcb3;
border: 1px solid black;
}
UL.doctools_requirements LI, UL.doctools_syntax LI {
list-style: none;
margin-left: 0em;
text-indent: 0em;
padding: 0em;
}
DIV.doctools_synopsis {
color: black;
background: #80ffff;
border: 1px solid black;
font-family: serif;
margin-top: 1em;
margin-bottom: 1em;
}
UL.doctools_syntax {
margin-top: 1em;
border-top: 1px solid black;
}
UL.doctools_requirements {
margin-bottom: 1em;
border-bottom: 1px solid black;
}
--></style>
</head>
<!-- Generated from file '_module_overtype-1.5.2.tm.man' by tcllib/doctools with format 'html'
-->
<!-- Copyright &amp;copy; 2024
-->
<!-- overtype_module_overtype.0
-->
<body><hr> [
<a href="../../toc.html">Main Table Of Contents</a>
&#124; <a href="../toc.html">Table Of Contents</a>
&#124; <a href="../../index.html">Keyword Index</a>
] <hr>
<div class="doctools">
<h1 class="doctools_title">overtype_module_overtype(0) 1.5.2 doc &quot;overtype text layout&quot;</h1>
<div id="name" class="doctools_section"><h2><a name="name">Name</a></h2>
<p>overtype_module_overtype - overtype text layout - ansi aware</p>
</div>
<div id="toc" class="doctools_section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="doctools_toc">
<li class="doctools_section"><a href="#toc">Table Of Contents</a></li>
<li class="doctools_section"><a href="#synopsis">Synopsis</a></li>
<li class="doctools_section"><a href="#section1">Description</a></li>
<li class="doctools_section"><a href="#section2">Overview</a>
<ul>
<li class="doctools_subsection"><a href="#subsection1">Concepts</a></li>
<li class="doctools_subsection"><a href="#subsection2">dependencies</a></li>
</ul>
</li>
<li class="doctools_section"><a href="#section3">API</a></li>
<li class="doctools_section"><a href="#keywords">Keywords</a></li>
<li class="doctools_section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="doctools_section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="doctools_synopsis">
<ul class="doctools_requirements">
<li>package require <b class="pkgname">overtype</b></li>
</ul>
</div>
</div>
<div id="section1" class="doctools_section"><h2><a name="section1">Description</a></h2>
<p>-</p>
</div>
<div id="section2" class="doctools_section"><h2><a name="section2">Overview</a></h2>
<p>overview of overtype</p>
<div id="subsection1" class="doctools_subsection"><h3><a name="subsection1">Concepts</a></h3>
<p>-</p>
</div>
<div id="subsection2" class="doctools_subsection"><h3><a name="subsection2">dependencies</a></h3>
<p>packages used by overtype</p>
<ul class="doctools_itemized">
<li><p><b class="package">Tcl 8.6</b></p></li>
<li><p><b class="package">textutil</b></p></li>
<li><p><b class="package">punk::ansi</b></p>
<p>- required to detect, split, strip and calculate lengths of text possibly containing ansi codes</p></li>
<li><p><b class="package">punk::char</b></p>
<p>- box drawing - and also unicode character width determination for proper layout of text with double-column-width chars</p></li>
</ul>
</div>
</div>
<div id="section3" class="doctools_section"><h2><a name="section3">API</a></h2>
</div>
<div id="keywords" class="doctools_section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../index.html#ansi">ansi</a>, <a href="../../index.html#module">module</a>, <a href="../../index.html#text">text</a></p>
</div>
<div id="copyright" class="doctools_section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2024</p>
</div>
</div></body></html>

161
src/embedded/www/doc/files/_module_overtype-1.5.3.tm.html

@ -0,0 +1,161 @@
<!DOCTYPE html><html><head>
<title>overtype_module_overtype - overtype text layout</title>
<style type="text/css"><!--
HTML {
background: #FFFFFF;
color: black;
}
BODY {
background: #FFFFFF;
color: black;
}
DIV.doctools {
margin-left: 10%;
margin-right: 10%;
}
DIV.doctools H1,DIV.doctools H2 {
margin-left: -5%;
}
H1, H2, H3, H4 {
margin-top: 1em;
font-family: sans-serif;
font-size: large;
color: #005A9C;
background: transparent;
text-align: left;
}
H1.doctools_title {
text-align: center;
}
UL,OL {
margin-right: 0em;
margin-top: 3pt;
margin-bottom: 3pt;
}
UL LI {
list-style: disc;
}
OL LI {
list-style: decimal;
}
DT {
padding-top: 1ex;
}
UL.doctools_toc,UL.doctools_toc UL, UL.doctools_toc UL UL {
font: normal 12pt/14pt sans-serif;
list-style: none;
}
LI.doctools_section, LI.doctools_subsection {
list-style: none;
margin-left: 0em;
text-indent: 0em;
padding: 0em;
}
PRE {
display: block;
font-family: monospace;
white-space: pre;
margin: 0%;
padding-top: 0.5ex;
padding-bottom: 0.5ex;
padding-left: 1ex;
padding-right: 1ex;
width: 100%;
}
PRE.doctools_example {
color: black;
background: #f5dcb3;
border: 1px solid black;
}
UL.doctools_requirements LI, UL.doctools_syntax LI {
list-style: none;
margin-left: 0em;
text-indent: 0em;
padding: 0em;
}
DIV.doctools_synopsis {
color: black;
background: #80ffff;
border: 1px solid black;
font-family: serif;
margin-top: 1em;
margin-bottom: 1em;
}
UL.doctools_syntax {
margin-top: 1em;
border-top: 1px solid black;
}
UL.doctools_requirements {
margin-bottom: 1em;
border-bottom: 1px solid black;
}
--></style>
</head>
<!-- Generated from file '_module_overtype-1.5.3.tm.man' by tcllib/doctools with format 'html'
-->
<!-- Copyright &amp;copy; 2024
-->
<!-- overtype_module_overtype.0
-->
<body><hr> [
<a href="../../toc.html">Main Table Of Contents</a>
&#124; <a href="../toc.html">Table Of Contents</a>
&#124; <a href="../../index.html">Keyword Index</a>
] <hr>
<div class="doctools">
<h1 class="doctools_title">overtype_module_overtype(0) 1.5.3 doc &quot;overtype text layout&quot;</h1>
<div id="name" class="doctools_section"><h2><a name="name">Name</a></h2>
<p>overtype_module_overtype - overtype text layout - ansi aware</p>
</div>
<div id="toc" class="doctools_section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="doctools_toc">
<li class="doctools_section"><a href="#toc">Table Of Contents</a></li>
<li class="doctools_section"><a href="#synopsis">Synopsis</a></li>
<li class="doctools_section"><a href="#section1">Description</a></li>
<li class="doctools_section"><a href="#section2">Overview</a>
<ul>
<li class="doctools_subsection"><a href="#subsection1">Concepts</a></li>
<li class="doctools_subsection"><a href="#subsection2">dependencies</a></li>
</ul>
</li>
<li class="doctools_section"><a href="#section3">API</a></li>
<li class="doctools_section"><a href="#keywords">Keywords</a></li>
<li class="doctools_section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="doctools_section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="doctools_synopsis">
<ul class="doctools_requirements">
<li>package require <b class="pkgname">overtype</b></li>
</ul>
</div>
</div>
<div id="section1" class="doctools_section"><h2><a name="section1">Description</a></h2>
<p>-</p>
</div>
<div id="section2" class="doctools_section"><h2><a name="section2">Overview</a></h2>
<p>overview of overtype</p>
<div id="subsection1" class="doctools_subsection"><h3><a name="subsection1">Concepts</a></h3>
<p>-</p>
</div>
<div id="subsection2" class="doctools_subsection"><h3><a name="subsection2">dependencies</a></h3>
<p>packages used by overtype</p>
<ul class="doctools_itemized">
<li><p><b class="package">Tcl 8.6</b></p></li>
<li><p><b class="package">textutil</b></p></li>
<li><p><b class="package">punk::ansi</b></p>
<p>- required to detect, split, strip and calculate lengths of text possibly containing ansi codes</p></li>
<li><p><b class="package">punk::char</b></p>
<p>- box drawing - and also unicode character width determination for proper layout of text with double-column-width chars</p></li>
</ul>
</div>
</div>
<div id="section3" class="doctools_section"><h2><a name="section3">API</a></h2>
</div>
<div id="keywords" class="doctools_section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../index.html#ansi">ansi</a>, <a href="../../index.html#module">module</a>, <a href="../../index.html#text">text</a></p>
</div>
<div id="copyright" class="doctools_section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2024</p>
</div>
</div></body></html>

3
src/embedded/www/doc/files/punk/_module_args-0.1.0.tm.html

@ -209,7 +209,8 @@
<p>ARGUMENTS:</p>
<dl class="doctools_arguments">
<dt>multiline-string <i class="arg">optionspecs</i></dt>
<dd><p>This a block of text with records delimited by newlines (lf or crlf)</p>
<dd><p>This a block of text with records delimited by newlines (lf or crlf) - but with multiline values allowed if properly quoted/braced</p>
<p>'info complete' is used to determine if a record spans multiple lines due to multiline values</p>
<p>Each optionspec line must be of the form:</p>
<p>-optionname -key val -key2 val2...</p>
<p>where the valid keys for each option specification are: -default -type -range -choices -optional</p></dd>

161
src/embedded/www/doc/files/punk/_module_char-0.1.0.tm.html

@ -0,0 +1,161 @@
<!DOCTYPE html><html><head>
<title>punkshell_module_punk::char - character-set nad unicode</title>
<style type="text/css"><!--
HTML {
background: #FFFFFF;
color: black;
}
BODY {
background: #FFFFFF;
color: black;
}
DIV.doctools {
margin-left: 10%;
margin-right: 10%;
}
DIV.doctools H1,DIV.doctools H2 {
margin-left: -5%;
}
H1, H2, H3, H4 {
margin-top: 1em;
font-family: sans-serif;
font-size: large;
color: #005A9C;
background: transparent;
text-align: left;
}
H1.doctools_title {
text-align: center;
}
UL,OL {
margin-right: 0em;
margin-top: 3pt;
margin-bottom: 3pt;
}
UL LI {
list-style: disc;
}
OL LI {
list-style: decimal;
}
DT {
padding-top: 1ex;
}
UL.doctools_toc,UL.doctools_toc UL, UL.doctools_toc UL UL {
font: normal 12pt/14pt sans-serif;
list-style: none;
}
LI.doctools_section, LI.doctools_subsection {
list-style: none;
margin-left: 0em;
text-indent: 0em;
padding: 0em;
}
PRE {
display: block;
font-family: monospace;
white-space: pre;
margin: 0%;
padding-top: 0.5ex;
padding-bottom: 0.5ex;
padding-left: 1ex;
padding-right: 1ex;
width: 100%;
}
PRE.doctools_example {
color: black;
background: #f5dcb3;
border: 1px solid black;
}
UL.doctools_requirements LI, UL.doctools_syntax LI {
list-style: none;
margin-left: 0em;
text-indent: 0em;
padding: 0em;
}
DIV.doctools_synopsis {
color: black;
background: #80ffff;
border: 1px solid black;
font-family: serif;
margin-top: 1em;
margin-bottom: 1em;
}
UL.doctools_syntax {
margin-top: 1em;
border-top: 1px solid black;
}
UL.doctools_requirements {
margin-bottom: 1em;
border-bottom: 1px solid black;
}
--></style>
</head>
<!-- Generated from file '_module_char-0.1.0.tm.man' by tcllib/doctools with format 'html'
-->
<!-- Copyright &amp;copy; 2024
-->
<!-- punkshell_module_punk::char.0
-->
<body><hr> [
<a href="../../../toc.html">Main Table Of Contents</a>
&#124; <a href="../../toc.html">Table Of Contents</a>
&#124; <a href="../../../index.html">Keyword Index</a>
] <hr>
<div class="doctools">
<h1 class="doctools_title">punkshell_module_punk::char(0) 0.1.0 doc &quot;character-set nad unicode&quot;</h1>
<div id="name" class="doctools_section"><h2><a name="name">Name</a></h2>
<p>punkshell_module_punk::char - character-set and unicode utilities</p>
</div>
<div id="toc" class="doctools_section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="doctools_toc">
<li class="doctools_section"><a href="#toc">Table Of Contents</a></li>
<li class="doctools_section"><a href="#synopsis">Synopsis</a></li>
<li class="doctools_section"><a href="#section1">Description</a></li>
<li class="doctools_section"><a href="#section2">Overview</a>
<ul>
<li class="doctools_subsection"><a href="#subsection1">Concepts</a></li>
<li class="doctools_subsection"><a href="#subsection2">dependencies</a></li>
</ul>
</li>
<li class="doctools_section"><a href="#section3">API</a></li>
<li class="doctools_section"><a href="#keywords">Keywords</a></li>
<li class="doctools_section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="doctools_section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="doctools_synopsis">
<ul class="doctools_requirements">
<li>package require <b class="pkgname">punk::char</b></li>
</ul>
</div>
</div>
<div id="section1" class="doctools_section"><h2><a name="section1">Description</a></h2>
</div>
<div id="section2" class="doctools_section"><h2><a name="section2">Overview</a></h2>
<p>overview of punk::char</p>
<div id="subsection1" class="doctools_subsection"><h3><a name="subsection1">Concepts</a></h3>
<p>-</p>
</div>
<div id="subsection2" class="doctools_subsection"><h3><a name="subsection2">dependencies</a></h3>
<p>packages used by punk::char</p>
<ul class="doctools_itemized">
<li><p><b class="package">Tcl 8.6</b></p></li>
<li><p><b class="package">overtype</b></p>
<p>-</p></li>
<li><p><b class="package">textblock</b></p>
<p>-</p></li>
<li><p><b class="package"><a href="../../../index.html#console">console</a></b></p>
<p>-</p></li>
</ul>
</div>
</div>
<div id="section3" class="doctools_section"><h2><a name="section3">API</a></h2>
</div>
<div id="keywords" class="doctools_section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../index.html#encodings">encodings</a>, <a href="../../../index.html#module">module</a></p>
</div>
<div id="copyright" class="doctools_section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2024</p>
</div>
</div></body></html>

211
src/embedded/www/doc/files/punk/_module_encmime-0.1.0.tm.html

@ -0,0 +1,211 @@
<!DOCTYPE html><html><head>
<title>punkshell_module_punk::encmime - mime encoding names and aliases</title>
<style type="text/css"><!--
HTML {
background: #FFFFFF;
color: black;
}
BODY {
background: #FFFFFF;
color: black;
}
DIV.doctools {
margin-left: 10%;
margin-right: 10%;
}
DIV.doctools H1,DIV.doctools H2 {
margin-left: -5%;
}
H1, H2, H3, H4 {
margin-top: 1em;
font-family: sans-serif;
font-size: large;
color: #005A9C;
background: transparent;
text-align: left;
}
H1.doctools_title {
text-align: center;
}
UL,OL {
margin-right: 0em;
margin-top: 3pt;
margin-bottom: 3pt;
}
UL LI {
list-style: disc;
}
OL LI {
list-style: decimal;
}
DT {
padding-top: 1ex;
}
UL.doctools_toc,UL.doctools_toc UL, UL.doctools_toc UL UL {
font: normal 12pt/14pt sans-serif;
list-style: none;
}
LI.doctools_section, LI.doctools_subsection {
list-style: none;
margin-left: 0em;
text-indent: 0em;
padding: 0em;
}
PRE {
display: block;
font-family: monospace;
white-space: pre;
margin: 0%;
padding-top: 0.5ex;
padding-bottom: 0.5ex;
padding-left: 1ex;
padding-right: 1ex;
width: 100%;
}
PRE.doctools_example {
color: black;
background: #f5dcb3;
border: 1px solid black;
}
UL.doctools_requirements LI, UL.doctools_syntax LI {
list-style: none;
margin-left: 0em;
text-indent: 0em;
padding: 0em;
}
DIV.doctools_synopsis {
color: black;
background: #80ffff;
border: 1px solid black;
font-family: serif;
margin-top: 1em;
margin-bottom: 1em;
}
UL.doctools_syntax {
margin-top: 1em;
border-top: 1px solid black;
}
UL.doctools_requirements {
margin-bottom: 1em;
border-bottom: 1px solid black;
}
--></style>
</head>
<!-- Generated from file '_module_encmime-0.1.0.tm.man' by tcllib/doctools with format 'html'
-->
<!-- Copyright &amp;copy; 2024
-->
<!-- punkshell_module_punk::encmime.0
-->
<body><hr> [
<a href="../../../toc.html">Main Table Of Contents</a>
&#124; <a href="../../toc.html">Table Of Contents</a>
&#124; <a href="../../../index.html">Keyword Index</a>
] <hr>
<div class="doctools">
<h1 class="doctools_title">punkshell_module_punk::encmime(0) 0.1.0 doc &quot;mime encoding names and aliases&quot;</h1>
<div id="name" class="doctools_section"><h2><a name="name">Name</a></h2>
<p>punkshell_module_punk::encmime - mime encodings related subset of tcllib mime</p>
</div>
<div id="toc" class="doctools_section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="doctools_toc">
<li class="doctools_section"><a href="#toc">Table Of Contents</a></li>
<li class="doctools_section"><a href="#synopsis">Synopsis</a></li>
<li class="doctools_section"><a href="#section1">Description</a></li>
<li class="doctools_section"><a href="#section2">Overview</a>
<ul>
<li class="doctools_subsection"><a href="#subsection1">Concepts</a></li>
<li class="doctools_subsection"><a href="#subsection2">dependencies</a></li>
</ul>
</li>
<li class="doctools_section"><a href="#section3">API</a>
<ul>
<li class="doctools_subsection"><a href="#subsection3">Namespace punk::encmime::class</a></li>
<li class="doctools_subsection"><a href="#subsection4">Namespace punk::encmime</a></li>
<li class="doctools_subsection"><a href="#subsection5">Namespace punk::encmime::lib</a></li>
</ul>
</li>
<li class="doctools_section"><a href="#section4">Internal</a>
<ul>
<li class="doctools_subsection"><a href="#subsection6">Namespace punk::encmime::system</a></li>
</ul>
</li>
<li class="doctools_section"><a href="#keywords">Keywords</a></li>
<li class="doctools_section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="doctools_section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="doctools_synopsis">
<ul class="doctools_requirements">
<li>package require <b class="pkgname">punk::encmime</b></li>
</ul>
<ul class="doctools_syntax">
<li><a href="#1">mapencoding <i class="arg">enc</i></a></li>
<li><a href="#2">reversemapencoding <i class="arg">mimeType</i></a></li>
</ul>
</div>
</div>
<div id="section1" class="doctools_section"><h2><a name="section1">Description</a></h2>
<p>This is a workaround package to provide the mime encoding names used in tcllib's mime package - without additional dependencies</p>
<p>tcllib mime loads either Trf or tcl::memchan functions. punk::encmime needs to work in a context where tcllib may not yet be loaded/available, and even these few dependencies are too much.</p>
<p>MAINTENANCE NOTE: The data in this module needs to be checked against the latest tcllib mime package</p>
<p>taken from tcllib mime version: 1.7.2 in 2024</p>
</div>
<div id="section2" class="doctools_section"><h2><a name="section2">Overview</a></h2>
<p>overview of punk::encmime</p>
<div id="subsection1" class="doctools_subsection"><h3><a name="subsection1">Concepts</a></h3>
<p>Where practical - the actual tcllib mime package should be used instead.</p>
<p>This set of encoding related functions is a snapshot of the data from the mime package - and may not be up to date.</p>
<p>This pseudo-package was created to minimize dependencies for punk::char and punk::overtype</p>
</div>
<div id="subsection2" class="doctools_subsection"><h3><a name="subsection2">dependencies</a></h3>
<p>packages used by punk::encmime</p>
<ul class="doctools_itemized">
<li><p><b class="package">Tcl 8.6</b></p></li>
</ul>
</div>
</div>
<div id="section3" class="doctools_section"><h2><a name="section3">API</a></h2>
<div id="subsection3" class="doctools_subsection"><h3><a name="subsection3">Namespace punk::encmime::class</a></h3>
<p>class definitions</p>
<ol class="doctools_enumerated">
</ol>
</div>
<div id="subsection4" class="doctools_subsection"><h3><a name="subsection4">Namespace punk::encmime</a></h3>
<p>Core API functions for punk::encmime</p>
<dl class="doctools_definitions">
<dt><a name="1">mapencoding <i class="arg">enc</i></a></dt>
<dd><p>maps tcl encodings onto the proper names for their MIME charset type.</p>
<p>This is only done for encodings whose charset types were known.</p>
<p>The remaining encodings return {} for now.</p>
<p>NOTE: consider using tcllib's mime::mapencoding instead if mime package available</p></dd>
<dt><a name="2">reversemapencoding <i class="arg">mimeType</i></a></dt>
<dd><p>mime::reversemapencodings maps MIME charset types onto tcl encoding names.</p>
<p>Returns the tcl encoding name for the specified mime charset, or {} if none is known</p>
<p>Arguments:</p>
<dl class="doctools_arguments">
<dt>string <i class="arg">mimeType</i></dt>
<dd><p>The MIME charset to convert into a tcl encoding type.</p></dd>
</dl>
<p>NOTE: consider using tcllib's mime::reversemapencoding instead if mime package available</p></dd>
</dl>
</div>
<div id="subsection5" class="doctools_subsection"><h3><a name="subsection5">Namespace punk::encmime::lib</a></h3>
<p>Secondary functions that are part of the API</p>
<dl class="doctools_definitions">
</dl>
</div>
</div>
<div id="section4" class="doctools_section"><h2><a name="section4">Internal</a></h2>
<div id="subsection6" class="doctools_subsection"><h3><a name="subsection6">Namespace punk::encmime::system</a></h3>
<p>Internal functions that are not part of the API</p>
</div>
</div>
<div id="keywords" class="doctools_section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../index.html#encodings">encodings</a>, <a href="../../../index.html#module">module</a></p>
</div>
<div id="copyright" class="doctools_section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2024</p>
</div>
</div></body></html>

36
src/embedded/www/doc/files/punk/_module_fileline-0.1.0.tm.html

@ -165,10 +165,11 @@
<li><a href="#20">class::textinfo <b class="method">numeric_chunkrange</b> <i class="arg">startidx</i> <i class="arg">endidx</i></a></li>
<li><a href="#21">class::textinfo <b class="method">normalize_indices</b> <i class="arg">startidx</i> <i class="arg">endidx</i> <i class="arg">max</i></a></li>
<li><a href="#22">class::textinfo <b class="method">regenerate_lines</b></a></li>
<li><a href="#23"><b class="function">lib::range_spans_chunk_boundaries</b> <i class="arg">start</i> <i class="arg">end</i> <i class="arg">chunksize</i></a></li>
<li><a href="#24"><b class="function">ansi::a</b></a></li>
<li><a href="#25"><b class="function">ansi::a+</b></a></li>
<li><a href="#26"><b class="function">ansi::stripansi</b></a></li>
<li><a href="#23">get_textinfo <span class="opt">?option value...?</span> <span class="opt">?datachunk?</span></a></li>
<li><a href="#24"><b class="function">lib::range_spans_chunk_boundaries</b> <i class="arg">start</i> <i class="arg">end</i> <i class="arg">chunksize</i></a></li>
<li><a href="#25"><b class="function">ansi::a</b></a></li>
<li><a href="#26"><b class="function">ansi::a+</b></a></li>
<li><a href="#27"><b class="function">ansi::stripansi</b></a></li>
</ul>
</div>
</div>
@ -179,7 +180,9 @@
<p>Utilities for in-memory analysis of text file data as both line data and byte/char-counted data whilst preserving the line-endings (even if mixed)</p>
<p>This is important for certain text files where examining the number of chars/bytes is important</p>
<p>For example - windows .cmd/.bat files need some byte counting to determine if labels lie on chunk boundaries and need to be moved.</p>
<p>Despite including the word 'file', the library doesn't deal with reading/writing to the filesystem. It is for operating on text-file like data.</p>
<p>This chunk-size counting will depend on the character encoding.</p>
<p>Despite including the word 'file', the library doesn't necessarily deal with reading/writing to the filesystem -</p>
<p>The raw data can be supplied as a string, or loaded from a file using punk::fileline::get_textinfo -file &lt;filename&gt;</p>
<div id="subsection1" class="doctools_subsection"><h3><a name="subsection1">Concepts</a></h3>
<p>A chunk of textfile data (possibly representing a whole file - but usually at least a complete set of lines) is loaded into a punk::fileline::class::textinfo instance at object creation.</p>
<pre class="doctools_example">
@ -326,12 +329,25 @@ or
<div id="subsection6" class="doctools_subsection"><h3><a name="subsection6">Namespace punk::fileline</a></h3>
<p>Core API functions for punk::fileline</p>
<dl class="doctools_definitions">
<dt><a name="23">get_textinfo <span class="opt">?option value...?</span> <span class="opt">?datachunk?</span></a></dt>
<dd><p>Returns textinfo object instance representing data in string datachunk or if -file filename supplied - data loaded from a file</p>
<p>The encoding used is as specified in the -encoding option - or from the Byte Order Mark (bom) at the beginning of the data</p>
<p>For Tcl 8.6 - encodings such as utf-16le may not be available - so the bytes are swapped appropriately depending on the platform byteOrder and encoding 'unicode' is used.</p>
<p>encoding defaults to utf-8 if no -encoding specified and no BOM was found</p>
<p>Specify -encoding binary to perform no encoding conversion</p>
<p>Whether -encoding was specified or not - by default the BOM characters are not retained in the line-data</p>
<p>If -includebom 1 is specified - the bom will be retained in the stored chunk and the data for line 1, but will undergo the same encoding transformation as the rest of the data</p>
<p>The get_bomid method of the returned object will contain an identifier for any BOM encountered.</p>
<p>e.g utf-8,utf-16be, utf-16le, utf-32be, utf32-le, SCSU, BOCU-1,GB18030, UTF-EBCDIC, utf-1, utf-7</p>
<p>If the encoding specified in the BOM isn't recognised by Tcl - the resulting data is likely to remain as the raw bytes (binary translation)</p>
<p>Currently only utf-8, utf-16* and utf-32* are properly supported even though the other BOMs are detected, reported via get_bomid, and stripped from the data.</p>
<p>GB18030 falls back to cp936/gbk (unless a gb18030 encoding has been installed). Use -encoding binary if this isn't suitable and you need to do your own processing of the raw data.</p></dd>
</dl>
</div>
<div id="subsection7" class="doctools_subsection"><h3><a name="subsection7">Namespace punk::fileline::lib</a></h3>
<p>Secondary functions that are part of the API</p>
<dl class="doctools_definitions">
<dt><a name="23"><b class="function">lib::range_spans_chunk_boundaries</b> <i class="arg">start</i> <i class="arg">end</i> <i class="arg">chunksize</i></a></dt>
<dt><a name="24"><b class="function">lib::range_spans_chunk_boundaries</b> <i class="arg">start</i> <i class="arg">end</i> <i class="arg">chunksize</i></a></dt>
<dd><p>Takes start and end offset, generally representing bytes or character indices, and computes a list of boundaries at multiples of the chunksize that are spanned by the start and end range.</p>
<dl class="doctools_arguments">
@ -367,17 +383,17 @@ or
<p>These are ansi functions imported from punk::ansi - or no-ops if that package is unavailable</p>
<p>See <b class="package">punk::ansi</b> for documentation</p>
<dl class="doctools_definitions">
<dt><a name="24"><b class="function">ansi::a</b></a></dt>
<dt><a name="25"><b class="function">ansi::a</b></a></dt>
<dd></dd>
<dt><a name="25"><b class="function">ansi::a+</b></a></dt>
<dt><a name="26"><b class="function">ansi::a+</b></a></dt>
<dd></dd>
<dt><a name="26"><b class="function">ansi::stripansi</b></a></dt>
<dt><a name="27"><b class="function">ansi::stripansi</b></a></dt>
<dd></dd>
</dl>
</div>
</div>
<div id="keywords" class="doctools_section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../index.html#file">file</a>, <a href="../../../index.html#module">module</a>, <a href="../../../index.html#parse">parse</a>, <a href="../../../index.html#text">text</a></p>
<p><a href="../../../index.html#bom">BOM</a>, <a href="../../../index.html#encoding">encoding</a>, <a href="../../../index.html#file">file</a>, <a href="../../../index.html#module">module</a>, <a href="../../../index.html#parse">parse</a>, <a href="../../../index.html#text">text</a></p>
</div>
<div id="copyright" class="doctools_section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2024</p>

13
src/embedded/www/doc/files/punk/_module_flib-0.1.0.tm.html

@ -1,5 +1,5 @@
<!DOCTYPE html><html><head>
<title>punkshell_module_punk::flib - -</title>
<title>punkshell_module_punk::flib - experimental pattern library</title>
<style type="text/css"><!--
HTML {
background: #FFFFFF;
@ -103,9 +103,9 @@
&#124; <a href="../../../index.html">Keyword Index</a>
] <hr>
<div class="doctools">
<h1 class="doctools_title">punkshell_module_punk::flib(0) 0.1.0 doc &quot;-&quot;</h1>
<h1 class="doctools_title">punkshell_module_punk::flib(0) 0.1.0 doc &quot;experimental pattern library&quot;</h1>
<div id="name" class="doctools_section"><h2><a name="name">Name</a></h2>
<p>punkshell_module_punk::flib - Module API</p>
<p>punkshell_module_punk::flib - flib experimental</p>
</div>
<div id="toc" class="doctools_section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="doctools_toc">
@ -142,17 +142,18 @@
</div>
</div>
<div id="section1" class="doctools_section"><h2><a name="section1">Description</a></h2>
<p>-</p>
<p>Experimental</p>
</div>
<div id="section2" class="doctools_section"><h2><a name="section2">Overview</a></h2>
<p>overview of punk::flib</p>
<div id="subsection1" class="doctools_subsection"><h3><a name="subsection1">Concepts</a></h3>
<p>-</p>
<p>Experiments in functional program related features and integration with the pattern library</p>
</div>
<div id="subsection2" class="doctools_subsection"><h3><a name="subsection2">dependencies</a></h3>
<p>packages used by punk::flib</p>
<ul class="doctools_itemized">
<li><p><b class="package">Tcl 8.6</b></p></li>
<li><p><b class="package">pattern 1.2.4</b></p></li>
</ul>
</div>
</div>
@ -179,7 +180,7 @@
</div>
</div>
<div id="keywords" class="doctools_section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../index.html#module">module</a></p>
<p><a href="../../../index.html#experimental">experimental</a>, <a href="../../../index.html#module">module</a></p>
</div>
<div id="copyright" class="doctools_section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2024</p>

293
src/embedded/www/doc/files/punk/_module_lib-0.1.0.tm.html

@ -0,0 +1,293 @@
<!DOCTYPE html><html><head>
<title>punkshell_module_punk::lib - punk library</title>
<style type="text/css"><!--
HTML {
background: #FFFFFF;
color: black;
}
BODY {
background: #FFFFFF;
color: black;
}
DIV.doctools {
margin-left: 10%;
margin-right: 10%;
}
DIV.doctools H1,DIV.doctools H2 {
margin-left: -5%;
}
H1, H2, H3, H4 {
margin-top: 1em;
font-family: sans-serif;
font-size: large;
color: #005A9C;
background: transparent;
text-align: left;
}
H1.doctools_title {
text-align: center;
}
UL,OL {
margin-right: 0em;
margin-top: 3pt;
margin-bottom: 3pt;
}
UL LI {
list-style: disc;
}
OL LI {
list-style: decimal;
}
DT {
padding-top: 1ex;
}
UL.doctools_toc,UL.doctools_toc UL, UL.doctools_toc UL UL {
font: normal 12pt/14pt sans-serif;
list-style: none;
}
LI.doctools_section, LI.doctools_subsection {
list-style: none;
margin-left: 0em;
text-indent: 0em;
padding: 0em;
}
PRE {
display: block;
font-family: monospace;
white-space: pre;
margin: 0%;
padding-top: 0.5ex;
padding-bottom: 0.5ex;
padding-left: 1ex;
padding-right: 1ex;
width: 100%;
}
PRE.doctools_example {
color: black;
background: #f5dcb3;
border: 1px solid black;
}
UL.doctools_requirements LI, UL.doctools_syntax LI {
list-style: none;
margin-left: 0em;
text-indent: 0em;
padding: 0em;
}
DIV.doctools_synopsis {
color: black;
background: #80ffff;
border: 1px solid black;
font-family: serif;
margin-top: 1em;
margin-bottom: 1em;
}
UL.doctools_syntax {
margin-top: 1em;
border-top: 1px solid black;
}
UL.doctools_requirements {
margin-bottom: 1em;
border-bottom: 1px solid black;
}
--></style>
</head>
<!-- Generated from file '_module_lib-0.1.0.tm.man' by tcllib/doctools with format 'html'
-->
<!-- Copyright &amp;copy; 2024
-->
<!-- punkshell_module_punk::lib.0
-->
<body><hr> [
<a href="../../../toc.html">Main Table Of Contents</a>
&#124; <a href="../../toc.html">Table Of Contents</a>
&#124; <a href="../../../index.html">Keyword Index</a>
] <hr>
<div class="doctools">
<h1 class="doctools_title">punkshell_module_punk::lib(0) 0.1.0 doc &quot;punk library&quot;</h1>
<div id="name" class="doctools_section"><h2><a name="name">Name</a></h2>
<p>punkshell_module_punk::lib - punk general utility functions</p>
</div>
<div id="toc" class="doctools_section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="doctools_toc">
<li class="doctools_section"><a href="#toc">Table Of Contents</a></li>
<li class="doctools_section"><a href="#synopsis">Synopsis</a></li>
<li class="doctools_section"><a href="#section1">Description</a></li>
<li class="doctools_section"><a href="#section2">Overview</a>
<ul>
<li class="doctools_subsection"><a href="#subsection1">Concepts</a></li>
<li class="doctools_subsection"><a href="#subsection2">dependencies</a></li>
</ul>
</li>
<li class="doctools_section"><a href="#section3">API</a>
<ul>
<li class="doctools_subsection"><a href="#subsection3">Namespace punk::lib::class</a></li>
<li class="doctools_subsection"><a href="#subsection4">Namespace punk::lib</a></li>
</ul>
</li>
<li class="doctools_section"><a href="#section4">Internal</a>
<ul>
<li class="doctools_subsection"><a href="#subsection5">Namespace punk::lib::system</a></li>
</ul>
</li>
<li class="doctools_section"><a href="#keywords">Keywords</a></li>
<li class="doctools_section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="doctools_section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="doctools_synopsis">
<ul class="doctools_requirements">
<li>package require <b class="pkgname">punk::lib</b></li>
</ul>
<ul class="doctools_syntax">
<li><a href="#1"><b class="function">K</b> <i class="arg">x</i> <i class="arg">y</i></a></li>
<li><a href="#2"><b class="function">hex2dec</b> <span class="opt">?option value...?</span> <i class="arg">list_largeHex</i></a></li>
<li><a href="#3"><b class="function">dex2hex</b> <span class="opt">?option value...?</span> <i class="arg">list_decimals</i></a></li>
<li><a href="#4"><b class="function">log2</b> <i class="arg">x</i></a></li>
<li><a href="#5"><b class="function">logbase</b> <i class="arg">b</i> <i class="arg">x</i></a></li>
<li><a href="#6"><b class="function">factors</b> <i class="arg">x</i></a></li>
<li><a href="#7"><b class="function">oddFactors</b> <i class="arg">x</i></a></li>
<li><a href="#8"><b class="function">greatestFactorBelow</b> <i class="arg">x</i></a></li>
<li><a href="#9"><b class="function">greatestOddFactorBelow</b> <i class="arg">x</i></a></li>
<li><a href="#10"><b class="function">greatestOddFactor</b> <i class="arg">x</i></a></li>
<li><a href="#11"><b class="function">gcd</b> <i class="arg">n</i> <i class="arg">m</i></a></li>
<li><a href="#12"><b class="function">gcd</b> <i class="arg">n</i> <i class="arg">m</i></a></li>
<li><a href="#13"><b class="function">commonDivisors</b> <i class="arg">x</i> <i class="arg">y</i></a></li>
<li><a href="#14"><b class="function">hasglobs</b> <i class="arg">str</i></a></li>
<li><a href="#15"><b class="function">trimzero</b> <i class="arg">number</i></a></li>
<li><a href="#16"><b class="function">substring_count</b> <i class="arg">str</i> <i class="arg">substring</i></a></li>
<li><a href="#17"><b class="function">dict_merge_ordered</b> <i class="arg">defaults</i> <i class="arg">main</i></a></li>
<li><a href="#18"><b class="function">askuser</b> <i class="arg">question</i></a></li>
</ul>
</div>
</div>
<div id="section1" class="doctools_section"><h2><a name="section1">Description</a></h2>
<p>This is a set of utility functions that are commonly used across punk modules or are just considered to be general-purpose functions.</p>
<p>The base set includes string and math functions but has no specific theme</p>
</div>
<div id="section2" class="doctools_section"><h2><a name="section2">Overview</a></h2>
<p>overview of punk::lib</p>
<div id="subsection1" class="doctools_subsection"><h3><a name="subsection1">Concepts</a></h3>
<p>The punk::lib modules should have no strong dependencies other than Tcl</p>
<p>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.</p>
<p>This requirement for no strong dependencies, means that many utility functions that might otherwise seem worthy of inclusion here are not present.</p>
</div>
<div id="subsection2" class="doctools_subsection"><h3><a name="subsection2">dependencies</a></h3>
<p>packages used by punk::lib</p>
<ul class="doctools_itemized">
<li><p><b class="package">Tcl 8.6</b></p></li>
</ul>
</div>
</div>
<div id="section3" class="doctools_section"><h2><a name="section3">API</a></h2>
<div id="subsection3" class="doctools_subsection"><h3><a name="subsection3">Namespace punk::lib::class</a></h3>
<p>class definitions</p>
<ol class="doctools_enumerated">
</ol>
</div>
<div id="subsection4" class="doctools_subsection"><h3><a name="subsection4">Namespace punk::lib</a></h3>
<p>Core API functions for punk::lib</p>
<dl class="doctools_definitions">
<dt><a name="1"><b class="function">K</b> <i class="arg">x</i> <i class="arg">y</i></a></dt>
<dd><p>The K-combinator function - returns the first argument, x and discards y</p>
<p>see <a href="https://wiki.tcl-lang.org/page/K">https://wiki.tcl-lang.org/page/K</a></p>
<p>It is used in cases where command-substitution at the calling-point performs some desired effect.</p></dd>
<dt><a name="2"><b class="function">hex2dec</b> <span class="opt">?option value...?</span> <i class="arg">list_largeHex</i></a></dt>
<dd><p>Convert a list of (possibly large) unprefixed hex strings to their decimal values</p>
<p>hex2dec accepts and ignores internal underscores in the same manner as Tcl 8.7+ numbers e.g hex2dec FF_FF returns 65535</p>
<p>Leading and trailing underscores are ignored as a matter of implementation convenience - but this shouldn't be relied upon.</p>
<p>Leading or trailing whitespace in each list member is allowed e.g hex2dec &quot; F&quot; returns 15</p>
<p>Internal whitespace e.g &quot;F F&quot; is not permitted - but a completely empty element &quot;&quot; is allowed and will return 0</p></dd>
<dt><a name="3"><b class="function">dex2hex</b> <span class="opt">?option value...?</span> <i class="arg">list_decimals</i></a></dt>
<dd><p>Convert a list of decimal integers to a list of hex values</p>
<p>-width &lt;int&gt; can be used to make each hex value at least int characters wide, with leading zeroes.</p>
<p>-case upper|lower determines the case of the hex letters in the output</p></dd>
<dt><a name="4"><b class="function">log2</b> <i class="arg">x</i></a></dt>
<dd><p>log base2 of x</p>
<p>This uses a 'live' proc body - the divisor for the change of base is computed once at definition time</p>
<p>(courtesy of RS <a href="https://wiki.tcl-lang.org/page/Additional+math+functions">https://wiki.tcl-lang.org/page/Additional+math+functions</a>)</p></dd>
<dt><a name="5"><b class="function">logbase</b> <i class="arg">b</i> <i class="arg">x</i></a></dt>
<dd><p>log base b of x</p>
<p>This function uses expr's natural log and the change of base division.</p>
<p>This means for example that we can get results like: logbase 10 1000 = 2.9999999999999996</p>
<p>Use expr's log10() function or tcl::mathfunc::log10 for base 10</p></dd>
<dt><a name="6"><b class="function">factors</b> <i class="arg">x</i></a></dt>
<dd><p>Return a sorted list of the positive factors of x where x &gt; 0</p>
<p>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)*</p>
<p>This is a simple brute-force implementation that iterates all numbers below the square root of x to check the factors</p>
<p>Because the implementation is so simple - the performance is very reasonable for numbers below at least a few 10's of millions</p>
<p>See tcllib math::numtheory::factors for a more complex implementation - which seems to be slower for 'small' numbers</p>
<p>Comparisons were done with some numbers below 17 digits long</p>
<p>For seriously big numbers - this simple algorithm would no doubt be outperformed by more complex algorithms.</p>
<p>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.</p>
<p>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</p>
<p>* Taking x=0; Notion of x being divisible by integer y being: There exists an integer p such that x = py</p>
<p>In other mathematical contexts zero may be considered not to divide anything.</p></dd>
<dt><a name="7"><b class="function">oddFactors</b> <i class="arg">x</i></a></dt>
<dd><p>Return a list of odd integer factors of x, sorted in ascending order</p></dd>
<dt><a name="8"><b class="function">greatestFactorBelow</b> <i class="arg">x</i></a></dt>
<dd><p>Return the largest factor of x excluding itself</p>
<p>factor functions can be useful for console layout calculations</p>
<p>See Tcllib math::numtheory for more extensive implementations</p></dd>
<dt><a name="9"><b class="function">greatestOddFactorBelow</b> <i class="arg">x</i></a></dt>
<dd><p>Return the largest odd integer factor of x excluding x itself</p></dd>
<dt><a name="10"><b class="function">greatestOddFactor</b> <i class="arg">x</i></a></dt>
<dd><p>Return the largest odd integer factor of x</p>
<p>For an odd value of x - this will always return x</p></dd>
<dt><a name="11"><b class="function">gcd</b> <i class="arg">n</i> <i class="arg">m</i></a></dt>
<dd><p>Return the greatest common divisor of m and n</p>
<p>Straight from Lars Hellstr&ouml;m's math::numtheory library in Tcllib</p>
<p>Graphical use:</p>
<p>An a by b rectangle can be covered with square tiles of side-length c,</p>
<p>only if c is a common divisor of a and b</p></dd>
<dt><a name="12"><b class="function">gcd</b> <i class="arg">n</i> <i class="arg">m</i></a></dt>
<dd><p>Return the lowest common multiple of m and n</p>
<p>Straight from Lars Hellstr&ouml;m's math::numtheory library in Tcllib</p></dd>
<dt><a name="13"><b class="function">commonDivisors</b> <i class="arg">x</i> <i class="arg">y</i></a></dt>
<dd><p>Return a list of all the common factors of x and y</p>
<p>(equivalent to factors of their gcd)</p></dd>
<dt><a name="14"><b class="function">hasglobs</b> <i class="arg">str</i></a></dt>
<dd><p>Return a boolean indicating whether str contains any of the glob characters: * ? [ ]</p>
<p>hasglobs uses append to preserve Tcls internal representation for str - so it should help avoid shimmering in the few cases where this may matter.</p></dd>
<dt><a name="15"><b class="function">trimzero</b> <i class="arg">number</i></a></dt>
<dd><p>Return number with left-hand-side zeros trimmed off - unless all zero</p>
<p>If number is all zero - a single 0 is returned</p></dd>
<dt><a name="16"><b class="function">substring_count</b> <i class="arg">str</i> <i class="arg">substring</i></a></dt>
<dd><p>Search str and return number of occurrences of substring</p></dd>
<dt><a name="17"><b class="function">dict_merge_ordered</b> <i class="arg">defaults</i> <i class="arg">main</i></a></dt>
<dd><p>The standard dict merge accepts multiple dicts with values from dicts to the right (2nd argument) taking precedence.</p>
<p>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.</p>
<p>This function merges the two dicts whilst maintaining the key order of main followed by defaults.</p></dd>
<dt><a name="18"><b class="function">askuser</b> <i class="arg">question</i></a></dt>
<dd><p>A very basic utility to read an answer from stdin</p>
<p>The prompt is written to the terminal and then it waits for a user to type something</p>
<p>stdin is temporarily configured to blocking and then put back in its original state in case it wasn't already so.</p>
<p>The user must hit enter to submit the response</p>
<p>The return value is the string if any that was typed prior to hitting enter.</p>
<p>The question argument can be manually colourised using the various punk::ansi funcitons</p>
<pre class="doctools_example">
set answer [punk::lib::askuser &quot;[a+ green bold]Do you want to proceed? (Y|N)[a]&quot;]
if {[string match y* [string tolower $answer]]} {
puts &quot;Proceeding&quot;
} else {
puts &quot;Cancelled by user&quot;
}
</pre>
</dd>
</dl>
</div>
</div>
<div id="section4" class="doctools_section"><h2><a name="section4">Internal</a></h2>
<div id="subsection5" class="doctools_subsection"><h3><a name="subsection5">Namespace punk::lib::system</a></h3>
<p>Internal functions that are not part of the API</p>
<dl class="doctools_definitions">
</dl>
</div>
</div>
<div id="keywords" class="doctools_section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../index.html#lib">lib</a>, <a href="../../../index.html#module">module</a>, <a href="../../../index.html#utility">utility</a></p>
</div>
<div id="copyright" class="doctools_section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2024</p>
</div>
</div></body></html>

6
src/embedded/www/doc/files/punk/mix/commandset/_module_project-0.1.0.tm.html

@ -1,5 +1,5 @@
<!DOCTYPE html><html><head>
<title>punkshell_module_punk::mix::commandset::project - pmix CLI commandset - project</title>
<title>punkshell_module_punk::mix::commandset::project - deck CLI commandset - project</title>
<style type="text/css"><!--
HTML {
background: #FFFFFF;
@ -103,9 +103,9 @@
&#124; <a href="../../../../../index.html">Keyword Index</a>
] <hr>
<div class="doctools">
<h1 class="doctools_title">punkshell_module_punk::mix::commandset::project(0) 0.1.0 doc &quot;pmix CLI commandset - project&quot;</h1>
<h1 class="doctools_title">punkshell_module_punk::mix::commandset::project(0) 0.1.0 doc &quot;deck CLI commandset - project&quot;</h1>
<div id="name" class="doctools_section"><h2><a name="name">Name</a></h2>
<p>punkshell_module_punk::mix::commandset::project - pmix commandset - project</p>
<p>punkshell_module_punk::mix::commandset::project - dec commandset - project</p>
</div>
<div id="toc" class="doctools_section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="doctools_toc">

40
src/embedded/www/doc/toc.html

@ -13,40 +13,64 @@
<hr><dl><dt><h2>doc</h2></dt><dd>
<table class="#doctools_toc">
<tr class="#doctools_toceven" >
<td class="#doctools_tocleft" ><a name='overtype_module_overtype'><a href="files/_module_overtype-1.5.1.tm.html">overtype_module_overtype</a></td>
<td class="#doctools_tocright">overtype text layout - ansi aware</td>
</tr>
<tr class="#doctools_tocodd" >
<td class="#doctools_tocleft" ><a name='overtype_module_overtype'><a href="files/_module_overtype-1.5.2.tm.html">overtype_module_overtype</a></td>
<td class="#doctools_tocright">overtype text layout - ansi aware</td>
</tr>
<tr class="#doctools_toceven" >
<td class="#doctools_tocleft" ><a name='overtype_module_overtype'><a href="files/_module_overtype-1.5.3.tm.html">overtype_module_overtype</a></td>
<td class="#doctools_tocright">overtype text layout - ansi aware</td>
</tr>
<tr class="#doctools_tocodd" >
<td class="#doctools_tocleft" ><a name='punkshell'><a href="files/main.html">punkshell</a></td>
<td class="#doctools_tocright">punkshell - Core</td>
</tr>
<tr class="#doctools_tocodd" >
<tr class="#doctools_toceven" >
<td class="#doctools_tocleft" ><a name='punkshell_project_changes'><a href="files/project_changes.html">punkshell__project_changes</a></td>
<td class="#doctools_tocright">punkshell Changes</td>
</tr>
<tr class="#doctools_toceven" >
<tr class="#doctools_tocodd" >
<td class="#doctools_tocleft" ><a name='punkshell_project_intro'><a href="files/project_intro.html">punkshell__project_intro</a></td>
<td class="#doctools_tocright">Introduction to punkshell</td>
</tr>
<tr class="#doctools_tocodd" >
<tr class="#doctools_toceven" >
<td class="#doctools_tocleft" ><a name='punkshell_module_punk_ansi'><a href="files/punk/_module_ansi-0.1.0.tm.html">punkshell_module_punk::ansi</a></td>
<td class="#doctools_tocright">Ansi string functions</td>
</tr>
<tr class="#doctools_toceven" >
<tr class="#doctools_tocodd" >
<td class="#doctools_tocleft" ><a name='punkshell_module_punk_args'><a href="files/punk/_module_args-0.1.0.tm.html">punkshell_module_punk::args</a></td>
<td class="#doctools_tocright">args parsing</td>
</tr>
<tr class="#doctools_tocodd" >
<tr class="#doctools_toceven" >
<td class="#doctools_tocleft" ><a name='punkshell_module_punk_cap'><a href="files/punk/_module_cap-0.1.0.tm.html">punkshell_module_punk::cap</a></td>
<td class="#doctools_tocright">capability provider and handler plugin system</td>
</tr>
<tr class="#doctools_tocodd" >
<td class="#doctools_tocleft" ><a name='punkshell_module_punk_char'><a href="files/punk/_module_char-0.1.0.tm.html">punkshell_module_punk::char</a></td>
<td class="#doctools_tocright">character-set and unicode utilities</td>
</tr>
<tr class="#doctools_toceven" >
<td class="#doctools_tocleft" ><a name='punkshell_module_punk_encmime'><a href="files/punk/_module_encmime-0.1.0.tm.html">punkshell_module_punk::encmime</a></td>
<td class="#doctools_tocright">mime encodings related subset of tcllib mime</td>
</tr>
<tr class="#doctools_tocodd" >
<td class="#doctools_tocleft" ><a name='punkshell_module_punk_fileline'><a href="files/punk/_module_fileline-0.1.0.tm.html">punkshell_module_punk::fileline</a></td>
<td class="#doctools_tocright">file line-handling utilities</td>
</tr>
<tr class="#doctools_tocodd" >
<tr class="#doctools_toceven" >
<td class="#doctools_tocleft" ><a name='punkshell_module_punk_flib'><a href="files/punk/_module_flib-0.1.0.tm.html">punkshell_module_punk::flib</a></td>
<td class="#doctools_tocright">Module API</td>
<td class="#doctools_tocright">flib experimental</td>
</tr>
<tr class="#doctools_tocodd" >
<td class="#doctools_tocleft" ><a name='punkshell_module_punk_lib'><a href="files/punk/_module_lib-0.1.0.tm.html">punkshell_module_punk::lib</a></td>
<td class="#doctools_tocright">punk general utility functions</td>
</tr>
<tr class="#doctools_toceven" >
<td class="#doctools_tocleft" ><a name='punkshell_module_punk_mix_commandset_project'><a href="files/punk/mix/commandset/_module_project-0.1.0.tm.html">punkshell_module_punk::mix::commandset::project</a></td>
<td class="#doctools_tocright">pmix commandset - project</td>
<td class="#doctools_tocright">dec commandset - project</td>
</tr>
<tr class="#doctools_tocodd" >
<td class="#doctools_tocleft" ><a name='punkshell_module_punk_path'><a href="files/punk/_module_path-0.1.0.tm.html">punkshell_module_punk::path</a></td>

78
src/embedded/www/index.html

@ -13,7 +13,7 @@
] <hr>
<h3> Keyword Index </h3>
<hr><div class="#doctools_idxnav">
<a href="#cA"> A </a> &#183; <a href="#cC"> C </a> &#183; <a href="#cF"> F </a> &#183; <a href="#cM"> M </a> &#183; <a href="#cP"> P </a> &#183; <a href="#cR"> R </a> &#183; <a href="#cS"> S </a> &#183; <a href="#cT"> T </a>
<a href="#cA"> A </a> &#183; <a href="#cB"> B </a> &#183; <a href="#cC"> C </a> &#183; <a href="#cE"> E </a> &#183; <a href="#cF"> F </a> &#183; <a href="#cL"> L </a> &#183; <a href="#cM"> M </a> &#183; <a href="#cP"> P </a> &#183; <a href="#cR"> R </a> &#183; <a href="#cS"> S </a> &#183; <a href="#cT"> T </a> &#183; <a href="#cU"> U </a>
</div>
<hr><table class="#doctools_idx" width="100%">
<tr class="#doctools_idxheader"><th colspan="2">
@ -22,7 +22,7 @@
<tr class="#doctools_idxeven" valign=top>
<td class="#doctools_idxleft" width="35%"><a name="ansi"> ansi </a></td>
<td class="#doctools_idxright" width="65%">
<a href="doc/files/punk/_module_ansi-0.1.0.tm.html"> punkshell_module_punk::ansi </a>
<a href="doc/files/_module_overtype-1.5.1.tm.html"> overtype_module_overtype </a> &#183; <a href="doc/files/_module_overtype-1.5.2.tm.html"> overtype_module_overtype </a> &#183; <a href="doc/files/_module_overtype-1.5.3.tm.html"> overtype_module_overtype </a> &#183; <a href="doc/files/punk/_module_ansi-0.1.0.tm.html"> punkshell_module_punk::ansi </a>
</td></tr>
<tr class="#doctools_idxodd" valign=top>
<td class="#doctools_idxleft" width="35%"><a name="args"> args </a></td>
@ -35,24 +35,50 @@
<a href="doc/files/punk/_module_args-0.1.0.tm.html"> punkshell_module_punk::args </a>
</td></tr>
<tr class="#doctools_idxheader"><th colspan="2">
<a name="cC">Keywords: C</a>
<a name="cB">Keywords: B</a>
</th></tr>
<tr class="#doctools_idxodd" valign=top>
<td class="#doctools_idxleft" width="35%"><a name="bom"> BOM </a></td>
<td class="#doctools_idxright" width="65%">
<a href="doc/files/punk/_module_fileline-0.1.0.tm.html"> punkshell_module_punk::fileline </a>
</td></tr>
<tr class="#doctools_idxheader"><th colspan="2">
<a name="cC">Keywords: C</a>
</th></tr>
<tr class="#doctools_idxeven" valign=top>
<td class="#doctools_idxleft" width="35%"><a name="capability"> capability </a></td>
<td class="#doctools_idxright" width="65%">
<a href="doc/files/punk/_module_cap-0.1.0.tm.html"> punkshell_module_punk::cap </a>
</td></tr>
<tr class="#doctools_idxeven" valign=top>
<tr class="#doctools_idxodd" valign=top>
<td class="#doctools_idxleft" width="35%"><a name="changelog"> changelog </a></td>
<td class="#doctools_idxright" width="65%">
<a href="doc/files/project_changes.html"> punkshell__project_changes </a>
</td></tr>
<tr class="#doctools_idxodd" valign=top>
<tr class="#doctools_idxeven" valign=top>
<td class="#doctools_idxleft" width="35%"><a name="console"> console </a></td>
<td class="#doctools_idxright" width="65%">
<a href="doc/files/punk/_module_ansi-0.1.0.tm.html"> punkshell_module_punk::ansi </a>
</td></tr>
<tr class="#doctools_idxheader"><th colspan="2">
<a name="cE">Keywords: E</a>
</th></tr>
<tr class="#doctools_idxodd" valign=top>
<td class="#doctools_idxleft" width="35%"><a name="encoding"> encoding </a></td>
<td class="#doctools_idxright" width="65%">
<a href="doc/files/punk/_module_fileline-0.1.0.tm.html"> punkshell_module_punk::fileline </a>
</td></tr>
<tr class="#doctools_idxeven" valign=top>
<td class="#doctools_idxleft" width="35%"><a name="encodings"> encodings </a></td>
<td class="#doctools_idxright" width="65%">
<a href="doc/files/punk/_module_char-0.1.0.tm.html"> punkshell_module_punk::char </a> &#183; <a href="doc/files/punk/_module_encmime-0.1.0.tm.html"> punkshell_module_punk::encmime </a>
</td></tr>
<tr class="#doctools_idxodd" valign=top>
<td class="#doctools_idxleft" width="35%"><a name="experimental"> experimental </a></td>
<td class="#doctools_idxright" width="65%">
<a href="doc/files/punk/_module_flib-0.1.0.tm.html"> punkshell_module_punk::flib </a>
</td></tr>
<tr class="#doctools_idxheader"><th colspan="2">
<a name="cF">Keywords: F</a>
</th></tr>
<tr class="#doctools_idxeven" valign=top>
@ -66,37 +92,45 @@
<a href="doc/files/punk/_module_path-0.1.0.tm.html"> punkshell_module_punk::path </a>
</td></tr>
<tr class="#doctools_idxheader"><th colspan="2">
<a name="cM">Keywords: M</a>
<a name="cL">Keywords: L</a>
</th></tr>
<tr class="#doctools_idxeven" valign=top>
<td class="#doctools_idxleft" width="35%"><a name="lib"> lib </a></td>
<td class="#doctools_idxright" width="65%">
<a href="doc/files/punk/_module_lib-0.1.0.tm.html"> punkshell_module_punk::lib </a>
</td></tr>
<tr class="#doctools_idxheader"><th colspan="2">
<a name="cM">Keywords: M</a>
</th></tr>
<tr class="#doctools_idxodd" valign=top>
<td class="#doctools_idxleft" width="35%"><a name="module"> module </a></td>
<td class="#doctools_idxright" width="65%">
<a href="doc/files/punk/_module_ansi-0.1.0.tm.html"> punkshell_module_punk::ansi </a> &#183; <a href="doc/files/punk/_module_args-0.1.0.tm.html"> punkshell_module_punk::args </a> &#183; <a href="doc/files/punk/_module_cap-0.1.0.tm.html"> punkshell_module_punk::cap </a> &#183; <a href="doc/files/punk/_module_fileline-0.1.0.tm.html"> punkshell_module_punk::fileline </a> &#183; <a href="doc/files/punk/_module_flib-0.1.0.tm.html"> punkshell_module_punk::flib </a> &#183; <a href="doc/files/punk/_module_path-0.1.0.tm.html"> punkshell_module_punk::path </a>
<a href="doc/files/_module_overtype-1.5.1.tm.html"> overtype_module_overtype </a> &#183; <a href="doc/files/_module_overtype-1.5.2.tm.html"> overtype_module_overtype </a> &#183; <a href="doc/files/_module_overtype-1.5.3.tm.html"> overtype_module_overtype </a> &#183; <a href="doc/files/punk/_module_ansi-0.1.0.tm.html"> punkshell_module_punk::ansi </a> &#183; <a href="doc/files/punk/_module_args-0.1.0.tm.html"> punkshell_module_punk::args </a> &#183; <a href="doc/files/punk/_module_cap-0.1.0.tm.html"> punkshell_module_punk::cap </a> &#183; <a href="doc/files/punk/_module_char-0.1.0.tm.html"> punkshell_module_punk::char </a> &#183; <a href="doc/files/punk/_module_encmime-0.1.0.tm.html"> punkshell_module_punk::encmime </a> &#183; <a href="doc/files/punk/_module_fileline-0.1.0.tm.html"> punkshell_module_punk::fileline </a> &#183; <a href="doc/files/punk/_module_flib-0.1.0.tm.html"> punkshell_module_punk::flib </a> &#183; <a href="doc/files/punk/_module_lib-0.1.0.tm.html"> punkshell_module_punk::lib </a> &#183; <a href="doc/files/punk/_module_path-0.1.0.tm.html"> punkshell_module_punk::path </a>
</td></tr>
<tr class="#doctools_idxheader"><th colspan="2">
<a name="cP">Keywords: P</a>
</th></tr>
<tr class="#doctools_idxodd" valign=top>
<tr class="#doctools_idxeven" valign=top>
<td class="#doctools_idxleft" width="35%"><a name="parse"> parse </a></td>
<td class="#doctools_idxright" width="65%">
<a href="doc/files/punk/_module_args-0.1.0.tm.html"> punkshell_module_punk::args </a> &#183; <a href="doc/files/punk/_module_fileline-0.1.0.tm.html"> punkshell_module_punk::fileline </a>
</td></tr>
<tr class="#doctools_idxeven" valign=top>
<tr class="#doctools_idxodd" valign=top>
<td class="#doctools_idxleft" width="35%"><a name="path"> path </a></td>
<td class="#doctools_idxright" width="65%">
<a href="doc/files/punk/_module_path-0.1.0.tm.html"> punkshell_module_punk::path </a>
</td></tr>
<tr class="#doctools_idxodd" valign=top>
<tr class="#doctools_idxeven" valign=top>
<td class="#doctools_idxleft" width="35%"><a name="plugin"> plugin </a></td>
<td class="#doctools_idxright" width="65%">
<a href="doc/files/punk/_module_cap-0.1.0.tm.html"> punkshell_module_punk::cap </a>
</td></tr>
<tr class="#doctools_idxeven" valign=top>
<tr class="#doctools_idxodd" valign=top>
<td class="#doctools_idxleft" width="35%"><a name="proc"> proc </a></td>
<td class="#doctools_idxright" width="65%">
<a href="doc/files/punk/_module_args-0.1.0.tm.html"> punkshell_module_punk::args </a>
</td></tr>
<tr class="#doctools_idxodd" valign=top>
<tr class="#doctools_idxeven" valign=top>
<td class="#doctools_idxleft" width="35%"><a name="punk"> punk </a></td>
<td class="#doctools_idxright" width="65%">
<a href="doc/files/main.html"> punkshell </a> &#183; <a href="doc/files/project_changes.html"> punkshell__project_changes </a> &#183; <a href="doc/files/project_intro.html"> punkshell__project_intro </a>
@ -104,7 +138,7 @@
<tr class="#doctools_idxheader"><th colspan="2">
<a name="cR">Keywords: R</a>
</th></tr>
<tr class="#doctools_idxeven" valign=top>
<tr class="#doctools_idxodd" valign=top>
<td class="#doctools_idxleft" width="35%"><a name="repl"> repl </a></td>
<td class="#doctools_idxright" width="65%">
<a href="doc/files/main.html"> punkshell </a> &#183; <a href="doc/files/project_changes.html"> punkshell__project_changes </a> &#183; <a href="doc/files/project_intro.html"> punkshell__project_intro </a>
@ -112,12 +146,12 @@
<tr class="#doctools_idxheader"><th colspan="2">
<a name="cS">Keywords: S</a>
</th></tr>
<tr class="#doctools_idxodd" valign=top>
<tr class="#doctools_idxeven" valign=top>
<td class="#doctools_idxleft" width="35%"><a name="shell"> shell </a></td>
<td class="#doctools_idxright" width="65%">
<a href="doc/files/main.html"> punkshell </a> &#183; <a href="doc/files/project_changes.html"> punkshell__project_changes </a> &#183; <a href="doc/files/project_intro.html"> punkshell__project_intro </a>
</td></tr>
<tr class="#doctools_idxeven" valign=top>
<tr class="#doctools_idxodd" valign=top>
<td class="#doctools_idxleft" width="35%"><a name="string"> string </a></td>
<td class="#doctools_idxright" width="65%">
<a href="doc/files/punk/_module_ansi-0.1.0.tm.html"> punkshell_module_punk::ansi </a>
@ -125,15 +159,23 @@
<tr class="#doctools_idxheader"><th colspan="2">
<a name="cT">Keywords: T</a>
</th></tr>
<tr class="#doctools_idxodd" valign=top>
<tr class="#doctools_idxeven" valign=top>
<td class="#doctools_idxleft" width="35%"><a name="terminal"> terminal </a></td>
<td class="#doctools_idxright" width="65%">
<a href="doc/files/punk/_module_ansi-0.1.0.tm.html"> punkshell_module_punk::ansi </a>
</td></tr>
<tr class="#doctools_idxeven" valign=top>
<tr class="#doctools_idxodd" valign=top>
<td class="#doctools_idxleft" width="35%"><a name="text"> text </a></td>
<td class="#doctools_idxright" width="65%">
<a href="doc/files/punk/_module_fileline-0.1.0.tm.html"> punkshell_module_punk::fileline </a>
<a href="doc/files/_module_overtype-1.5.1.tm.html"> overtype_module_overtype </a> &#183; <a href="doc/files/_module_overtype-1.5.2.tm.html"> overtype_module_overtype </a> &#183; <a href="doc/files/_module_overtype-1.5.3.tm.html"> overtype_module_overtype </a> &#183; <a href="doc/files/punk/_module_fileline-0.1.0.tm.html"> punkshell_module_punk::fileline </a>
</td></tr>
<tr class="#doctools_idxheader"><th colspan="2">
<a name="cU">Keywords: U</a>
</th></tr>
<tr class="#doctools_idxeven" valign=top>
<td class="#doctools_idxleft" width="35%"><a name="utility"> utility </a></td>
<td class="#doctools_idxright" width="65%">
<a href="doc/files/punk/_module_lib-0.1.0.tm.html"> punkshell_module_punk::lib </a>
</td></tr>
</table>
</body></html>

40
src/embedded/www/toc.html

@ -13,40 +13,64 @@
<hr><dl><dt><h2>doc</h2></dt><dd>
<table class="#doctools_toc">
<tr class="#doctools_toceven" >
<td class="#doctools_tocleft" ><a name='overtype_module_overtype'><a href="doc/files/_module_overtype-1.5.1.tm.html">overtype_module_overtype</a></td>
<td class="#doctools_tocright">overtype text layout - ansi aware</td>
</tr>
<tr class="#doctools_tocodd" >
<td class="#doctools_tocleft" ><a name='overtype_module_overtype'><a href="doc/files/_module_overtype-1.5.2.tm.html">overtype_module_overtype</a></td>
<td class="#doctools_tocright">overtype text layout - ansi aware</td>
</tr>
<tr class="#doctools_toceven" >
<td class="#doctools_tocleft" ><a name='overtype_module_overtype'><a href="doc/files/_module_overtype-1.5.3.tm.html">overtype_module_overtype</a></td>
<td class="#doctools_tocright">overtype text layout - ansi aware</td>
</tr>
<tr class="#doctools_tocodd" >
<td class="#doctools_tocleft" ><a name='punkshell'><a href="doc/files/main.html">punkshell</a></td>
<td class="#doctools_tocright">punkshell - Core</td>
</tr>
<tr class="#doctools_tocodd" >
<tr class="#doctools_toceven" >
<td class="#doctools_tocleft" ><a name='punkshell_project_changes'><a href="doc/files/project_changes.html">punkshell__project_changes</a></td>
<td class="#doctools_tocright">punkshell Changes</td>
</tr>
<tr class="#doctools_toceven" >
<tr class="#doctools_tocodd" >
<td class="#doctools_tocleft" ><a name='punkshell_project_intro'><a href="doc/files/project_intro.html">punkshell__project_intro</a></td>
<td class="#doctools_tocright">Introduction to punkshell</td>
</tr>
<tr class="#doctools_tocodd" >
<tr class="#doctools_toceven" >
<td class="#doctools_tocleft" ><a name='punkshell_module_punk_ansi'><a href="doc/files/punk/_module_ansi-0.1.0.tm.html">punkshell_module_punk::ansi</a></td>
<td class="#doctools_tocright">Ansi string functions</td>
</tr>
<tr class="#doctools_toceven" >
<tr class="#doctools_tocodd" >
<td class="#doctools_tocleft" ><a name='punkshell_module_punk_args'><a href="doc/files/punk/_module_args-0.1.0.tm.html">punkshell_module_punk::args</a></td>
<td class="#doctools_tocright">args parsing</td>
</tr>
<tr class="#doctools_tocodd" >
<tr class="#doctools_toceven" >
<td class="#doctools_tocleft" ><a name='punkshell_module_punk_cap'><a href="doc/files/punk/_module_cap-0.1.0.tm.html">punkshell_module_punk::cap</a></td>
<td class="#doctools_tocright">capability provider and handler plugin system</td>
</tr>
<tr class="#doctools_tocodd" >
<td class="#doctools_tocleft" ><a name='punkshell_module_punk_char'><a href="doc/files/punk/_module_char-0.1.0.tm.html">punkshell_module_punk::char</a></td>
<td class="#doctools_tocright">character-set and unicode utilities</td>
</tr>
<tr class="#doctools_toceven" >
<td class="#doctools_tocleft" ><a name='punkshell_module_punk_encmime'><a href="doc/files/punk/_module_encmime-0.1.0.tm.html">punkshell_module_punk::encmime</a></td>
<td class="#doctools_tocright">mime encodings related subset of tcllib mime</td>
</tr>
<tr class="#doctools_tocodd" >
<td class="#doctools_tocleft" ><a name='punkshell_module_punk_fileline'><a href="doc/files/punk/_module_fileline-0.1.0.tm.html">punkshell_module_punk::fileline</a></td>
<td class="#doctools_tocright">file line-handling utilities</td>
</tr>
<tr class="#doctools_tocodd" >
<tr class="#doctools_toceven" >
<td class="#doctools_tocleft" ><a name='punkshell_module_punk_flib'><a href="doc/files/punk/_module_flib-0.1.0.tm.html">punkshell_module_punk::flib</a></td>
<td class="#doctools_tocright">Module API</td>
<td class="#doctools_tocright">flib experimental</td>
</tr>
<tr class="#doctools_tocodd" >
<td class="#doctools_tocleft" ><a name='punkshell_module_punk_lib'><a href="doc/files/punk/_module_lib-0.1.0.tm.html">punkshell_module_punk::lib</a></td>
<td class="#doctools_tocright">punk general utility functions</td>
</tr>
<tr class="#doctools_toceven" >
<td class="#doctools_tocleft" ><a name='punkshell_module_punk_mix_commandset_project'><a href="doc/files/punk/mix/commandset/_module_project-0.1.0.tm.html">punkshell_module_punk::mix::commandset::project</a></td>
<td class="#doctools_tocright">pmix commandset - project</td>
<td class="#doctools_tocright">dec commandset - project</td>
</tr>
<tr class="#doctools_tocodd" >
<td class="#doctools_tocleft" ><a name='punkshell_module_punk_path'><a href="doc/files/punk/_module_path-0.1.0.tm.html">punkshell_module_punk::path</a></td>

Loading…
Cancel
Save