Browse Source

doc update

master
Julian Noble 8 months ago
parent
commit
41196de05a
  1. 354
      src/embedded/man/files/_module_overtype-1.6.2.tm.n
  2. 212
      src/embedded/man/files/punk/_module_ansi-0.1.1.tm.n
  3. 2
      src/embedded/man/files/punk/_module_args-0.1.0.tm.n
  4. 52
      src/embedded/man/files/punk/_module_assertion-0.1.0.tm.n
  5. 42
      src/embedded/man/files/punk/_module_basictelnet-0.1.0.tm.n
  6. 2
      src/embedded/man/files/punk/_module_encmime-0.1.0.tm.n
  7. 2
      src/embedded/man/files/punk/_module_fileline-0.1.0.tm.n
  8. 2
      src/embedded/man/files/punk/_module_flib-0.1.0.tm.n
  9. 131
      src/embedded/man/files/punk/_module_lib-0.1.1.tm.n
  10. 2
      src/embedded/man/files/punk/_module_path-0.1.0.tm.n
  11. 482
      src/embedded/man/files/punk/_module_sshrun-0.1.0.tm.n
  12. 40
      src/embedded/man/files/punk/_module_uc-0.1.0.tm.n
  13. 2
      src/embedded/man/files/punk/mix/commandset/_module_project-0.1.0.tm.n
  14. 76
      src/embedded/man/index.n
  15. 24
      src/embedded/man/toc.n
  16. 12
      src/embedded/md/.doc/tocdoc
  17. 2
      src/embedded/md/.idx
  18. 2
      src/embedded/md/.toc
  19. 2
      src/embedded/md/.xrf
  20. 78
      src/embedded/md/doc/files/_module_overtype-1.5.1.tm.md
  21. 78
      src/embedded/md/doc/files/_module_overtype-1.5.2.tm.md
  22. 78
      src/embedded/md/doc/files/_module_overtype-1.5.3.tm.md
  23. 139
      src/embedded/md/doc/files/_module_overtype-1.6.2.tm.md
  24. 390
      src/embedded/md/doc/files/punk/_module_ansi-0.1.0.tm.md
  25. 601
      src/embedded/md/doc/files/punk/_module_ansi-0.1.1.tm.md
  26. 2
      src/embedded/md/doc/files/punk/_module_args-0.1.0.tm.md
  27. 108
      src/embedded/md/doc/files/punk/_module_assertion-0.1.0.tm.md
  28. 87
      src/embedded/md/doc/files/punk/_module_basictelnet-0.1.0.tm.md
  29. 2
      src/embedded/md/doc/files/punk/_module_encmime-0.1.0.tm.md
  30. 2
      src/embedded/md/doc/files/punk/_module_fileline-0.1.0.tm.md
  31. 2
      src/embedded/md/doc/files/punk/_module_flib-0.1.0.tm.md
  32. 227
      src/embedded/md/doc/files/punk/_module_lib-0.1.1.tm.md
  33. 2
      src/embedded/md/doc/files/punk/_module_path-0.1.0.tm.md
  34. 225
      src/embedded/md/doc/files/punk/_module_sshrun-0.1.0.tm.md
  35. 87
      src/embedded/md/doc/files/punk/_module_uc-0.1.0.tm.md
  36. 2
      src/embedded/md/doc/files/punk/mix/commandset/_module_project-0.1.0.tm.md
  37. 18
      src/embedded/md/doc/toc.md
  38. 28
      src/embedded/md/index.md
  39. 18
      src/embedded/md/toc.md
  40. 12
      src/embedded/www/.doc/tocdoc
  41. 2
      src/embedded/www/.idx
  42. 2
      src/embedded/www/.toc
  43. 2
      src/embedded/www/.xrf
  44. 36
      src/embedded/www/doc/files/_module_overtype-1.6.2.tm.html
  45. 249
      src/embedded/www/doc/files/punk/_module_ansi-0.1.1.tm.html
  46. 2
      src/embedded/www/doc/files/punk/_module_args-0.1.0.tm.html
  47. 192
      src/embedded/www/doc/files/punk/_module_assertion-0.1.0.tm.html
  48. 64
      src/embedded/www/doc/files/punk/_module_basictelnet-0.1.0.tm.html
  49. 2
      src/embedded/www/doc/files/punk/_module_encmime-0.1.0.tm.html
  50. 2
      src/embedded/www/doc/files/punk/_module_fileline-0.1.0.tm.html
  51. 2
      src/embedded/www/doc/files/punk/_module_flib-0.1.0.tm.html
  52. 154
      src/embedded/www/doc/files/punk/_module_lib-0.1.1.tm.html
  53. 2
      src/embedded/www/doc/files/punk/_module_path-0.1.0.tm.html
  54. 280
      src/embedded/www/doc/files/punk/_module_sshrun-0.1.0.tm.html
  55. 62
      src/embedded/www/doc/files/punk/_module_uc-0.1.0.tm.html
  56. 2
      src/embedded/www/doc/files/punk/mix/commandset/_module_project-0.1.0.tm.html
  57. 30
      src/embedded/www/doc/toc.html
  58. 69
      src/embedded/www/index.html
  59. 30
      src/embedded/www/toc.html

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

@ -0,0 +1,354 @@
'\"
'\" Generated from file '_module_overtype-1\&.6\&.2\&.tm\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2024
'\"
.TH "overtype_module_overtype" 0 1\&.6\&.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
\fBovertype::left\fR \fIargs\fR
.sp
\fBovertype::renderline\fR \fIargs\fR
.sp
.BE
.SH DESCRIPTION
.PP
-
.SH OVERVIEW
.PP
overview of overtype
.SS CONCEPTS
.PP
-
.SS DEPENDENCIES
.PP
packages used by overtype
.IP \(bu
\fBTcl 8\&.6\fR
.IP \(bu
\fBtextutil\fR
.IP \(bu
\fBpunk::ansi\fR
.sp
- required to detect, split, strip and calculate lengths of text possibly containing ansi codes
.IP \(bu
\fBpunk::char\fR
.sp
- box drawing - and also unicode character width determination for proper layout of text with double-column-width chars
.PP
.SH API
.SS "NAMESPACE OVERTYPE"
.PP
Core API functions for overtype
.TP
\fBovertype::left\fR \fIargs\fR
.sp
usage: ?-transparent [0|1]? ?-overflow [1|0]? ?-ellipsis [1|0]? ?-ellipsistext \&.\&.\&.? undertext overtext
.TP
\fBovertype::renderline\fR \fIargs\fR
.sp
renderline is the core engine for overtype string processing (frames & textblocks), and the raw mode commandline repl for the Tcl Punk Shell
.sp
It is also a central part of an ansi (micro) virtual terminal-emulator of sorts
.sp
This system does a half decent job at rendering 90's ANSI art to manipulable colour text blocks that can be joined & framed for layout display within a unix or windows terminal
.sp
Renderline helps maintain ANSI text styling reset/replay codes so that the styling of one block doesn't affect another\&.
.sp
Calling on the punk::ansi library - it can coalesce codes to keep the size down\&.
.sp
It is a giant mess of doing exactly what common wisdom says not to do\&.\&.\&. lots at once\&.
.sp
renderline is part of the Unicode and ANSI aware Overtype system which 'renders' a block of text onto a static underlay
.sp
The underlay is generally expected to be an ordered set of lines or a rectangular text block analogous to a terminal screen - but it can also be ragged in line length, or just blank\&.
.sp
The overlay couuld be similar - in which case it may often be used to overwrite a column or section of the underlay\&.
.sp
The overlay could however be a sequence of ANSI-laden text that jumps all over the place\&.
.sp
renderline itself only deals with a single line - or sometimes a single character\&. It is generally called from a loop that does further terminal-like or textblock processing\&.
.sp
By suppyling the -info 1 option - it can return various fields indicating the state of the render\&.
.sp
The main 3 are the result, overflow_right, and unapplied\&.
.sp
Renderline handles cursor movements from either keystrokes or ANSI sequences but for a full system the aforementioned loop will need to be in place to manage the set of lines under manipulation\&.
.PP
.SH KEYWORDS
ansi, module, text
.SH COPYRIGHT
.nf
Copyright (c) 2024
.fi

212
src/embedded/man/files/punk/_module_ansi-0.1.0.tm.n → src/embedded/man/files/punk/_module_ansi-0.1.1.tm.n

@ -1,8 +1,8 @@
'\"
'\" Generated from file '_module_ansi-0\&.1\&.0\&.tm\&.man' by tcllib/doctools with format 'nroff'
'\" Generated from file '_module_ansi-0\&.1\&.1\&.tm\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2023
'\"
.TH "punkshell_module_punk::ansi" 0 0\&.1\&.0 doc "punk Ansi library"
.TH "punkshell_module_punk::ansi" 0 0\&.1\&.1 doc "punk Ansi library"
.\" The -*- nroff -*- definitions below are for supplemental macros used
.\" in Tcl/Tk manual entries.
.\"
@ -278,12 +278,16 @@ package require \fBpunk::ansi \fR
.sp
\fBstripansi\fR \fItext\fR
.sp
\fBstripansi\fR \fItext\fR
.sp
\fBa?\fR ?ansicode\&.\&.\&.?
.sp
\fBa+\fR ?ansicode\&.\&.\&.?
.sp
\fBa\fR ?ansicode\&.\&.\&.?
.sp
\fBa\fR ?ansicode\&.\&.\&.?
.sp
\fBget_code_name\fR \fIcode\fR
.sp
\fBreset\fR
@ -314,16 +318,56 @@ package require \fBpunk::ansi \fR
.sp
\fBmove_down\fR \fIn\fR
.sp
\fBmove_column\fR \fIcol\fR
.sp
\fBmove_row\fR \fIrow\fR
.sp
\fBcursor_save\fR
.sp
\fBcursor_restore\fR
.sp
\fBcursor_save_dec\fR
.sp
\fBcursor_restore_attributes\fR
.sp
\fBenable_line_wrap\fR
.sp
\fBdisable_line_wrap\fR
.sp
\fBquery_mode_line_wrap\fR
.sp
\fBerase_line\fR
.sp
\fBerase_sol\fR
.sp
\fBerase_eol\fR
.sp
\fBscroll_up\fR \fIn\fR
.sp
\fBscroll_down\fR \fIn\fR
.sp
\fBinsert_spaces\fR \fIcount\fR
.sp
\fBdelete_characters\fR \fIcount\fR
.sp
\fBerase_characters\fR \fIcount\fR
.sp
\fBinsert_lines\fR \fIcount\fR
.sp
\fBdelete_lines\fR \fIcount\fR
.sp
\fBcursor_pos\fR
.sp
\fBrequest_cursor_information\fR
.sp
\fBrequest_tabstops\fR
.sp
\fBtitleset\fR \fIwindowtitles\fR
.sp
\fBis_sgr_reset\fR \fIcode\fR
.sp
\fBhas_sgr_leadingreset\fR \fIcode\fR
.sp
\fBdetect\fR \fItext\fR
.sp
\fBdetect_csi\fR \fItext\fR
@ -334,6 +378,10 @@ package require \fBpunk::ansi \fR
.sp
\fBlength\fR \fItext\fR
.sp
\fBVIEW\fR \fIstring\fR
.sp
\fBCOUNT\fR \fIstring\fR
.sp
\fBindex\fR \fIstring\fR \fIindex\fR
.sp
.BE
@ -360,7 +408,9 @@ Sticking to ansi codes where possible may be better for cross-platform and remot
.PP
packages used by punk::ansi
.IP \(bu
\fBTcl 8\&.6\fR
\fBTcl 8\&.6-\fR
.IP \(bu
\fBpunk::char\fR
.PP
.SH API
.SS "NAMESPACE PUNK::ANSI"
@ -370,6 +420,16 @@ Core API functions for punk::ansi
\fBstripansi\fR \fItext\fR
.sp
Return a string with ansi codes stripped out
.sp
Alternate graphics chars are replaced with modern unicode equivalents (e\&.g boxdrawing glyphs)
.TP
\fBstripansi\fR \fItext\fR
.sp
Return a string with ansi codes stripped out
.sp
Alternate graphics modes will be stripped - exposing the raw characters as they appear without graphics mode\&.
.sp
ie instead of a horizontal line you may see: qqqqqq
.TP
\fBa?\fR ?ansicode\&.\&.\&.?
.sp
@ -405,6 +465,22 @@ punk::ansi::a Red
.sp
see \fBpunk::ansi::a?\fR to display a list of codes
.TP
\fBa\fR ?ansicode\&.\&.\&.?
.sp
Returns the ansi code to reset any current settings and apply those from the supplied list
.sp
by calling punk::ansi::a with no arguments - the result is a reset to plain text
.sp
e\&.g to set foreground red and bold
.sp
punk::ansi::a red bold
.sp
to set background red
.sp
punk::ansi::a Red
.sp
see \fBpunk::ansi::a?\fR to display a list of codes
.TP
\fBget_code_name\fR \fIcode\fR
.sp
for example
@ -474,6 +550,59 @@ A string created by any move_emit_return for punk::ansi would not behave in an i
.TP
\fBmove_down\fR \fIn\fR
.TP
\fBmove_column\fR \fIcol\fR
.TP
\fBmove_row\fR \fIrow\fR
.sp
VPA - Vertical Line Position Absolute
.TP
\fBcursor_save\fR
.sp
equivalent term::ansi::code::ctrl::sc
.sp
This is the ANSI/SCO cursor save as opposed to the DECSC version
.sp
On many terminals either will work - but cursor_save_dec is shorter and perhaps more widely supported
.TP
\fBcursor_restore\fR
.sp
equivalent term::ansi::code::ctrl::rc
.sp
ANSI/SCO - see also cursor_restore_dec for the DECRC version
.TP
\fBcursor_save_dec\fR
.sp
equivalent term::ansi::code::ctrl::sca
.sp
DECSC
.TP
\fBcursor_restore_attributes\fR
.sp
equivalent term::ansi::code::ctrl::rca
.sp
DECRC
.TP
\fBenable_line_wrap\fR
.sp
enable automatic line wrapping when characters entered beyond rightmost column
.sp
This will also allow forward movements to move to subsequent lines
.sp
This is DECAWM - and is the same sequence output by 'tput smam'
.TP
\fBdisable_line_wrap\fR
.sp
disable automatic line wrapping
.sp
reset DECAWM - same sequence output by 'tput rmam'
tput rmam
.TP
\fBquery_mode_line_wrap\fR
.sp
DECRQM to query line-wrap state
.sp
The punk::ansi::query_mode_ functions just emit the ansi query sequence\&.
.TP
\fBerase_line\fR
.TP
\fBerase_sol\fR
@ -482,6 +611,20 @@ Erase to start of line, leaving cursor position alone\&.
.TP
\fBerase_eol\fR
.TP
\fBscroll_up\fR \fIn\fR
.TP
\fBscroll_down\fR \fIn\fR
.TP
\fBinsert_spaces\fR \fIcount\fR
.TP
\fBdelete_characters\fR \fIcount\fR
.TP
\fBerase_characters\fR \fIcount\fR
.TP
\fBinsert_lines\fR \fIcount\fR
.TP
\fBdelete_lines\fR \fIcount\fR
.TP
\fBcursor_pos\fR
.sp
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
@ -494,12 +637,44 @@ These functions will emit the code - but read it in from stdin so that it doesn'
.sp
The punk::ansi::cursor_pos function is used by punk::console::get_cursor_pos and punk::console::get_cursor_pos_list
.TP
\fBrequest_cursor_information\fR
.sp
DECRQPSR (DEC Request Presentation State Report) for DECCCIR Cursor Information report
.sp
When written to the terminal, this sequence causes the terminal to emit cursor information to stdin
.sp
A stdin readloop will need to be in place to read this information
.TP
\fBrequest_tabstops\fR
.sp
DECRQPSR (DEC Request Presentation State Report) for DECTABSR Tab stop report
.sp
When written to the terminal, this sequence causes the terminal to emit tabstop information to stdin
.TP
\fBtitleset\fR \fIwindowtitles\fR
.sp
Returns the code to set the title of the terminal window to windowtitle
.sp
This may not work on terminals which have multiple panes/windows
.PP
.SS "NAMESPACE PUNK::ANSI::CODETYPE"
.PP
API functions for punk::ansi::codetype
.PP
Utility functions for processing ansi code sequences
.TP
\fBis_sgr_reset\fR \fIcode\fR
.sp
Return a boolean indicating whether this string has a trailing pure SGR reset
.sp
Note that if the reset is not the very last item in the string - it will not be detected\&.
.sp
This is primarily intended for testing a single ansi code sequence, but code can be any string where the trailing SGR code is to be tested\&.
.TP
\fBhas_sgr_leadingreset\fR \fIcode\fR
.sp
The reset must be the very first item in code to be detected\&. Trailing strings/codes ignored\&.
.PP
.SS "NAMESPACE PUNK::ANSI::TA"
.PP
text ansi functions
@ -551,7 +726,36 @@ Return the character length after stripping ansi codes - not the printing length
.PP
.SS "NAMESPACE PUNK::ANSI::ANSISTRING"
.PP
punk::ansi::string ensemble
punk::ansi::ansistring ensemble - ansi-aware string operations
.PP
Working with strings containing ansi in a way that preserves/understands the codes is always going to be significantly slower than working with plain strings
.PP
Just as working with other forms of markup such as HTML - you simply need to be aware of the tradeoffs and design accordingly\&.
.TP
\fBVIEW\fR \fIstring\fR
.sp
Return a string with specific ANSI control characters substituted with visual equivalents frome the appropriate unicode C0 and C1 visualisation sets
.sp
For debugging purposes, certain other standard control characters are converted to visual representation, for example backspace (mapped to \\\\U2408 '\\U2408')
.sp
Horizontal tab is mapped to \\\\U2409 '\\U2409'\&. For many of the punk terminal text operations, tabs have already been mapped to the appropriate number of spaces using textutil::tabify functions
.sp
As punkshell uses linefeed where possible in preference to crlf even on windows, cr is mapped to \\\\U240D '\\U240D' - but lf is left as is\&.
.TP
\fBCOUNT\fR \fIstring\fR
.sp
Returns the count of visible graphemes and non-ansi control characters
.sp
Incomplete! grapheme clustering support not yet implemented - only diacritics are currently clustered to count as one grapheme\&.
.sp
This will not count strings hidden inside a 'privacy message' or other ansi codes which may have content between their opening escape and their termination sequence\&.
.sp
This is not quite equivalent to calling string length on the result of stripansi $string due to diacritics and/or grapheme combinations
.sp
Note that this returns the number of characters in the payload (after applying combiners)
It is not always the same as the width of the string as rendered on a terminal due to 2wide Unicode characters and the usual invisible control characters such as \\r and \\n
.sp
To get the width, use punk::ansi::printing_length instead, which is also ansi aware\&.
.TP
\fBindex\fR \fIstring\fR \fIindex\fR
.sp

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

@ -347,7 +347,7 @@ Serious consideration should be given to using TEPAM if suitable for your projec
.PP
packages used by punk::args
.IP \(bu
\fBTcl 8\&.6\fR
\fBTcl 8\&.6-\fR
.PP
.SH API
.SS "NAMESPACE PUNK::ARGS::CLASS"

52
src/embedded/man/files/_module_overtype-1.5.3.tm.n → src/embedded/man/files/punk/_module_assertion-0.1.0.tm.n

@ -1,8 +1,8 @@
'\"
'\" Generated from file '_module_overtype-1\&.5\&.3\&.tm\&.man' by tcllib/doctools with format 'nroff'
'\" Generated from file '_module_assertion-0\&.1\&.0\&.tm\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2024
'\"
.TH "overtype_module_overtype" 0 1\&.5\&.3 doc "overtype text layout"
.TH "shellspy_module_punk::assertion" 0 0\&.1\&.0 doc "per-namespace assertions with"
.\" The -*- nroff -*- definitions below are for supplemental macros used
.\" in Tcl/Tk manual entries.
.\"
@ -272,39 +272,55 @@ Database Class: \\fB\\$3\\fR
..
.BS
.SH NAME
overtype_module_overtype \- overtype text layout - ansi aware
shellspy_module_punk::assertion \- assertion alternative to control::assert
.SH SYNOPSIS
package require \fBovertype \fR
package require \fBpunk::assertion \fR
.sp
.BE
.SH DESCRIPTION
.PP
-
The punk::assertion library has the same semantics as Tcllib's control::assert library for the assert command itself\&.
.PP
The main difference is the way in which assert is enabled/disabled in namespaces\&.
.PP
Due to commands such as 'namespace path' - the assert command could be available in arbitrary namespaces unrelated by tree structure to namespaces where assert has been directly imported\&.
.PP
punk::assertion::active 0|1 allows activating and deactivating assertions in any namespace where the assert command is available - but only affecting the activations state of the namespace in which it is called\&.
.PP
If such a non-primary assertion namespace never had active set to 0 or 1 - then it will activate/deactivate when the namespace corresponding to the found assert command (primary) is activated/deactivated\&.
.PP
Once marked active or inactive - such a non-primary namespace will no longer follow the primary
.SH OVERVIEW
.PP
overview of overtype
overview of punk::assertion
.SS CONCEPTS
.PP
-
.SS DEPENDENCIES
.PP
packages used by overtype
packages used by punk::assertion
.IP \(bu
\fBTcl 8\&.6\fR
.IP \(bu
\fBtextutil\fR
.IP \(bu
\fBpunk::ansi\fR
.sp
- required to detect, split, strip and calculate lengths of text possibly containing ansi codes
.IP \(bu
\fBpunk::char\fR
.sp
- box drawing - and also unicode character width determination for proper layout of text with double-column-width chars
.PP
.SH API
.SS "NAMESPACE PUNK::ASSERTION::CLASS"
.PP
class definitions
.PP
.SS "NAMESPACE PUNK::ASSERTION"
.PP
Core API functions for punk::assertion
.PP
.SS "NAMESPACE PUNK::ASSERTION::LIB"
.PP
Secondary functions that are part of the API
.PP
.SH INTERNAL
.SS "NAMESPACE PUNK::ASSERTION::SYSTEM"
.PP
Internal functions that are not part of the API
.SH KEYWORDS
ansi, module, text
assert, assertion, debug, module
.SH COPYRIGHT
.nf
Copyright (c) 2024

42
src/embedded/man/files/_module_overtype-1.5.2.tm.n → src/embedded/man/files/punk/_module_basictelnet-0.1.0.tm.n

@ -1,8 +1,8 @@
'\"
'\" Generated from file '_module_overtype-1\&.5\&.2\&.tm\&.man' by tcllib/doctools with format 'nroff'
'\" Generated from file '_module_basictelnet-0\&.1\&.0\&.tm\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2024
'\"
.TH "overtype_module_overtype" 0 1\&.5\&.2 doc "overtype text layout"
.TH "shellspy_module_punk::basictelnet" 0 0\&.1\&.0 doc "basic telnet client"
.\" The -*- nroff -*- definitions below are for supplemental macros used
.\" in Tcl/Tk manual entries.
.\"
@ -272,39 +272,45 @@ Database Class: \\fB\\$3\\fR
..
.BS
.SH NAME
overtype_module_overtype \- overtype text layout - ansi aware
shellspy_module_punk::basictelnet \- basic telnet client - DKF/Wiki
.SH SYNOPSIS
package require \fBovertype \fR
package require \fBpunk::basictelnet \fR
.sp
.BE
.SH DESCRIPTION
.PP
-
see https://wiki\&.tcl-lang\&.org/page/Tcl+Telnet
.SH OVERVIEW
.PP
overview of overtype
overview of punk::basictelnet
.SS CONCEPTS
.PP
-
.SS DEPENDENCIES
.PP
packages used by overtype
packages used by punk::basictelnet
.IP \(bu
\fBTcl 8\&.6\fR
.IP \(bu
\fBtextutil\fR
.IP \(bu
\fBpunk::ansi\fR
.sp
- required to detect, split, strip and calculate lengths of text possibly containing ansi codes
.IP \(bu
\fBpunk::char\fR
.sp
- box drawing - and also unicode character width determination for proper layout of text with double-column-width chars
.PP
.SH API
.SS "NAMESPACE PUNK::BASICTELNET::CLASS"
.PP
class definitions
.PP
.SS "NAMESPACE PUNK::BASICTELNET"
.PP
Core API functions for punk::basictelnet
.PP
.SS "NAMESPACE PUNK::BASICTELNET::LIB"
.PP
Secondary functions that are part of the API
.PP
.SH INTERNAL
.SS "NAMESPACE PUNK::BASICTELNET::SYSTEM"
.PP
Internal functions that are not part of the API
.SH KEYWORDS
ansi, module, text
module
.SH COPYRIGHT
.nf
Copyright (c) 2024

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

@ -304,7 +304,7 @@ This pseudo-package was created to minimize dependencies for punk::char and punk
.PP
packages used by punk::encmime
.IP \(bu
\fBTcl 8\&.6\fR
\fBTcl 8\&.6-\fR
.PP
.SH API
.SS "NAMESPACE PUNK::ENCMIME::CLASS"

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

@ -373,7 +373,7 @@ CR line-endings that are intended to be interpreted as such should be mapped to
.PP
packages needed by punk::fileline
.IP \(bu
\fBTcl 8\&.6\fR
\fBTcl 8\&.6-\fR
.IP \(bu
\fBpunk::args\fR
.PP

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

@ -290,7 +290,7 @@ Experiments in functional program related features and integration with the patt
.PP
packages used by punk::flib
.IP \(bu
\fBTcl 8\&.6\fR
\fBTcl 8\&.6-\fR
.IP \(bu
\fBpattern 1\&.2\&.4\fR
.PP

131
src/embedded/man/files/punk/_module_lib-0.1.0.tm.n → src/embedded/man/files/punk/_module_lib-0.1.1.tm.n

@ -1,8 +1,8 @@
'\"
'\" Generated from file '_module_lib-0\&.1\&.0\&.tm\&.man' by tcllib/doctools with format 'nroff'
'\" Generated from file '_module_lib-0\&.1\&.1\&.tm\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2024
'\"
.TH "punkshell_module_punk::lib" 0 0\&.1\&.0 doc "punk library"
.TH "punkshell_module_punk::lib" 0 0\&.1\&.1 doc "punk library"
.\" The -*- nroff -*- definitions below are for supplemental macros used
.\" in Tcl/Tk manual entries.
.\"
@ -276,8 +276,18 @@ punkshell_module_punk::lib \- punk general utility functions
.SH SYNOPSIS
package require \fBpunk::lib \fR
.sp
\fBlremove\fR \fIlist\fR ?index \&.\&.\&.?
.sp
\fBlpop\fR \fIlistvar\fR ?index?
.sp
\fBK\fR \fIx\fR \fIy\fR
.sp
\fBis_utf8_multibyteprefix\fR \fIstr\fR
.sp
\fBis_utf8_single\fR \fI1234bytes\fR
.sp
\fBget_utf8_leading\fR \fIrawbytes\fR
.sp
\fBhex2dec\fR ?option value\&.\&.\&.? \fIlist_largeHex\fR
.sp
\fBdex2hex\fR ?option value\&.\&.\&.? \fIlist_decimals\fR
@ -312,6 +322,14 @@ package require \fBpunk::lib \fR
.sp
\fBaskuser\fR \fIquestion\fR
.sp
\fBlinesort\fR ?sortoption ?val?\&.\&.\&.? \fItextblock\fR
.sp
\fBlist_as_lines\fR ?-joinchar char? \fIlinelist\fR
.sp
\fBlines_as_list\fR ?option value \&.\&.\&.? \fItext\fR
.sp
\fBopts_values\fR ?option value\&.\&.\&.? \fIoptionspecs\fR \fIrawargs\fR
.sp
.BE
.SH DESCRIPTION
.PP
@ -332,13 +350,29 @@ This requirement for no strong dependencies, means that many utility functions t
.PP
packages used by punk::lib
.IP \(bu
\fBTcl 8\&.6\fR
\fBTcl 8\&.6-\fR
.PP
.SH API
.SS "NAMESPACE PUNK::LIB::CLASS"
.PP
class definitions
.PP
.SS "NAMESPACE PUNK::LIB::COMPAT"
.PP
compatibility functions for features that may not be available in earlier Tcl versions
.PP
These are generally 'forward compatibility' functions ie allowing earlier versions to use later features/idioms by using a Tcl-only version of a missing builtin\&.
.PP
Such Tcl-only versions will inevitably be less performant - perhaps significantly so\&.
.TP
\fBlremove\fR \fIlist\fR ?index \&.\&.\&.?
.sp
Forwards compatible lremove for versions 8\&.6 or less to support equivalent 8\&.7 lremove
.TP
\fBlpop\fR \fIlistvar\fR ?index?
.sp
Forwards compatible lpop for versions 8\&.6 or less to support equivalent 8\&.7 lpop
.PP
.SS "NAMESPACE PUNK::LIB"
.PP
Core API functions for punk::lib
@ -351,6 +385,40 @@ see \fIhttps://wiki\&.tcl-lang\&.org/page/K\fR
.sp
It is used in cases where command-substitution at the calling-point performs some desired effect\&.
.TP
\fBis_utf8_multibyteprefix\fR \fIstr\fR
.sp
Returns a boolean if str is potentially a prefix for a multibyte utf-8 character
.sp
ie - tests if it is possible that appending more data will result in a utf-8 codepoint
.sp
Will return false for an already complete utf-8 codepoint
.sp
It is assumed the incomplete sequence is at the beginning of the bytes argument
.sp
Suitable input for this might be from the unreturned tail portion of get_utf8_leading $testbytes
.sp
e\&.g using: set head [get_utf8_leading $testbytes] ; set tail [string range $testbytes [string length $head] end]
.TP
\fBis_utf8_single\fR \fI1234bytes\fR
.sp
Tests input of 1,2,3 or 4 bytes and responds with a boolean indicating if it is a valid utf-8 character (codepoint)
.TP
\fBget_utf8_leading\fR \fIrawbytes\fR
.sp
return the leading portion of rawbytes that is a valid utf8 sequence\&.
.sp
This will stop at the point at which the bytes can't be interpreted as a complete utf-8 codepoint
.sp
e\&.g It will not return the first byte or 2 of a 3-byte utf-8 character if the last byte is missing, and will return only the valid utf-8 string from before the first byte of the incomplete character\&.
.sp
It will also only return the prefix before any bytes that cannot be part of a utf-8 sequence at all\&.
.sp
Note that while this will return valid utf8 - it has no knowledge of grapheme clusters or diacritics
.sp
This means if it is being used to process bytes split at some arbitrary point - the trailing data that isn't returned could be part of a grapheme cluster that belongs with the last character of the leading string already returned
.sp
The utf-8 BOM \\xEF\\xBB\\xBF is a valid UTF8 3-byte sequence and so can also be returned as part of the leading utf8 bytes
.TP
\fBhex2dec\fR ?option value\&.\&.\&.? \fIlist_largeHex\fR
.sp
Convert a list of (possibly large) unprefixed hex strings to their decimal values
@ -487,12 +555,16 @@ This function merges the two dicts whilst maintaining the key order of main foll
.TP
\fBaskuser\fR \fIquestion\fR
.sp
A very basic utility to read an answer from stdin
A basic utility to read an answer from stdin
.sp
The prompt is written to the terminal and then it waits for a user to type something
.sp
stdin is temporarily configured to blocking and then put back in its original state in case it wasn't already so\&.
.sp
If the terminal is using punk::console and is in raw mode - the terminal will temporarily be put in line mode\&.
.sp
(Generic terminal raw vs linemode detection not yet present)
.sp
The user must hit enter to submit the response
.sp
The return value is the string if any that was typed prior to hitting enter\&.
@ -509,6 +581,57 @@ The question argument can be manually colourised using the various punk::ansi fu
}
.CE
.TP
\fBlinesort\fR ?sortoption ?val?\&.\&.\&.? \fItextblock\fR
.sp
Sort lines in textblock
.sp
Returns another textblock with lines sorted
.sp
options are flags as accepted by lsort ie -ascii -command -decreasing -dictionary -index -indices -integer -nocase -real -stride -unique
.TP
\fBlist_as_lines\fR ?-joinchar char? \fIlinelist\fR
.sp
This simply joines the elements of the list with -joinchar
.sp
It is mainly intended for use in pipelines where the primary argument comes at the end - but it can also be used as a general replacement for join $lines <le>
.sp
The sister function lines_as_list takes a block of text and splits it into lines - but with more options related to trimming the block and/or each line\&.
.TP
\fBlines_as_list\fR ?option value \&.\&.\&.? \fItext\fR
.sp
Returns a list of possibly trimmed lines depeding on options
.sp
The concept of lines is raw lines from splitting on newline after crlf is mapped to lf
.sp
- not console lines which may be entirely different due to control characters such as vertical tabs or ANSI movements
.TP
\fBopts_values\fR ?option value\&.\&.\&.? \fIoptionspecs\fR \fIrawargs\fR
.sp
Parse rawargs as a sequence of zero or more option-value pairs followed by zero or more values
.sp
Returns a dict of the form: opts <options_dict> values <values_dict>
.sp
ARGUMENTS:
.RS
.TP
multiline-string \fIoptionspecs\fR
.sp
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
-optionname -key val -key2 val2\&.\&.\&.
.sp
where the valid keys for each option specification are: -default -type -range -choices -optional
.TP
list \fIrawargs\fR
.sp
This is a list of the arguments to parse\&. Usually it will be the \\$args value from the containing proc
.RE
.sp
.PP
.SH INTERNAL
.SS "NAMESPACE PUNK::LIB::SYSTEM"

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

@ -298,7 +298,7 @@ Filesystem path utility functions
.PP
packages used by punk::path
.IP \(bu
\fBTcl 8\&.6\fR
\fBTcl 8\&.6-\fR
.PP
.SH API
.SS "NAMESPACE PUNK::PATH::CLASS"

482
src/embedded/man/files/punk/_module_sshrun-0.1.0.tm.n

@ -0,0 +1,482 @@
'\"
'\" Generated from file '_module_sshrun-0\&.1\&.0\&.tm\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2009
'\"
.TH "shellspy_module_punk::sshrun" 0 0\&.1\&.0 doc "punk::sshrun tclssh clone"
.\" The -*- nroff -*- definitions below are for supplemental macros used
.\" in Tcl/Tk manual entries.
.\"
.\" .AP type name in/out ?indent?
.\" Start paragraph describing an argument to a library procedure.
.\" type is type of argument (int, etc.), in/out is either "in", "out",
.\" or "in/out" to describe whether procedure reads or modifies arg,
.\" and indent is equivalent to second arg of .IP (shouldn't ever be
.\" needed; use .AS below instead)
.\"
.\" .AS ?type? ?name?
.\" Give maximum sizes of arguments for setting tab stops. Type and
.\" name are examples of largest possible arguments that will be passed
.\" to .AP later. If args are omitted, default tab stops are used.
.\"
.\" .BS
.\" Start box enclosure. From here until next .BE, everything will be
.\" enclosed in one large box.
.\"
.\" .BE
.\" End of box enclosure.
.\"
.\" .CS
.\" Begin code excerpt.
.\"
.\" .CE
.\" End code excerpt.
.\"
.\" .VS ?version? ?br?
.\" Begin vertical sidebar, for use in marking newly-changed parts
.\" of man pages. The first argument is ignored and used for recording
.\" the version when the .VS was added, so that the sidebars can be
.\" found and removed when they reach a certain age. If another argument
.\" is present, then a line break is forced before starting the sidebar.
.\"
.\" .VE
.\" End of vertical sidebar.
.\"
.\" .DS
.\" Begin an indented unfilled display.
.\"
.\" .DE
.\" End of indented unfilled display.
.\"
.\" .SO ?manpage?
.\" Start of list of standard options for a Tk widget. The manpage
.\" argument defines where to look up the standard options; if
.\" omitted, defaults to "options". The options follow on successive
.\" lines, in three columns separated by tabs.
.\"
.\" .SE
.\" End of list of standard options for a Tk widget.
.\"
.\" .OP cmdName dbName dbClass
.\" Start of description of a specific option. cmdName gives the
.\" option's name as specified in the class command, dbName gives
.\" the option's name in the option database, and dbClass gives
.\" the option's class in the option database.
.\"
.\" .UL arg1 arg2
.\" Print arg1 underlined, then print arg2 normally.
.\"
.\" .QW arg1 ?arg2?
.\" Print arg1 in quotes, then arg2 normally (for trailing punctuation).
.\"
.\" .PQ arg1 ?arg2?
.\" Print an open parenthesis, arg1 in quotes, then arg2 normally
.\" (for trailing punctuation) and then a closing parenthesis.
.\"
.\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
.if t .wh -1.3i ^B
.nr ^l \n(.l
.ad b
.\" # Start an argument description
.de AP
.ie !"\\$4"" .TP \\$4
.el \{\
. ie !"\\$2"" .TP \\n()Cu
. el .TP 15
.\}
.ta \\n()Au \\n()Bu
.ie !"\\$3"" \{\
\&\\$1 \\fI\\$2\\fP (\\$3)
.\".b
.\}
.el \{\
.br
.ie !"\\$2"" \{\
\&\\$1 \\fI\\$2\\fP
.\}
.el \{\
\&\\fI\\$1\\fP
.\}
.\}
..
.\" # define tabbing values for .AP
.de AS
.nr )A 10n
.if !"\\$1"" .nr )A \\w'\\$1'u+3n
.nr )B \\n()Au+15n
.\"
.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
.nr )C \\n()Bu+\\w'(in/out)'u+2n
..
.AS Tcl_Interp Tcl_CreateInterp in/out
.\" # BS - start boxed text
.\" # ^y = starting y location
.\" # ^b = 1
.de BS
.br
.mk ^y
.nr ^b 1u
.if n .nf
.if n .ti 0
.if n \l'\\n(.lu\(ul'
.if n .fi
..
.\" # BE - end boxed text (draw box now)
.de BE
.nf
.ti 0
.mk ^t
.ie n \l'\\n(^lu\(ul'
.el \{\
.\" Draw four-sided box normally, but don't draw top of
.\" box if the box started on an earlier page.
.ie !\\n(^b-1 \{\
\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
.\}
.el \}\
\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
.\}
.\}
.fi
.br
.nr ^b 0
..
.\" # VS - start vertical sidebar
.\" # ^Y = starting y location
.\" # ^v = 1 (for troff; for nroff this doesn't matter)
.de VS
.if !"\\$2"" .br
.mk ^Y
.ie n 'mc \s12\(br\s0
.el .nr ^v 1u
..
.\" # VE - end of vertical sidebar
.de VE
.ie n 'mc
.el \{\
.ev 2
.nf
.ti 0
.mk ^t
\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
.sp -1
.fi
.ev
.\}
.nr ^v 0
..
.\" # Special macro to handle page bottom: finish off current
.\" # box/sidebar if in box/sidebar mode, then invoked standard
.\" # page bottom macro.
.de ^B
.ev 2
'ti 0
'nf
.mk ^t
.if \\n(^b \{\
.\" Draw three-sided box if this is the box's first page,
.\" draw two sides but no top otherwise.
.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
.\}
.if \\n(^v \{\
.nr ^x \\n(^tu+1v-\\n(^Yu
\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
.\}
.bp
'fi
.ev
.if \\n(^b \{\
.mk ^y
.nr ^b 2
.\}
.if \\n(^v \{\
.mk ^Y
.\}
..
.\" # DS - begin display
.de DS
.RS
.nf
.sp
..
.\" # DE - end display
.de DE
.fi
.RE
.sp
..
.\" # SO - start of list of standard options
.de SO
'ie '\\$1'' .ds So \\fBoptions\\fR
'el .ds So \\fB\\$1\\fR
.SH "STANDARD OPTIONS"
.LP
.nf
.ta 5.5c 11c
.ft B
..
.\" # SE - end of list of standard options
.de SE
.fi
.ft R
.LP
See the \\*(So manual entry for details on the standard options.
..
.\" # OP - start of full description for a single option
.de OP
.LP
.nf
.ta 4c
Command-Line Name: \\fB\\$1\\fR
Database Name: \\fB\\$2\\fR
Database Class: \\fB\\$3\\fR
.fi
.IP
..
.\" # CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
.\" # CE - end code excerpt
.de CE
.fi
.RE
..
.\" # UL - underline word
.de UL
\\$1\l'|0\(ul'\\$2
..
.\" # QW - apply quotation marks to word
.de QW
.ie '\\*(lq'"' ``\\$1''\\$2
.\"" fix emacs highlighting
.el \\*(lq\\$1\\*(rq\\$2
..
.\" # PQ - apply parens and quotation marks to word
.de PQ
.ie '\\*(lq'"' (``\\$1''\\$2)\\$3
.\"" fix emacs highlighting
.el (\\*(lq\\$1\\*(rq\\$2)\\$3
..
.\" # QR - quoted range
.de QR
.ie '\\*(lq'"' ``\\$1''\\-``\\$2''\\$3
.\"" fix emacs highlighting
.el \\*(lq\\$1\\*(rq\\-\\*(lq\\$2\\*(rq\\$3
..
.\" # MT - "empty" string
.de MT
.QW ""
..
.BS
.SH NAME
shellspy_module_punk::sshrun \- Tcl procedures to execute tcl scripts in remote hosts
.SH SYNOPSIS
package require \fBpunk::sshrun \fR
.sp
connect \fIargs\fR
.sp
disconnect \fIhost\fR
.sp
push \fIhost\fR \fIscript\fR
.sp
send \fIhost\fR
.sp
send_exit \fIhost\fR
.sp
send_exit \fIhost\fR
.sp
pop_all \fIhost\fR \fIoutput_varname\fR
.sp
pop_read \fIhost\fR \fInumbytes\fR \fIoutput_varname\fR
.sp
hfileevent \fIhost\fR \fIreadable_writable\fR \fIscript\fR
.sp
hconfigure \fIhost\fR \fIargs\fR
.sp
rexec \fIhost\fR \fIscript\fR \fIoutput_varname\fR
.sp
get_filehandle \fIhost\fR
.sp
.BE
.SH DESCRIPTION
.PP
This is a clone of tclssh by Jose F\&. Nieves
.PP
The original repo is at: https://bitbucket\&.org/noaaport/tclssh/src/master/
.PP
This version is namespaced under punk::sshrun specifically for the Punk shell project - and may lag the original project or diverge\&.
.PP
You are encouraged to use the original Tclssh source from the above URL for your own projects
.SH OVERVIEW
.PP
overview of punk::sshrun
.PP
SYNOPSIS
.PP
package require punk::sshrun
.PP
-
.PP
punk::sshrun::connect [-t <tclsh_name>] [-- <ssh_options>] [<user>@]<host>
.PP
Defaults: -t tclsh
.SS CONCEPTS
.PP
-
.SS DEPENDENCIES
.PP
packages used by punk::sshrun
.IP \(bu
\fBTcl 8\&.6\fR
.IP \(bu
\fBcmdline\fR
.PP
.SH API
.SS "NAMESPACE PUNK::SSHRUN::CLASS"
.PP
class definitions
.PP
.SS "NAMESPACE PUNK::SSHRUN"
.PP
Core API functions for punk::sshrun
.TP
connect \fIargs\fR
.sp
Must be called first\&.
.sp
This proc opens an io channel to the tclsh in the remote host (via ssh) that is kept in an internal variable for subsequent use\&.
.sp
The file handle can be retrieved if desired through the command: get_filehandle {host}
.TP
disconnect \fIhost\fR
.sp
Must be called last\&. Closes the filehandle opened by connect\&.
.TP
push \fIhost\fR \fIscript\fR
.sp
<script> can be any tcl code\&.
.sp
For example, if the remote host is named "diablo"
.CS
ssh::push "diablo" "exec date"
ssh::push "diablo" "exec uname -a"
.CE
.sp
The commands are note executed immediately\&. Instead, the "push" proc simply accumulates them in a list that is sent to the host when the "send" procedure is executed\&.
.sp
Each push proc inserts the newline '\\n' character after each <script>
.sp
In the above example\&. Internally, each <script> is a member of a list, and when the "send" proc is invoked the entire script is constructed as a "join <list> \\n
.TP
send \fIhost\fR
.sp
This proc does the equivalent of a
.CS
puts <filehandle> [join <script_list> \\n]
flush <filehandle>
.CE
.TP
send_exit \fIhost\fR
.sp
This proc is similar to the above, but it "pushes" an exit command at the end of the script\&. The proc does the equivalent of
.CS
ssh::push <host> "exit"
ssh::send <host>
.CE
.sp
The net effect if this is that the remote host's tclsh will exit, so that the filehandle receives an eof and we can use
.CS
[read <filehandle>]
.CE
.sp
to read the entire output at once (see the pop proc below)
.TP
send_exit \fIhost\fR
.sp
After executing a "send", this can be used to read one line of output\&. The proc does the equivalent of
.CS
[gets <filehandle> line]
.CE
.TP
pop_all \fIhost\fR \fIoutput_varname\fR
.sp
This proc does the equivalent of
.CS
while {[pop_line $host line] >=0} {
puts $line;
}
.CE
.sp
but all the output is returned as one string in output_varname\&.
.sp
It should be used only when we know that the remote host's tclsh will exit, so that the above code will detect the eof and exit
.sp
(see the send_exit proc above)
.sp
The function returns the number of lines read (0 if nothing is read before encoutering eof)
.TP
pop_read \fIhost\fR \fInumbytes\fR \fIoutput_varname\fR
.sp
Returns: numbytes read\&. If numbytes is not positive, then read is called without the numbytes argument\&.
.TP
hfileevent \fIhost\fR \fIreadable_writable\fR \fIscript\fR
.sp
Equivalent to:
.CS
fileevent <filehandle> $readable_writable $script
.CE
.TP
hconfigure \fIhost\fR \fIargs\fR
.TP
rexec \fIhost\fR \fIscript\fR \fIoutput_varname\fR
.sp
shortcut for:
.CS
ssh::rexec_nopop $host $script
ssh::pop_all $host outputvar
.CE
.TP
get_filehandle \fIhost\fR
.PP
.SS "NAMESPACE PUNK::SSHRUN::LIB"
.PP
Secondary functions that are part of the API
.PP
.SH INTERNAL
.SS "NAMESPACE PUNK::SSHRUN::SYSTEM"
.PP
Internal functions that are not part of the API
.SH KEYWORDS
module, ssh
.SH COPYRIGHT
.nf
Copyright (c) 2009
.fi

40
src/embedded/man/files/_module_overtype-1.5.1.tm.n → src/embedded/man/files/punk/_module_uc-0.1.0.tm.n

@ -1,8 +1,8 @@
'\"
'\" Generated from file '_module_overtype-1\&.5\&.1\&.tm\&.man' by tcllib/doctools with format 'nroff'
'\" Generated from file '_module_uc-0\&.1\&.0\&.tm\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2024
'\"
.TH "overtype_module_overtype" 0 1\&.5\&.1 doc "overtype text layout"
.TH "shellspy_module_punk::uc" 0 0\&.1\&.0 doc "-"
.\" The -*- nroff -*- definitions below are for supplemental macros used
.\" in Tcl/Tk manual entries.
.\"
@ -272,9 +272,9 @@ Database Class: \\fB\\$3\\fR
..
.BS
.SH NAME
overtype_module_overtype \- overtype text layout - ansi aware
shellspy_module_punk::uc \- Module API
.SH SYNOPSIS
package require \fBovertype \fR
package require \fBpunk::uc \fR
.sp
.BE
.SH DESCRIPTION
@ -282,29 +282,35 @@ package require \fBovertype \fR
-
.SH OVERVIEW
.PP
overview of overtype
overview of punk::uc
.SS CONCEPTS
.PP
-
.SS DEPENDENCIES
.PP
packages used by overtype
packages used by punk::uc
.IP \(bu
\fBTcl 8\&.6\fR
.IP \(bu
\fBtextutil\fR
.IP \(bu
\fBpunk::ansi\fR
.sp
- required to detect, split, strip and calculate lengths of text possibly containing ansi codes
.IP \(bu
\fBpunk::char\fR
.sp
- box drawing - and also unicode character width determination for proper layout of text with double-column-width chars
.PP
.SH API
.SS "NAMESPACE PUNK::UC::CLASS"
.PP
class definitions
.PP
.SS "NAMESPACE PUNK::UC"
.PP
Core API functions for punk::uc
.PP
.SS "NAMESPACE PUNK::UC::LIB"
.PP
Secondary functions that are part of the API
.PP
.SH INTERNAL
.SS "NAMESPACE PUNK::UC::SYSTEM"
.PP
Internal functions that are not part of the API
.SH KEYWORDS
ansi, module, text
module
.SH COPYRIGHT
.nf
Copyright (c) 2024

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

@ -317,7 +317,7 @@ see punk::overlay
.PP
packages used by punk::mix::commandset::project
.IP \(bu
\fBTcl 8\&.6\fR
\fBTcl 8\&.6-\fR
.IP \(bu
\fBpunk::ns\fR
.IP \(bu

76
src/embedded/man/index.n

@ -281,16 +281,10 @@ punkshell_module_punk::fileline
ansi
.RS
.TP
\fBfiles/_module_overtype-1\&.5\&.3\&.tm\&.n\fR
\fBfiles/_module_overtype-1\&.6\&.2\&.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
\fBfiles/punk/_module_ansi-0\&.1\&.1\&.tm\&.n\fR
punkshell_module_punk::ansi
.RE
args
@ -305,6 +299,18 @@ arguments
\fBfiles/punk/_module_args-0\&.1\&.0\&.tm\&.n\fR
punkshell_module_punk::args
.RE
assert
.RS
.TP
\fBfiles/punk/_module_assertion-0\&.1\&.0\&.tm\&.n\fR
shellspy_module_punk::assertion
.RE
assertion
.RS
.TP
\fBfiles/punk/_module_assertion-0\&.1\&.0\&.tm\&.n\fR
shellspy_module_punk::assertion
.RE
capability
.RS
.TP
@ -320,9 +326,15 @@ punkshell__project_changes
console
.RS
.TP
\fBfiles/punk/_module_ansi-0\&.1\&.0\&.tm\&.n\fR
\fBfiles/punk/_module_ansi-0\&.1\&.1\&.tm\&.n\fR
punkshell_module_punk::ansi
.RE
debug
.RS
.TP
\fBfiles/punk/_module_assertion-0\&.1\&.0\&.tm\&.n\fR
shellspy_module_punk::assertion
.RE
encoding
.RS
.TP
@ -359,22 +371,16 @@ punkshell_module_punk::path
lib
.RS
.TP
\fBfiles/punk/_module_lib-0\&.1\&.0\&.tm\&.n\fR
\fBfiles/punk/_module_lib-0\&.1\&.1\&.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
\fBfiles/_module_overtype-1\&.6\&.2\&.tm\&.n\fR
overtype_module_overtype
.TP
\fBfiles/punk/_module_ansi-0\&.1\&.0\&.tm\&.n\fR
\fBfiles/punk/_module_ansi-0\&.1\&.1\&.tm\&.n\fR
punkshell_module_punk::ansi
.TP
\fBfiles/punk/_module_args-0\&.1\&.0\&.tm\&.n\fR
@ -395,11 +401,23 @@ punkshell_module_punk::fileline
\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
\fBfiles/punk/_module_lib-0\&.1\&.1\&.tm\&.n\fR
punkshell_module_punk::lib
.TP
\fBfiles/punk/_module_path-0\&.1\&.0\&.tm\&.n\fR
punkshell_module_punk::path
.TP
\fBfiles/punk/_module_assertion-0\&.1\&.0\&.tm\&.n\fR
shellspy_module_punk::assertion
.TP
\fBfiles/punk/_module_basictelnet-0\&.1\&.0\&.tm\&.n\fR
shellspy_module_punk::basictelnet
.TP
\fBfiles/punk/_module_sshrun-0\&.1\&.0\&.tm\&.n\fR
shellspy_module_punk::sshrun
.TP
\fBfiles/punk/_module_uc-0\&.1\&.0\&.tm\&.n\fR
shellspy_module_punk::uc
.RE
parse
.RS
@ -464,28 +482,28 @@ punkshell__project_changes
\fBfiles/project_intro\&.n\fR
punkshell__project_intro
.RE
ssh
.RS
.TP
\fBfiles/punk/_module_sshrun-0\&.1\&.0\&.tm\&.n\fR
shellspy_module_punk::sshrun
.RE
string
.RS
.TP
\fBfiles/punk/_module_ansi-0\&.1\&.0\&.tm\&.n\fR
\fBfiles/punk/_module_ansi-0\&.1\&.1\&.tm\&.n\fR
punkshell_module_punk::ansi
.RE
terminal
.RS
.TP
\fBfiles/punk/_module_ansi-0\&.1\&.0\&.tm\&.n\fR
\fBfiles/punk/_module_ansi-0\&.1\&.1\&.tm\&.n\fR
punkshell_module_punk::ansi
.RE
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
\fBfiles/_module_overtype-1\&.6\&.2\&.tm\&.n\fR
overtype_module_overtype
.TP
\fBfiles/punk/_module_fileline-0\&.1\&.0\&.tm\&.n\fR
@ -494,7 +512,7 @@ punkshell_module_punk::fileline
utility
.RS
.TP
\fBfiles/punk/_module_lib-0\&.1\&.0\&.tm\&.n\fR
\fBfiles/punk/_module_lib-0\&.1\&.1\&.tm\&.n\fR
punkshell_module_punk::lib
.RE
.RE

24
src/embedded/man/toc.n

@ -274,13 +274,7 @@ 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
\fIfiles/_module_overtype-1\&.6\&.2\&.tm\&.n\fR: overtype text layout - ansi aware
.TP
\fBpunkshell\fR
\fIfiles/main\&.n\fR: punkshell - Core
@ -292,7 +286,7 @@ doc
\fIfiles/project_intro\&.n\fR: Introduction to punkshell
.TP
\fBpunkshell_module_punk::ansi\fR
\fIfiles/punk/_module_ansi-0\&.1\&.0\&.tm\&.n\fR: Ansi string functions
\fIfiles/punk/_module_ansi-0\&.1\&.1\&.tm\&.n\fR: Ansi string functions
.TP
\fBpunkshell_module_punk::args\fR
\fIfiles/punk/_module_args-0\&.1\&.0\&.tm\&.n\fR: args parsing
@ -313,10 +307,22 @@ doc
\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
\fIfiles/punk/_module_lib-0\&.1\&.1\&.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: dec commandset - project
.TP
\fBpunkshell_module_punk::path\fR
\fIfiles/punk/_module_path-0\&.1\&.0\&.tm\&.n\fR: Filesystem path utilities
.TP
\fBshellspy_module_punk::assertion\fR
\fIfiles/punk/_module_assertion-0\&.1\&.0\&.tm\&.n\fR: assertion alternative to control::assert
.TP
\fBshellspy_module_punk::basictelnet\fR
\fIfiles/punk/_module_basictelnet-0\&.1\&.0\&.tm\&.n\fR: basic telnet client - DKF/Wiki
.TP
\fBshellspy_module_punk::sshrun\fR
\fIfiles/punk/_module_sshrun-0\&.1\&.0\&.tm\&.n\fR: Tcl procedures to execute tcl scripts in remote hosts
.TP
\fBshellspy_module_punk::uc\fR
\fIfiles/punk/_module_uc-0\&.1\&.0\&.tm\&.n\fR: Module API

12
src/embedded/md/.doc/tocdoc

@ -1,18 +1,20 @@
[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/_module_overtype-1.6.2.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_ansi-0.1.1.tm.md punkshell_module_punk::ansi {Ansi string functions}]
[item doc/files/punk/_module_args-0.1.0.tm.md punkshell_module_punk::args {args parsing}]
[item doc/files/punk/_module_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 {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/_module_lib-0.1.1.tm.md punkshell_module_punk::lib {punk general utility functions}]
[item doc/files/punk/mix/commandset/_module_project-0.1.0.tm.md punkshell_module_punk::mix::commandset::project {dec commandset - project}]
[item doc/files/punk/_module_path-0.1.0.tm.md punkshell_module_punk::path {Filesystem path utilities}]
[item doc/files/punk/_module_assertion-0.1.0.tm.md shellspy_module_punk::assertion {assertion alternative to control::assert}]
[item doc/files/punk/_module_basictelnet-0.1.0.tm.md shellspy_module_punk::basictelnet {basic telnet client - DKF/Wiki}]
[item doc/files/punk/_module_sshrun-0.1.0.tm.md shellspy_module_punk::sshrun {Tcl procedures to execute tcl scripts in remote hosts}]
[item doc/files/punk/_module_uc-0.1.0.tm.md shellspy_module_punk::uc {Module API}]
[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/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}}}}
doc {doc/toc {{doc/files/punk/_module_uc-0.1.0.tm.md shellspy_module_punk::uc {Module API}} {doc/files/punk/_module_lib-0.1.1.tm.md punkshell_module_punk::lib {punk general utility functions}} {doc/files/punk/_module_assertion-0.1.0.tm.md shellspy_module_punk::assertion {assertion alternative to control::assert}} {doc/files/project_intro.md punkshell__project_intro {Introduction to punkshell}} {doc/files/_module_overtype-1.6.2.tm.md overtype_module_overtype {overtype text layout - ansi aware}} {doc/files/punk/_module_sshrun-0.1.0.tm.md shellspy_module_punk::sshrun {Tcl procedures to execute tcl scripts in remote hosts}} {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_basictelnet-0.1.0.tm.md shellspy_module_punk::basictelnet {basic telnet client - DKF/Wiki}} {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/punk/_module_ansi-0.1.1.tm.md punkshell_module_punk::ansi {Ansi string functions}} {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}}}}

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

@ -1,78 +0,0 @@
[//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

@ -1,78 +0,0 @@
[//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

@ -1,78 +0,0 @@
[//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

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

@ -0,0 +1,139 @@
[//000000001]: # (overtype\_module\_overtype \- overtype text layout)
[//000000002]: # (Generated from file '\_module\_overtype\-1\.6\.2\.tm\.man' by tcllib/doctools with format 'markdown')
[//000000003]: # (Copyright &copy; 2024)
[//000000004]: # (overtype\_module\_overtype\(0\) 1\.6\.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)
- [Namespace overtype](#subsection3)
- [Keywords](#keywords)
- [Copyright](#copyright)
# <a name='synopsis'></a>SYNOPSIS
package require overtype
[__overtype::left__ *args*](#1)
[__overtype::renderline__ *args*](#2)
# <a name='description'></a>DESCRIPTION
\-
# <a name='section2'></a>Overview
overview of overtype
## <a name='subsection1'></a>Concepts
\-
## <a name='subsection2'></a>dependencies
packages used by overtype
- __Tcl 8\.6__
- __textutil__
- __punk::ansi__
\- required to detect, split, strip and calculate lengths of text possibly
containing ansi codes
- __punk::char__
\- box drawing \- and also unicode character width determination for proper
layout of text with double\-column\-width chars
# <a name='section3'></a>API
## <a name='subsection3'></a>Namespace overtype
Core API functions for overtype
- <a name='1'></a>__overtype::left__ *args*
usage: ?\-transparent \[0&#124;1\]? ?\-overflow \[1&#124;0\]? ?\-ellipsis \[1&#124;0\]?
?\-ellipsistext \.\.\.? undertext overtext
- <a name='2'></a>__overtype::renderline__ *args*
renderline is the core engine for overtype string processing \(frames &
textblocks\), and the raw mode commandline repl for the Tcl Punk Shell
It is also a central part of an ansi \(micro\) virtual terminal\-emulator of
sorts
This system does a half decent job at rendering 90's ANSI art to manipulable
colour text blocks that can be joined & framed for layout display within a
unix or windows terminal
Renderline helps maintain ANSI text styling reset/replay codes so that the
styling of one block doesn't affect another\.
Calling on the punk::ansi library \- it can coalesce codes to keep the size
down\.
It is a giant mess of doing exactly what common wisdom says not to do\.\.\.
lots at once\.
renderline is part of the Unicode and ANSI aware Overtype system which
'renders' a block of text onto a static underlay
The underlay is generally expected to be an ordered set of lines or a
rectangular text block analogous to a terminal screen \- but it can also be
ragged in line length, or just blank\.
The overlay couuld be similar \- in which case it may often be used to
overwrite a column or section of the underlay\.
The overlay could however be a sequence of ANSI\-laden text that jumps all
over the place\.
renderline itself only deals with a single line \- or sometimes a single
character\. It is generally called from a loop that does further
terminal\-like or textblock processing\.
By suppyling the \-info 1 option \- it can return various fields indicating
the state of the render\.
The main 3 are the result, overflow\_right, and unapplied\.
Renderline handles cursor movements from either keystrokes or ANSI sequences
but for a full system the aforementioned loop will need to be in place to
manage the set of lines under manipulation\.
# <a name='keywords'></a>KEYWORDS
[ansi](\.\./\.\./index\.md\#ansi), [module](\.\./\.\./index\.md\#module),
[text](\.\./\.\./index\.md\#text)
# <a name='copyright'></a>COPYRIGHT
Copyright &copy; 2024

390
src/embedded/md/doc/files/punk/_module_ansi-0.1.0.tm.md

@ -1,390 +0,0 @@
[//000000001]: # (punkshell\_module\_punk::ansi \- punk Ansi library)
[//000000002]: # (Generated from file '\_module\_ansi\-0\.1\.0\.tm\.man' by tcllib/doctools with format 'markdown')
[//000000003]: # (Copyright &copy; 2023)
[//000000004]: # (punkshell\_module\_punk::ansi\(0\) 0\.1\.0 doc "punk Ansi 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::ansi \- Ansi string 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::ansi](#subsection3)
- [Namespace punk::ansi::ta](#subsection4)
- [Namespace punk::ansi::ansistring](#subsection5)
- [Keywords](#keywords)
- [Copyright](#copyright)
# <a name='synopsis'></a>SYNOPSIS
package require punk::ansi
[__stripansi__ *text*](#1)
[__a?__ ?ansicode\.\.\.?](#2)
[__a\+__ ?ansicode\.\.\.?](#3)
[__a__ ?ansicode\.\.\.?](#4)
[__get\_code\_name__ *code*](#5)
[__reset__](#6)
[__reset\_soft__](#7)
[__reset\_colour__](#8)
[__clear__](#9)
[__clear\_above__](#10)
[__clear\_below__](#11)
[__cursor\_on__](#12)
[__cursor\_off__](#13)
[__move__ *row* *col*](#14)
[__move\_emit__ *row* *col* *data* ?row col data\.\.\.?](#15)
[__move\_forward__ *n*](#16)
[__move\_back__ *n*](#17)
[__move\_up__ *n*](#18)
[__move\_down__ *n*](#19)
[__erase\_line__](#20)
[__erase\_sol__](#21)
[__erase\_eol__](#22)
[__cursor\_pos__](#23)
[__titleset__ *windowtitles*](#24)
[__detect__ *text*](#25)
[__detect\_csi__ *text*](#26)
[__detect\_sgr__ *text*](#27)
[__strip__ *text*](#28)
[__length__ *text*](#29)
[__index__ *string* *index*](#30)
# <a name='description'></a>DESCRIPTION
Ansi based terminal control string functions
See __punk::ansi::console__ for related functions for controlling a console
# <a name='section2'></a>Overview
overview of punk::ansi
punk::ansi functions return their values \- no implicit emission to
console/stdout
## <a name='subsection1'></a>Concepts
Ansi codes can be used to control most terminals on most platforms in an
'almost' standard manner
There are many differences in terminal implementations \- but most should support
a core set of features
punk::ansi does not contain any code for direct terminal manipulation via the
local system APIs\.
Sticking to ansi codes where possible may be better for cross\-platform and
remote operation where such APIs are unlikely to be useable\.
## <a name='subsection2'></a>dependencies
packages used by punk::ansi
- __Tcl 8\.6__
# <a name='section3'></a>API
## <a name='subsection3'></a>Namespace punk::ansi
Core API functions for punk::ansi
- <a name='1'></a>__stripansi__ *text*
Return a string with ansi codes stripped out
- <a name='2'></a>__a?__ ?ansicode\.\.\.?
Return an ansi string representing a table of codes and a panel showing the
colours
- <a name='3'></a>__a\+__ ?ansicode\.\.\.?
Returns the ansi code to apply those from the supplied list \- without any
reset being performed first
e\.g to set foreground red and bold
punk::ansi::a red bold
to set background red
punk::ansi::a Red
see __punk::ansi::a?__ to display a list of codes
- <a name='4'></a>__a__ ?ansicode\.\.\.?
Returns the ansi code to reset any current settings and apply those from the
supplied list
by calling punk::ansi::a with no arguments \- the result is a reset to plain
text
e\.g to set foreground red and bold
punk::ansi::a red bold
to set background red
punk::ansi::a Red
see __punk::ansi::a?__ to display a list of codes
- <a name='5'></a>__get\_code\_name__ *code*
for example
get\_code\_name red will return 31
get\_code\_name 31 will return red
- <a name='6'></a>__reset__
reset console
- <a name='7'></a>__reset\_soft__
- <a name='8'></a>__reset\_colour__
reset colour only
- <a name='9'></a>__clear__
- <a name='10'></a>__clear\_above__
- <a name='11'></a>__clear\_below__
- <a name='12'></a>__cursor\_on__
- <a name='13'></a>__cursor\_off__
- <a name='14'></a>__move__ *row* *col*
Return an ansi sequence to move to row,col
aka cursor home
- <a name='15'></a>__move\_emit__ *row* *col* *data* ?row col data\.\.\.?
Return an ansi string representing a move to row col with data appended
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
Compare to punk::console::move\_emit which calls this function \- but writes
it to stdout
punk::console::move\_emit\_return will also return the cursor to the original
position
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\.
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\.
punk::console::move\_emit\_return does it by emitting that code and starting a
loop to read stdin
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\.
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:
punk::ansi::move_emit 10 10 blah {*}[punk::console::get_cursor_pos_list] DONE
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\.
- <a name='16'></a>__move\_forward__ *n*
- <a name='17'></a>__move\_back__ *n*
- <a name='18'></a>__move\_up__ *n*
- <a name='19'></a>__move\_down__ *n*
- <a name='20'></a>__erase\_line__
- <a name='21'></a>__erase\_sol__
Erase to start of line, leaving cursor position alone\.
- <a name='22'></a>__erase\_eol__
- <a name='23'></a>__cursor\_pos__
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
The output on screen will look something like ^\[\[47;3R
Use punk::console::get\_cursor\_pos or punk::console::get\_cursor\_pos\_list
instead\.
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\.
The punk::ansi::cursor\_pos function is used by punk::console::get\_cursor\_pos
and punk::console::get\_cursor\_pos\_list
- <a name='24'></a>__titleset__ *windowtitles*
Returns the code to set the title of the terminal window to windowtitle
This may not work on terminals which have multiple panes/windows
## <a name='subsection4'></a>Namespace punk::ansi::ta
text ansi functions
based on but not identical to the Perl Text Ansi module:
https://github\.com/perlancar/perl\-Text\-ANSI\-Util/blob/master/lib/Text/ANSI/BaseUtil\.pm
- <a name='25'></a>__detect__ *text*
Return a boolean indicating whether Ansi codes were detected in text
- <a name='26'></a>__detect\_csi__ *text*
Return a boolean indicating whether an Ansi Control Sequence Introducer
\(CSI\) was detected in text
The csi is often represented in code as \\x1b or \\033 followed by a left
bracket \[
The initial byte or escape is commonly referenced as ESC in Ansi
documentation
There is also a multi\-byte escape sequence \\u009b
This is less commonly used but is also detected here
\(This function is not in perl ta\)
- <a name='27'></a>__detect\_sgr__ *text*
Return a boolean indicating whether an ansi Select Graphics Rendition code
was detected\.
This is the set of CSI sequences ending in 'm'
This is most commonly an Ansi colour code \- but also things such as
underline and italics
An SGR with empty or a single zero argument is a reset of the SGR features \-
this is also detected\.
\(This function is not in perl ta\)
- <a name='28'></a>__strip__ *text*
Return text stripped of Ansi codes
This is a tailcall to punk::ansi::stripansi
- <a name='29'></a>__length__ *text*
Return the character length after stripping ansi codes \- not the printing
length
## <a name='subsection5'></a>Namespace punk::ansi::ansistring
punk::ansi::string ensemble
- <a name='30'></a>__index__ *string* *index*
Takes a string that possibly contains ansi codes such as colour,underline
etc \(SGR codes\)
Returns the character \(with applied ansi effect\) at position index
The string could contain non SGR ansi codes \- and these will \(mostly\) be
ignored, so shouldn't affect the output\.
Some terminals don't hide 'privacy message' and other strings within an ESC
X ESC ^ or ESC \_ sequence \(terminated by ST\)
It's arguable some of these are application specific \- but this function
takes the view that they are probably non\-displaying \- so index won't see
them\.
If the caller wants just the character \- they should use a normal string
index after calling stripansi, or call stripansi afterwards\.
As any operation using end\-\+<int> will need to strip ansi to precalculate
the length anyway; the caller should probably just use stripansi and
standard string index if the ansi coded output isn't required and they are
using and end\-based index\.
In fact, any operation where the ansi info isn't required in the output
would probably be slightly more efficiently obtained by using stripansi and
normal string operations on that\.
The returned character will \(possibly\) have a leading ansi escape sequence
but no trailing escape sequence \- even if the string was taken from a
position immediately before a reset or other SGR ansi code
The ansi\-code prefix in the returned string is built up by concatenating
previous SGR ansi codes seen \- but it is optimised to re\-start the process
if any full SGR reset is encountered\.
The code sequence doesn't detect individual properties being turned on and
then off again, only full resets; so in some cases the ansi\-prefix may not
be as short as it could be\.
This shouldn't make any difference to the visual output \- but a possible
future enhancement is something to produce the shortest ansi sequence
possible
Notes:
This function has to split the whole string into plaintext & ansi codes even
for a very low index
Some sort of generator that parses more of the string as required might be
more efficient for large chunks\.
For end\-x operations we have to pre\-calculate the content\-length by
stripping the ansi \- which is also potentially sub\-optimal
# <a name='keywords'></a>KEYWORDS
[ansi](\.\./\.\./\.\./index\.md\#ansi), [console](\.\./\.\./\.\./index\.md\#console),
[module](\.\./\.\./\.\./index\.md\#module), [string](\.\./\.\./\.\./index\.md\#string),
[terminal](\.\./\.\./\.\./index\.md\#terminal)
# <a name='copyright'></a>COPYRIGHT
Copyright &copy; 2023

601
src/embedded/md/doc/files/punk/_module_ansi-0.1.1.tm.md

@ -0,0 +1,601 @@
[//000000001]: # (punkshell\_module\_punk::ansi \- punk Ansi library)
[//000000002]: # (Generated from file '\_module\_ansi\-0\.1\.1\.tm\.man' by tcllib/doctools with format 'markdown')
[//000000003]: # (Copyright &copy; 2023)
[//000000004]: # (punkshell\_module\_punk::ansi\(0\) 0\.1\.1 doc "punk Ansi 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::ansi \- Ansi string 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::ansi](#subsection3)
- [Namespace punk::ansi::codetype](#subsection4)
- [Namespace punk::ansi::ta](#subsection5)
- [Namespace punk::ansi::ansistring](#subsection6)
- [Keywords](#keywords)
- [Copyright](#copyright)
# <a name='synopsis'></a>SYNOPSIS
package require punk::ansi
[__stripansi__ *text*](#1)
[__stripansi__ *text*](#2)
[__a?__ ?ansicode\.\.\.?](#3)
[__a\+__ ?ansicode\.\.\.?](#4)
[__a__ ?ansicode\.\.\.?](#5)
[__a__ ?ansicode\.\.\.?](#6)
[__get\_code\_name__ *code*](#7)
[__reset__](#8)
[__reset\_soft__](#9)
[__reset\_colour__](#10)
[__clear__](#11)
[__clear\_above__](#12)
[__clear\_below__](#13)
[__cursor\_on__](#14)
[__cursor\_off__](#15)
[__move__ *row* *col*](#16)
[__move\_emit__ *row* *col* *data* ?row col data\.\.\.?](#17)
[__move\_forward__ *n*](#18)
[__move\_back__ *n*](#19)
[__move\_up__ *n*](#20)
[__move\_down__ *n*](#21)
[__move\_column__ *col*](#22)
[__move\_row__ *row*](#23)
[__cursor\_save__](#24)
[__cursor\_restore__](#25)
[__cursor\_save\_dec__](#26)
[__cursor\_restore\_attributes__](#27)
[__enable\_line\_wrap__](#28)
[__disable\_line\_wrap__](#29)
[__query\_mode\_line\_wrap__](#30)
[__erase\_line__](#31)
[__erase\_sol__](#32)
[__erase\_eol__](#33)
[__scroll\_up__ *n*](#34)
[__scroll\_down__ *n*](#35)
[__insert\_spaces__ *count*](#36)
[__delete\_characters__ *count*](#37)
[__erase\_characters__ *count*](#38)
[__insert\_lines__ *count*](#39)
[__delete\_lines__ *count*](#40)
[__cursor\_pos__](#41)
[__request\_cursor\_information__](#42)
[__request\_tabstops__](#43)
[__titleset__ *windowtitles*](#44)
[__is\_sgr\_reset__ *code*](#45)
[__has\_sgr\_leadingreset__ *code*](#46)
[__detect__ *text*](#47)
[__detect\_csi__ *text*](#48)
[__detect\_sgr__ *text*](#49)
[__strip__ *text*](#50)
[__length__ *text*](#51)
[__VIEW__ *string*](#52)
[__COUNT__ *string*](#53)
[__index__ *string* *index*](#54)
# <a name='description'></a>DESCRIPTION
Ansi based terminal control string functions
See __punk::ansi::console__ for related functions for controlling a console
# <a name='section2'></a>Overview
overview of punk::ansi
punk::ansi functions return their values \- no implicit emission to
console/stdout
## <a name='subsection1'></a>Concepts
Ansi codes can be used to control most terminals on most platforms in an
'almost' standard manner
There are many differences in terminal implementations \- but most should support
a core set of features
punk::ansi does not contain any code for direct terminal manipulation via the
local system APIs\.
Sticking to ansi codes where possible may be better for cross\-platform and
remote operation where such APIs are unlikely to be useable\.
## <a name='subsection2'></a>dependencies
packages used by punk::ansi
- __Tcl 8\.6\-__
- __punk::char__
# <a name='section3'></a>API
## <a name='subsection3'></a>Namespace punk::ansi
Core API functions for punk::ansi
- <a name='1'></a>__stripansi__ *text*
Return a string with ansi codes stripped out
Alternate graphics chars are replaced with modern unicode equivalents \(e\.g
boxdrawing glyphs\)
- <a name='2'></a>__stripansi__ *text*
Return a string with ansi codes stripped out
Alternate graphics modes will be stripped \- exposing the raw characters as
they appear without graphics mode\.
ie instead of a horizontal line you may see: qqqqqq
- <a name='3'></a>__a?__ ?ansicode\.\.\.?
Return an ansi string representing a table of codes and a panel showing the
colours
- <a name='4'></a>__a\+__ ?ansicode\.\.\.?
Returns the ansi code to apply those from the supplied list \- without any
reset being performed first
e\.g to set foreground red and bold
punk::ansi::a red bold
to set background red
punk::ansi::a Red
see __punk::ansi::a?__ to display a list of codes
- <a name='5'></a>__a__ ?ansicode\.\.\.?
Returns the ansi code to reset any current settings and apply those from the
supplied list
by calling punk::ansi::a with no arguments \- the result is a reset to plain
text
e\.g to set foreground red and bold
punk::ansi::a red bold
to set background red
punk::ansi::a Red
see __punk::ansi::a?__ to display a list of codes
- <a name='6'></a>__a__ ?ansicode\.\.\.?
Returns the ansi code to reset any current settings and apply those from the
supplied list
by calling punk::ansi::a with no arguments \- the result is a reset to plain
text
e\.g to set foreground red and bold
punk::ansi::a red bold
to set background red
punk::ansi::a Red
see __punk::ansi::a?__ to display a list of codes
- <a name='7'></a>__get\_code\_name__ *code*
for example
get\_code\_name red will return 31
get\_code\_name 31 will return red
- <a name='8'></a>__reset__
reset console
- <a name='9'></a>__reset\_soft__
- <a name='10'></a>__reset\_colour__
reset colour only
- <a name='11'></a>__clear__
- <a name='12'></a>__clear\_above__
- <a name='13'></a>__clear\_below__
- <a name='14'></a>__cursor\_on__
- <a name='15'></a>__cursor\_off__
- <a name='16'></a>__move__ *row* *col*
Return an ansi sequence to move to row,col
aka cursor home
- <a name='17'></a>__move\_emit__ *row* *col* *data* ?row col data\.\.\.?
Return an ansi string representing a move to row col with data appended
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
Compare to punk::console::move\_emit which calls this function \- but writes
it to stdout
punk::console::move\_emit\_return will also return the cursor to the original
position
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\.
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\.
punk::console::move\_emit\_return does it by emitting that code and starting a
loop to read stdin
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\.
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:
punk::ansi::move_emit 10 10 blah {*}[punk::console::get_cursor_pos_list] DONE
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\.
- <a name='18'></a>__move\_forward__ *n*
- <a name='19'></a>__move\_back__ *n*
- <a name='20'></a>__move\_up__ *n*
- <a name='21'></a>__move\_down__ *n*
- <a name='22'></a>__move\_column__ *col*
- <a name='23'></a>__move\_row__ *row*
VPA \- Vertical Line Position Absolute
- <a name='24'></a>__cursor\_save__
equivalent term::ansi::code::ctrl::sc
This is the ANSI/SCO cursor save as opposed to the DECSC version
On many terminals either will work \- but cursor\_save\_dec is shorter and
perhaps more widely supported
- <a name='25'></a>__cursor\_restore__
equivalent term::ansi::code::ctrl::rc
ANSI/SCO \- see also cursor\_restore\_dec for the DECRC version
- <a name='26'></a>__cursor\_save\_dec__
equivalent term::ansi::code::ctrl::sca
DECSC
- <a name='27'></a>__cursor\_restore\_attributes__
equivalent term::ansi::code::ctrl::rca
DECRC
- <a name='28'></a>__enable\_line\_wrap__
enable automatic line wrapping when characters entered beyond rightmost
column
This will also allow forward movements to move to subsequent lines
This is DECAWM \- and is the same sequence output by 'tput smam'
- <a name='29'></a>__disable\_line\_wrap__
disable automatic line wrapping
reset DECAWM \- same sequence output by 'tput rmam' tput rmam
- <a name='30'></a>__query\_mode\_line\_wrap__
DECRQM to query line\-wrap state
The punk::ansi::query\_mode\_ functions just emit the ansi query sequence\.
- <a name='31'></a>__erase\_line__
- <a name='32'></a>__erase\_sol__
Erase to start of line, leaving cursor position alone\.
- <a name='33'></a>__erase\_eol__
- <a name='34'></a>__scroll\_up__ *n*
- <a name='35'></a>__scroll\_down__ *n*
- <a name='36'></a>__insert\_spaces__ *count*
- <a name='37'></a>__delete\_characters__ *count*
- <a name='38'></a>__erase\_characters__ *count*
- <a name='39'></a>__insert\_lines__ *count*
- <a name='40'></a>__delete\_lines__ *count*
- <a name='41'></a>__cursor\_pos__
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
The output on screen will look something like ^\[\[47;3R
Use punk::console::get\_cursor\_pos or punk::console::get\_cursor\_pos\_list
instead\.
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\.
The punk::ansi::cursor\_pos function is used by punk::console::get\_cursor\_pos
and punk::console::get\_cursor\_pos\_list
- <a name='42'></a>__request\_cursor\_information__
DECRQPSR \(DEC Request Presentation State Report\) for DECCCIR Cursor
Information report
When written to the terminal, this sequence causes the terminal to emit
cursor information to stdin
A stdin readloop will need to be in place to read this information
- <a name='43'></a>__request\_tabstops__
DECRQPSR \(DEC Request Presentation State Report\) for DECTABSR Tab stop
report
When written to the terminal, this sequence causes the terminal to emit
tabstop information to stdin
- <a name='44'></a>__titleset__ *windowtitles*
Returns the code to set the title of the terminal window to windowtitle
This may not work on terminals which have multiple panes/windows
## <a name='subsection4'></a>Namespace punk::ansi::codetype
API functions for punk::ansi::codetype
Utility functions for processing ansi code sequences
- <a name='45'></a>__is\_sgr\_reset__ *code*
Return a boolean indicating whether this string has a trailing pure SGR
reset
Note that if the reset is not the very last item in the string \- it will not
be detected\.
This is primarily intended for testing a single ansi code sequence, but code
can be any string where the trailing SGR code is to be tested\.
- <a name='46'></a>__has\_sgr\_leadingreset__ *code*
The reset must be the very first item in code to be detected\. Trailing
strings/codes ignored\.
## <a name='subsection5'></a>Namespace punk::ansi::ta
text ansi functions
based on but not identical to the Perl Text Ansi module:
https://github\.com/perlancar/perl\-Text\-ANSI\-Util/blob/master/lib/Text/ANSI/BaseUtil\.pm
- <a name='47'></a>__detect__ *text*
Return a boolean indicating whether Ansi codes were detected in text
- <a name='48'></a>__detect\_csi__ *text*
Return a boolean indicating whether an Ansi Control Sequence Introducer
\(CSI\) was detected in text
The csi is often represented in code as \\x1b or \\033 followed by a left
bracket \[
The initial byte or escape is commonly referenced as ESC in Ansi
documentation
There is also a multi\-byte escape sequence \\u009b
This is less commonly used but is also detected here
\(This function is not in perl ta\)
- <a name='49'></a>__detect\_sgr__ *text*
Return a boolean indicating whether an ansi Select Graphics Rendition code
was detected\.
This is the set of CSI sequences ending in 'm'
This is most commonly an Ansi colour code \- but also things such as
underline and italics
An SGR with empty or a single zero argument is a reset of the SGR features \-
this is also detected\.
\(This function is not in perl ta\)
- <a name='50'></a>__strip__ *text*
Return text stripped of Ansi codes
This is a tailcall to punk::ansi::stripansi
- <a name='51'></a>__length__ *text*
Return the character length after stripping ansi codes \- not the printing
length
## <a name='subsection6'></a>Namespace punk::ansi::ansistring
punk::ansi::ansistring ensemble \- ansi\-aware string operations
Working with strings containing ansi in a way that preserves/understands the
codes is always going to be significantly slower than working with plain strings
Just as working with other forms of markup such as HTML \- you simply need to be
aware of the tradeoffs and design accordingly\.
- <a name='52'></a>__VIEW__ *string*
Return a string with specific ANSI control characters substituted with
visual equivalents frome the appropriate unicode C0 and C1 visualisation
sets
For debugging purposes, certain other standard control characters are
converted to visual representation, for example backspace \(mapped to \\\\U2408
'\\U2408'\)
Horizontal tab is mapped to \\\\U2409 '\\U2409'\. For many of the punk terminal
text operations, tabs have already been mapped to the appropriate number of
spaces using textutil::tabify functions
As punkshell uses linefeed where possible in preference to crlf even on
windows, cr is mapped to \\\\U240D '\\U240D' \- but lf is left as is\.
- <a name='53'></a>__COUNT__ *string*
Returns the count of visible graphemes and non\-ansi control characters
Incomplete\! grapheme clustering support not yet implemented \- only
diacritics are currently clustered to count as one grapheme\.
This will not count strings hidden inside a 'privacy message' or other ansi
codes which may have content between their opening escape and their
termination sequence\.
This is not quite equivalent to calling string length on the result of
stripansi $string due to diacritics and/or grapheme combinations
Note that this returns the number of characters in the payload \(after
applying combiners\) It is not always the same as the width of the string as
rendered on a terminal due to 2wide Unicode characters and the usual
invisible control characters such as \\r and \\n
To get the width, use punk::ansi::printing\_length instead, which is also
ansi aware\.
- <a name='54'></a>__index__ *string* *index*
Takes a string that possibly contains ansi codes such as colour,underline
etc \(SGR codes\)
Returns the character \(with applied ansi effect\) at position index
The string could contain non SGR ansi codes \- and these will \(mostly\) be
ignored, so shouldn't affect the output\.
Some terminals don't hide 'privacy message' and other strings within an ESC
X ESC ^ or ESC \_ sequence \(terminated by ST\)
It's arguable some of these are application specific \- but this function
takes the view that they are probably non\-displaying \- so index won't see
them\.
If the caller wants just the character \- they should use a normal string
index after calling stripansi, or call stripansi afterwards\.
As any operation using end\-\+<int> will need to strip ansi to precalculate
the length anyway; the caller should probably just use stripansi and
standard string index if the ansi coded output isn't required and they are
using and end\-based index\.
In fact, any operation where the ansi info isn't required in the output
would probably be slightly more efficiently obtained by using stripansi and
normal string operations on that\.
The returned character will \(possibly\) have a leading ansi escape sequence
but no trailing escape sequence \- even if the string was taken from a
position immediately before a reset or other SGR ansi code
The ansi\-code prefix in the returned string is built up by concatenating
previous SGR ansi codes seen \- but it is optimised to re\-start the process
if any full SGR reset is encountered\.
The code sequence doesn't detect individual properties being turned on and
then off again, only full resets; so in some cases the ansi\-prefix may not
be as short as it could be\.
This shouldn't make any difference to the visual output \- but a possible
future enhancement is something to produce the shortest ansi sequence
possible
Notes:
This function has to split the whole string into plaintext & ansi codes even
for a very low index
Some sort of generator that parses more of the string as required might be
more efficient for large chunks\.
For end\-x operations we have to pre\-calculate the content\-length by
stripping the ansi \- which is also potentially sub\-optimal
# <a name='keywords'></a>KEYWORDS
[ansi](\.\./\.\./\.\./index\.md\#ansi), [console](\.\./\.\./\.\./index\.md\#console),
[module](\.\./\.\./\.\./index\.md\#module), [string](\.\./\.\./\.\./index\.md\#string),
[terminal](\.\./\.\./\.\./index\.md\#terminal)
# <a name='copyright'></a>COPYRIGHT
Copyright &copy; 2023

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

@ -122,7 +122,7 @@ project\.
packages used by punk::args
- __Tcl 8\.6__
- __Tcl 8\.6\-__
# <a name='section3'></a>API

108
src/embedded/md/doc/files/punk/_module_assertion-0.1.0.tm.md

@ -0,0 +1,108 @@
[//000000001]: # (shellspy\_module\_punk::assertion \- per\-namespace assertions with )
[//000000002]: # (Generated from file '\_module\_assertion\-0\.1\.0\.tm\.man' by tcllib/doctools with format 'markdown')
[//000000003]: # (Copyright &copy; 2024)
[//000000004]: # (shellspy\_module\_punk::assertion\(0\) 0\.1\.0 doc "per\-namespace assertions with ")
<hr> [ <a href="../../../toc.md">Main Table Of Contents</a> &#124; <a
href="../../toc.md">Table Of Contents</a> &#124; <a
href="../../../index.md">Keyword Index</a> ] <hr>
# NAME
shellspy\_module\_punk::assertion \- assertion alternative to control::assert
# <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::assertion::class](#subsection3)
- [Namespace punk::assertion](#subsection4)
- [Namespace punk::assertion::lib](#subsection5)
- [Internal](#section4)
- [Namespace punk::assertion::system](#subsection6)
- [Keywords](#keywords)
- [Copyright](#copyright)
# <a name='synopsis'></a>SYNOPSIS
package require punk::assertion
# <a name='description'></a>DESCRIPTION
The punk::assertion library has the same semantics as Tcllib's control::assert
library for the assert command itself\.
The main difference is the way in which assert is enabled/disabled in
namespaces\.
Due to commands such as 'namespace path' \- the assert command could be available
in arbitrary namespaces unrelated by tree structure to namespaces where assert
has been directly imported\.
punk::assertion::active 0&#124;1 allows activating and deactivating assertions in any
namespace where the assert command is available \- but only affecting the
activations state of the namespace in which it is called\.
If such a non\-primary assertion namespace never had active set to 0 or 1 \- then
it will activate/deactivate when the namespace corresponding to the found assert
command \(primary\) is activated/deactivated\.
Once marked active or inactive \- such a non\-primary namespace will no longer
follow the primary
# <a name='section2'></a>Overview
overview of punk::assertion
## <a name='subsection1'></a>Concepts
\-
## <a name='subsection2'></a>dependencies
packages used by punk::assertion
- __Tcl 8\.6__
# <a name='section3'></a>API
## <a name='subsection3'></a>Namespace punk::assertion::class
class definitions
## <a name='subsection4'></a>Namespace punk::assertion
## <a name='subsection5'></a>Namespace punk::assertion::lib
# <a name='section4'></a>Internal
## <a name='subsection6'></a>Namespace punk::assertion::system
# <a name='keywords'></a>KEYWORDS
[assert](\.\./\.\./\.\./index\.md\#assert),
[assertion](\.\./\.\./\.\./index\.md\#assertion),
[debug](\.\./\.\./\.\./index\.md\#debug), [module](\.\./\.\./\.\./index\.md\#module)
# <a name='copyright'></a>COPYRIGHT
Copyright &copy; 2024

87
src/embedded/md/doc/files/punk/_module_basictelnet-0.1.0.tm.md

@ -0,0 +1,87 @@
[//000000001]: # (shellspy\_module\_punk::basictelnet \- basic telnet client)
[//000000002]: # (Generated from file '\_module\_basictelnet\-0\.1\.0\.tm\.man' by tcllib/doctools with format 'markdown')
[//000000003]: # (Copyright &copy; 2024)
[//000000004]: # (shellspy\_module\_punk::basictelnet\(0\) 0\.1\.0 doc "basic telnet client")
<hr> [ <a href="../../../toc.md">Main Table Of Contents</a> &#124; <a
href="../../toc.md">Table Of Contents</a> &#124; <a
href="../../../index.md">Keyword Index</a> ] <hr>
# NAME
shellspy\_module\_punk::basictelnet \- basic telnet client \- DKF/Wiki
# <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::basictelnet::class](#subsection3)
- [Namespace punk::basictelnet](#subsection4)
- [Namespace punk::basictelnet::lib](#subsection5)
- [Internal](#section4)
- [Namespace punk::basictelnet::system](#subsection6)
- [Keywords](#keywords)
- [Copyright](#copyright)
# <a name='synopsis'></a>SYNOPSIS
package require punk::basictelnet
# <a name='description'></a>DESCRIPTION
see https://wiki\.tcl\-lang\.org/page/Tcl\+Telnet
# <a name='section2'></a>Overview
overview of punk::basictelnet
## <a name='subsection1'></a>Concepts
\-
## <a name='subsection2'></a>dependencies
packages used by punk::basictelnet
- __Tcl 8\.6__
# <a name='section3'></a>API
## <a name='subsection3'></a>Namespace punk::basictelnet::class
class definitions
## <a name='subsection4'></a>Namespace punk::basictelnet
## <a name='subsection5'></a>Namespace punk::basictelnet::lib
# <a name='section4'></a>Internal
## <a name='subsection6'></a>Namespace punk::basictelnet::system
# <a name='keywords'></a>KEYWORDS
[module](\.\./\.\./\.\./index\.md\#module)
# <a name='copyright'></a>COPYRIGHT
Copyright &copy; 2024

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

@ -81,7 +81,7 @@ punk::overtype
packages used by punk::encmime
- __Tcl 8\.6__
- __Tcl 8\.6\-__
# <a name='section3'></a>API

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

@ -133,7 +133,7 @@ something else before the data is supplied to this module\.
packages needed by punk::fileline
- __Tcl 8\.6__
- __Tcl 8\.6\-__
- __punk::args__

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

@ -63,7 +63,7 @@ pattern library
packages used by punk::flib
- __Tcl 8\.6__
- __Tcl 8\.6\-__
- __pattern 1\.2\.4__

227
src/embedded/md/doc/files/punk/_module_lib-0.1.0.tm.md → src/embedded/md/doc/files/punk/_module_lib-0.1.1.tm.md

@ -1,8 +1,8 @@
[//000000001]: # (punkshell\_module\_punk::lib \- punk library)
[//000000002]: # (Generated from file '\_module\_lib\-0\.1\.0\.tm\.man' by tcllib/doctools with format 'markdown')
[//000000002]: # (Generated from file '\_module\_lib\-0\.1\.1\.tm\.man' by tcllib/doctools with format 'markdown')
[//000000003]: # (Copyright &copy; 2024)
[//000000004]: # (punkshell\_module\_punk::lib\(0\) 0\.1\.0 doc "punk library")
[//000000004]: # (punkshell\_module\_punk::lib\(0\) 0\.1\.1 doc "punk library")
<hr> [ <a href="../../../toc.md">Main Table Of Contents</a> &#124; <a
href="../../toc.md">Table Of Contents</a> &#124; <a
@ -30,11 +30,13 @@ punkshell\_module\_punk::lib \- punk general utility functions
- [Namespace punk::lib::class](#subsection3)
- [Namespace punk::lib](#subsection4)
- [Namespace punk::lib::compat](#subsection4)
- [Namespace punk::lib](#subsection5)
- [Internal](#section4)
- [Namespace punk::lib::system](#subsection5)
- [Namespace punk::lib::system](#subsection6)
- [Keywords](#keywords)
@ -44,24 +46,33 @@ punkshell\_module\_punk::lib \- punk general utility functions
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)
[__lremove__ *list* ?index \.\.\.?](#1)
[__lpop__ *listvar* ?index?](#2)
[__K__ *x* *y*](#3)
[__is\_utf8\_multibyteprefix__ *str*](#4)
[__is\_utf8\_single__ *1234bytes*](#5)
[__get\_utf8\_leading__ *rawbytes*](#6)
[__hex2dec__ ?option value\.\.\.? *list\_largeHex*](#7)
[__dex2hex__ ?option value\.\.\.? *list\_decimals*](#8)
[__log2__ *x*](#9)
[__logbase__ *b* *x*](#10)
[__factors__ *x*](#11)
[__oddFactors__ *x*](#12)
[__greatestFactorBelow__ *x*](#13)
[__greatestOddFactorBelow__ *x*](#14)
[__greatestOddFactor__ *x*](#15)
[__gcd__ *n* *m*](#16)
[__gcd__ *n* *m*](#17)
[__commonDivisors__ *x* *y*](#18)
[__hasglobs__ *str*](#19)
[__trimzero__ *number*](#20)
[__substring\_count__ *str* *substring*](#21)
[__dict\_merge\_ordered__ *defaults* *main*](#22)
[__askuser__ *question*](#23)
[__linesort__ ?sortoption ?val?\.\.\.? *textblock*](#24)
[__list\_as\_lines__ ?\-joinchar char? *linelist*](#25)
[__lines\_as\_list__ ?option value \.\.\.? *text*](#26)
[__opts\_values__ ?option value\.\.\.? *optionspecs* *rawargs*](#27)
# <a name='description'></a>DESCRIPTION
@ -89,7 +100,7 @@ that might otherwise seem worthy of inclusion here are not present\.
packages used by punk::lib
- __Tcl 8\.6__
- __Tcl 8\.6\-__
# <a name='section3'></a>API
@ -97,9 +108,23 @@ packages used by punk::lib
class definitions
## <a name='subsection4'></a>Namespace punk::lib
## <a name='subsection4'></a>Namespace punk::lib::compat
- <a name='1'></a>__lremove__ *list* ?index \.\.\.?
Forwards compatible lremove for versions 8\.6 or less to support equivalent
8\.7 lremove
- <a name='2'></a>__lpop__ *listvar* ?index?
Forwards compatible lpop for versions 8\.6 or less to support equivalent 8\.7
lpop
## <a name='subsection5'></a>Namespace punk::lib
Core API functions for punk::lib
- <a name='1'></a>__K__ *x* *y*
- <a name='3'></a>__K__ *x* *y*
The K\-combinator function \- returns the first argument, x and discards y
@ -108,7 +133,56 @@ class definitions
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*
- <a name='4'></a>__is\_utf8\_multibyteprefix__ *str*
Returns a boolean if str is potentially a prefix for a multibyte utf\-8
character
ie \- tests if it is possible that appending more data will result in a utf\-8
codepoint
Will return false for an already complete utf\-8 codepoint
It is assumed the incomplete sequence is at the beginning of the bytes
argument
Suitable input for this might be from the unreturned tail portion of
get\_utf8\_leading $testbytes
e\.g using: set head \[get\_utf8\_leading $testbytes\] ; set tail \[string range
$testbytes \[string length $head\] end\]
- <a name='5'></a>__is\_utf8\_single__ *1234bytes*
Tests input of 1,2,3 or 4 bytes and responds with a boolean indicating if it
is a valid utf\-8 character \(codepoint\)
- <a name='6'></a>__get\_utf8\_leading__ *rawbytes*
return the leading portion of rawbytes that is a valid utf8 sequence\.
This will stop at the point at which the bytes can't be interpreted as a
complete utf\-8 codepoint
e\.g It will not return the first byte or 2 of a 3\-byte utf\-8 character if
the last byte is missing, and will return only the valid utf\-8 string from
before the first byte of the incomplete character\.
It will also only return the prefix before any bytes that cannot be part of
a utf\-8 sequence at all\.
Note that while this will return valid utf8 \- it has no knowledge of
grapheme clusters or diacritics
This means if it is being used to process bytes split at some arbitrary
point \- the trailing data that isn't returned could be part of a grapheme
cluster that belongs with the last character of the leading string already
returned
The utf\-8 BOM \\xEF\\xBB\\xBF is a valid UTF8 3\-byte sequence and so can also
be returned as part of the leading utf8 bytes
- <a name='7'></a>__hex2dec__ ?option value\.\.\.? *list\_largeHex*
Convert a list of \(possibly large\) unprefixed hex strings to their decimal
values
@ -125,7 +199,7 @@ class definitions
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*
- <a name='8'></a>__dex2hex__ ?option value\.\.\.? *list\_decimals*
Convert a list of decimal integers to a list of hex values
@ -134,7 +208,7 @@ class definitions
\-case upper&#124;lower determines the case of the hex letters in the output
- <a name='4'></a>__log2__ *x*
- <a name='9'></a>__log2__ *x*
log base2 of x
@ -144,7 +218,7 @@ class definitions
\(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*
- <a name='10'></a>__logbase__ *b* *x*
log base b of x
@ -155,7 +229,7 @@ class definitions
Use expr's log10\(\) function or tcl::mathfunc::log10 for base 10
- <a name='6'></a>__factors__ *x*
- <a name='11'></a>__factors__ *x*
Return a sorted list of the positive factors of x where x > 0
@ -191,11 +265,11 @@ class definitions
In other mathematical contexts zero may be considered not to divide
anything\.
- <a name='7'></a>__oddFactors__ *x*
- <a name='12'></a>__oddFactors__ *x*
Return a list of odd integer factors of x, sorted in ascending order
- <a name='8'></a>__greatestFactorBelow__ *x*
- <a name='13'></a>__greatestFactorBelow__ *x*
Return the largest factor of x excluding itself
@ -203,17 +277,17 @@ class definitions
See Tcllib math::numtheory for more extensive implementations
- <a name='9'></a>__greatestOddFactorBelow__ *x*
- <a name='14'></a>__greatestOddFactorBelow__ *x*
Return the largest odd integer factor of x excluding x itself
- <a name='10'></a>__greatestOddFactor__ *x*
- <a name='15'></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*
- <a name='16'></a>__gcd__ *n* *m*
Return the greatest common divisor of m and n
@ -225,19 +299,19 @@ class definitions
only if c is a common divisor of a and b
- <a name='12'></a>__gcd__ *n* *m*
- <a name='17'></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*
- <a name='18'></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*
- <a name='19'></a>__hasglobs__ *str*
Return a boolean indicating whether str contains any of the glob characters:
\* ? \[ \]
@ -245,17 +319,17 @@ class definitions
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*
- <a name='20'></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*
- <a name='21'></a>__substring\_count__ *str* *substring*
Search str and return number of occurrences of substring
- <a name='17'></a>__dict\_merge\_ordered__ *defaults* *main*
- <a name='22'></a>__dict\_merge\_ordered__ *defaults* *main*
The standard dict merge accepts multiple dicts with values from dicts to the
right \(2nd argument\) taking precedence\.
@ -267,9 +341,9 @@ class definitions
This function merges the two dicts whilst maintaining the key order of main
followed by defaults\.
- <a name='18'></a>__askuser__ *question*
- <a name='23'></a>__askuser__ *question*
A very basic utility to read an answer from stdin
A 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
@ -277,6 +351,11 @@ class definitions
stdin is temporarily configured to blocking and then put back in its
original state in case it wasn't already so\.
If the terminal is using punk::console and is in raw mode \- the terminal
will temporarily be put in line mode\.
\(Generic terminal raw vs linemode detection not yet present\)
The user must hit enter to submit the response
The return value is the string if any that was typed prior to hitting enter\.
@ -291,9 +370,69 @@ class definitions
puts "Cancelled by user"
}
- <a name='24'></a>__linesort__ ?sortoption ?val?\.\.\.? *textblock*
Sort lines in textblock
Returns another textblock with lines sorted
options are flags as accepted by lsort ie \-ascii \-command \-decreasing
\-dictionary \-index \-indices \-integer \-nocase \-real \-stride \-unique
- <a name='25'></a>__list\_as\_lines__ ?\-joinchar char? *linelist*
This simply joines the elements of the list with \-joinchar
It is mainly intended for use in pipelines where the primary argument comes
at the end \- but it can also be used as a general replacement for join
$lines <le>
The sister function lines\_as\_list takes a block of text and splits it into
lines \- but with more options related to trimming the block and/or each
line\.
- <a name='26'></a>__lines\_as\_list__ ?option value \.\.\.? *text*
Returns a list of possibly trimmed lines depeding on options
The concept of lines is raw lines from splitting on newline after crlf is
mapped to lf
\- not console lines which may be entirely different due to control
characters such as vertical tabs or ANSI movements
- <a name='27'></a>__opts\_values__ ?option value\.\.\.? *optionspecs* *rawargs*
Parse rawargs as a sequence of zero or more option\-value pairs followed by
zero or more values
Returns a dict of the form: opts <options\_dict> values <values\_dict>
ARGUMENTS:
* multiline\-string *optionspecs*
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:
\-optionname \-key val \-key2 val2\.\.\.
where the valid keys for each option specification are: \-default \-type
\-range \-choices \-optional
* list *rawargs*
This is a list of the arguments to parse\. Usually it will be the \\$args
value from the containing proc
# <a name='section4'></a>Internal
## <a name='subsection5'></a>Namespace punk::lib::system
## <a name='subsection6'></a>Namespace punk::lib::system
Internal functions that are not part of the API

2
src/embedded/md/doc/files/punk/_module_path-0.1.0.tm.md

@ -67,7 +67,7 @@ Filesystem path utility functions
packages used by punk::path
- __Tcl 8\.6__
- __Tcl 8\.6\-__
# <a name='section3'></a>API

225
src/embedded/md/doc/files/punk/_module_sshrun-0.1.0.tm.md

@ -0,0 +1,225 @@
[//000000001]: # (shellspy\_module\_punk::sshrun \- punk::sshrun tclssh clone)
[//000000002]: # (Generated from file '\_module\_sshrun\-0\.1\.0\.tm\.man' by tcllib/doctools with format 'markdown')
[//000000003]: # (Copyright &copy; 2009)
[//000000004]: # (shellspy\_module\_punk::sshrun\(0\) 0\.1\.0 doc "punk::sshrun tclssh clone")
<hr> [ <a href="../../../toc.md">Main Table Of Contents</a> &#124; <a
href="../../toc.md">Table Of Contents</a> &#124; <a
href="../../../index.md">Keyword Index</a> ] <hr>
# NAME
shellspy\_module\_punk::sshrun \- Tcl procedures to execute tcl scripts in remote
hosts
# <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::sshrun::class](#subsection3)
- [Namespace punk::sshrun](#subsection4)
- [Namespace punk::sshrun::lib](#subsection5)
- [Internal](#section4)
- [Namespace punk::sshrun::system](#subsection6)
- [Keywords](#keywords)
- [Copyright](#copyright)
# <a name='synopsis'></a>SYNOPSIS
package require punk::sshrun
[connect *args*](#1)
[disconnect *host*](#2)
[push *host* *script*](#3)
[send *host*](#4)
[send\_exit *host*](#5)
[send\_exit *host*](#6)
[pop\_all *host* *output\_varname*](#7)
[pop\_read *host* *numbytes* *output\_varname*](#8)
[hfileevent *host* *readable\_writable* *script*](#9)
[hconfigure *host* *args*](#10)
[rexec *host* *script* *output\_varname*](#11)
[get\_filehandle *host*](#12)
# <a name='description'></a>DESCRIPTION
This is a clone of tclssh by Jose F\. Nieves
The original repo is at: https://bitbucket\.org/noaaport/tclssh/src/master/
This version is namespaced under punk::sshrun specifically for the Punk shell
project \- and may lag the original project or diverge\.
You are encouraged to use the original Tclssh source from the above URL for your
own projects
# <a name='section2'></a>Overview
overview of punk::sshrun
SYNOPSIS
package require punk::sshrun
\-
punk::sshrun::connect \[\-t <tclsh\_name>\] \[\-\- <ssh\_options>\] \[<user>@\]<host>
Defaults: \-t tclsh
## <a name='subsection1'></a>Concepts
\-
## <a name='subsection2'></a>dependencies
packages used by punk::sshrun
- __Tcl 8\.6__
- __cmdline__
# <a name='section3'></a>API
## <a name='subsection3'></a>Namespace punk::sshrun::class
class definitions
## <a name='subsection4'></a>Namespace punk::sshrun
- <a name='1'></a>connect *args*
Must be called first\.
This proc opens an io channel to the tclsh in the remote host \(via ssh\) that
is kept in an internal variable for subsequent use\.
The file handle can be retrieved if desired through the command:
get\_filehandle \{host\}
- <a name='2'></a>disconnect *host*
Must be called last\. Closes the filehandle opened by connect\.
- <a name='3'></a>push *host* *script*
<script> can be any tcl code\.
For example, if the remote host is named "diablo"
ssh::push "diablo" "exec date"
ssh::push "diablo" "exec uname -a"
The commands are note executed immediately\. Instead, the "push" proc simply
accumulates them in a list that is sent to the host when the "send"
procedure is executed\.
Each push proc inserts the newline '\\n' character after each <script>
In the above example\. Internally, each <script> is a member of a list, and
when the "send" proc is invoked the entire script is constructed as a "join
<list> \\n
- <a name='4'></a>send *host*
This proc does the equivalent of a
puts <filehandle> [join <script_list> \n]
flush <filehandle>
- <a name='5'></a>send\_exit *host*
This proc is similar to the above, but it "pushes" an exit command at the
end of the script\. The proc does the equivalent of
ssh::push <host> "exit"
ssh::send <host>
The net effect if this is that the remote host's tclsh will exit, so that
the filehandle receives an eof and we can use
[read <filehandle>]
to read the entire output at once \(see the pop proc below\)
- <a name='6'></a>send\_exit *host*
After executing a "send", this can be used to read one line of output\. The
proc does the equivalent of
[gets <filehandle> line]
- <a name='7'></a>pop\_all *host* *output\_varname*
This proc does the equivalent of
while {[pop_line $host line] >=0} {
puts $line;
}
but all the output is returned as one string in output\_varname\.
It should be used only when we know that the remote host's tclsh will exit,
so that the above code will detect the eof and exit
\(see the send\_exit proc above\)
The function returns the number of lines read \(0 if nothing is read before
encoutering eof\)
- <a name='8'></a>pop\_read *host* *numbytes* *output\_varname*
Returns: numbytes read\. If numbytes is not positive, then read is called
without the numbytes argument\.
- <a name='9'></a>hfileevent *host* *readable\_writable* *script*
Equivalent to:
fileevent <filehandle> $readable_writable $script
- <a name='10'></a>hconfigure *host* *args*
- <a name='11'></a>rexec *host* *script* *output\_varname*
shortcut for:
ssh::rexec_nopop $host $script
ssh::pop_all $host outputvar
- <a name='12'></a>get\_filehandle *host*
## <a name='subsection5'></a>Namespace punk::sshrun::lib
Secondary functions that are part of the API
# <a name='section4'></a>Internal
## <a name='subsection6'></a>Namespace punk::sshrun::system
# <a name='keywords'></a>KEYWORDS
[module](\.\./\.\./\.\./index\.md\#module), [ssh](\.\./\.\./\.\./index\.md\#ssh)
# <a name='copyright'></a>COPYRIGHT
Copyright &copy; 2009

87
src/embedded/md/doc/files/punk/_module_uc-0.1.0.tm.md

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

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

@ -81,7 +81,7 @@ see punk::overlay
packages used by punk::mix::commandset::project
- __Tcl 8\.6__
- __Tcl 8\.6\-__
- __punk::ns__

18
src/embedded/md/doc/toc.md

@ -3,11 +3,7 @@
# 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
- [overtype\_module\_overtype](doc/files/\_module\_overtype\-1\.6\.2\.tm\.md) overtype text layout \- ansi aware
- [punkshell](doc/files/main\.md) punkshell \- Core
@ -15,7 +11,7 @@
- [punkshell\_\_project\_intro](doc/files/project\_intro\.md) Introduction to punkshell
- [punkshell\_module\_punk::ansi](doc/files/punk/\_module\_ansi\-0\.1\.0\.tm\.md) Ansi string functions
- [punkshell\_module\_punk::ansi](doc/files/punk/\_module\_ansi\-0\.1\.1\.tm\.md) Ansi string functions
- [punkshell\_module\_punk::args](doc/files/punk/\_module\_args\-0\.1\.0\.tm\.md) args parsing
@ -29,8 +25,16 @@
- [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::lib](doc/files/punk/\_module\_lib\-0\.1\.1\.tm\.md) punk general utility functions
- [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
- [shellspy\_module\_punk::assertion](doc/files/punk/\_module\_assertion\-0\.1\.0\.tm\.md) assertion alternative to control::assert
- [shellspy\_module\_punk::basictelnet](doc/files/punk/\_module\_basictelnet\-0\.1\.0\.tm\.md) basic telnet client \- DKF/Wiki
- [shellspy\_module\_punk::sshrun](doc/files/punk/\_module\_sshrun\-0\.1\.0\.tm\.md) Tcl procedures to execute tcl scripts in remote hosts
- [shellspy\_module\_punk::uc](doc/files/punk/\_module\_uc\-0\.1\.0\.tm\.md) Module API

28
src/embedded/md/index.md

@ -5,7 +5,7 @@
----
[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)
[A](#cA) &#183; [B](#cB) &#183; [C](#cC) &#183; [D](#cD) &#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,9 +13,11 @@
|||
|---|---|
|<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='ansi'></a>ansi|[overtype\_module\_overtype](doc/files/\_module\_overtype\-1\.6\.2\.tm\.md) &#183; [punkshell\_module\_punk::ansi](doc/files/punk/\_module\_ansi\-0\.1\.1\.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='assert'></a>assert|[shellspy\_module\_punk::assertion](doc/files/punk/\_module\_assertion\-0\.1\.0\.tm\.md)|
|<a name='assertion'></a>assertion|[shellspy\_module\_punk::assertion](doc/files/punk/\_module\_assertion\-0\.1\.0\.tm\.md)|
#### <a name='cB'></a>Keywords: B
@ -31,7 +33,14 @@
|---|---|
|<a name='capability'></a>capability|[punkshell\_module\_punk::cap](doc/files/punk/\_module\_cap\-0\.1\.0\.tm\.md)|
|<a name='changelog'></a>changelog|[punkshell\_\_project\_changes](doc/files/project\_changes\.md)|
|<a name='console'></a>console|[punkshell\_module\_punk::ansi](doc/files/punk/\_module\_ansi\-0\.1\.0\.tm\.md)|
|<a name='console'></a>console|[punkshell\_module\_punk::ansi](doc/files/punk/\_module\_ansi\-0\.1\.1\.tm\.md)|
#### <a name='cD'></a>Keywords: D
|||
|---|---|
|<a name='debug'></a>debug|[shellspy\_module\_punk::assertion](doc/files/punk/\_module\_assertion\-0\.1\.0\.tm\.md)|
#### <a name='cE'></a>Keywords: E
@ -55,14 +64,14 @@
|||
|---|---|
|<a name='lib'></a>lib|[punkshell\_module\_punk::lib](doc/files/punk/\_module\_lib\-0\.1\.0\.tm\.md)|
|<a name='lib'></a>lib|[punkshell\_module\_punk::lib](doc/files/punk/\_module\_lib\-0\.1\.1\.tm\.md)|
#### <a name='cM'></a>Keywords: M
|||
|---|---|
|<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='module'></a>module|[overtype\_module\_overtype](doc/files/\_module\_overtype\-1\.6\.2\.tm\.md) &#183; [punkshell\_module\_punk::ansi](doc/files/punk/\_module\_ansi\-0\.1\.1\.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\.1\.tm\.md) &#183; [punkshell\_module\_punk::path](doc/files/punk/\_module\_path\-0\.1\.0\.tm\.md) &#183; [shellspy\_module\_punk::assertion](doc/files/punk/\_module\_assertion\-0\.1\.0\.tm\.md) &#183; [shellspy\_module\_punk::basictelnet](doc/files/punk/\_module\_basictelnet\-0\.1\.0\.tm\.md) &#183; [shellspy\_module\_punk::sshrun](doc/files/punk/\_module\_sshrun\-0\.1\.0\.tm\.md) &#183; [shellspy\_module\_punk::uc](doc/files/punk/\_module\_uc\-0\.1\.0\.tm\.md)|
#### <a name='cP'></a>Keywords: P
@ -88,19 +97,20 @@
|||
|---|---|
|<a name='shell'></a>shell|[punkshell](doc/files/main\.md) &#183; [punkshell\_\_project\_changes](doc/files/project\_changes\.md) &#183; [punkshell\_\_project\_intro](doc/files/project\_intro\.md)|
|<a name='string'></a>string|[punkshell\_module\_punk::ansi](doc/files/punk/\_module\_ansi\-0\.1\.0\.tm\.md)|
|<a name='ssh'></a>ssh|[shellspy\_module\_punk::sshrun](doc/files/punk/\_module\_sshrun\-0\.1\.0\.tm\.md)|
|<a name='string'></a>string|[punkshell\_module\_punk::ansi](doc/files/punk/\_module\_ansi\-0\.1\.1\.tm\.md)|
#### <a name='cT'></a>Keywords: T
|||
|---|---|
|<a name='terminal'></a>terminal|[punkshell\_module\_punk::ansi](doc/files/punk/\_module\_ansi\-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='terminal'></a>terminal|[punkshell\_module\_punk::ansi](doc/files/punk/\_module\_ansi\-0\.1\.1\.tm\.md)|
|<a name='text'></a>text|[overtype\_module\_overtype](doc/files/\_module\_overtype\-1\.6\.2\.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)|
|<a name='utility'></a>utility|[punkshell\_module\_punk::lib](doc/files/punk/\_module\_lib\-0\.1\.1\.tm\.md)|

18
src/embedded/md/toc.md

@ -3,11 +3,7 @@
# 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
- [overtype\_module\_overtype](doc/files/\_module\_overtype\-1\.6\.2\.tm\.md) overtype text layout \- ansi aware
- [punkshell](doc/files/main\.md) punkshell \- Core
@ -15,7 +11,7 @@
- [punkshell\_\_project\_intro](doc/files/project\_intro\.md) Introduction to punkshell
- [punkshell\_module\_punk::ansi](doc/files/punk/\_module\_ansi\-0\.1\.0\.tm\.md) Ansi string functions
- [punkshell\_module\_punk::ansi](doc/files/punk/\_module\_ansi\-0\.1\.1\.tm\.md) Ansi string functions
- [punkshell\_module\_punk::args](doc/files/punk/\_module\_args\-0\.1\.0\.tm\.md) args parsing
@ -29,8 +25,16 @@
- [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::lib](doc/files/punk/\_module\_lib\-0\.1\.1\.tm\.md) punk general utility functions
- [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
- [shellspy\_module\_punk::assertion](doc/files/punk/\_module\_assertion\-0\.1\.0\.tm\.md) assertion alternative to control::assert
- [shellspy\_module\_punk::basictelnet](doc/files/punk/\_module\_basictelnet\-0\.1\.0\.tm\.md) basic telnet client \- DKF/Wiki
- [shellspy\_module\_punk::sshrun](doc/files/punk/\_module\_sshrun\-0\.1\.0\.tm\.md) Tcl procedures to execute tcl scripts in remote hosts
- [shellspy\_module\_punk::uc](doc/files/punk/\_module\_uc\-0\.1\.0\.tm\.md) Module API

12
src/embedded/www/.doc/tocdoc

@ -1,18 +1,20 @@
[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/_module_overtype-1.6.2.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_ansi-0.1.1.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 {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/_module_lib-0.1.1.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}]
[item doc/files/punk/_module_assertion-0.1.0.tm.html shellspy_module_punk::assertion {assertion alternative to control::assert}]
[item doc/files/punk/_module_basictelnet-0.1.0.tm.html shellspy_module_punk::basictelnet {basic telnet client - DKF/Wiki}]
[item doc/files/punk/_module_sshrun-0.1.0.tm.html shellspy_module_punk::sshrun {Tcl procedures to execute tcl scripts in remote hosts}]
[item doc/files/punk/_module_uc-0.1.0.tm.html shellspy_module_punk::uc {Module API}]
[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_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}}}}
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_ansi-0.1.1.tm.html punkshell_module_punk::ansi {Ansi string functions}} {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_uc-0.1.0.tm.html shellspy_module_punk::uc {Module API}} {doc/files/punk/_module_lib-0.1.1.tm.html punkshell_module_punk::lib {punk general utility functions}} {doc/files/punk/_module_assertion-0.1.0.tm.html shellspy_module_punk::assertion {assertion alternative to control::assert}} {doc/files/project_intro.html punkshell__project_intro {Introduction to punkshell}} {doc/files/_module_overtype-1.6.2.tm.html overtype_module_overtype {overtype text layout - ansi aware}} {doc/files/punk/_module_sshrun-0.1.0.tm.html shellspy_module_punk::sshrun {Tcl procedures to execute tcl scripts in remote hosts}} {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_basictelnet-0.1.0.tm.html shellspy_module_punk::basictelnet {basic telnet client - DKF/Wiki}} {doc/files/punk/_module_fileline-0.1.0.tm.html punkshell_module_punk::fileline {file line-handling utilities}}}}

2
src/embedded/www/.xrf

File diff suppressed because one or more lines are too long

36
src/embedded/www/doc/files/_module_overtype-1.5.2.tm.html → src/embedded/www/doc/files/_module_overtype-1.6.2.tm.html

@ -91,7 +91,7 @@
}
--></style>
</head>
<!-- Generated from file '_module_overtype-1.5.2.tm.man' by tcllib/doctools with format 'html'
<!-- Generated from file '_module_overtype-1.6.2.tm.man' by tcllib/doctools with format 'html'
-->
<!-- Copyright &amp;copy; 2024
-->
@ -103,7 +103,7 @@
&#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>
<h1 class="doctools_title">overtype_module_overtype(0) 1.6.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>
@ -118,7 +118,11 @@
<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="#section3">API</a>
<ul>
<li class="doctools_subsection"><a href="#subsection3">Namespace overtype</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>
@ -128,6 +132,10 @@
<ul class="doctools_requirements">
<li>package require <b class="pkgname">overtype</b></li>
</ul>
<ul class="doctools_syntax">
<li><a href="#1"><b class="function">overtype::left</b> <i class="arg">args</i></a></li>
<li><a href="#2"><b class="function">overtype::renderline</b> <i class="arg">args</i></a></li>
</ul>
</div>
</div>
<div id="section1" class="doctools_section"><h2><a name="section1">Description</a></h2>
@ -151,6 +159,28 @@
</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 overtype</a></h3>
<p>Core API functions for overtype</p>
<dl class="doctools_definitions">
<dt><a name="1"><b class="function">overtype::left</b> <i class="arg">args</i></a></dt>
<dd><p>usage: ?-transparent [0|1]? ?-overflow [1|0]? ?-ellipsis [1|0]? ?-ellipsistext ...? undertext overtext</p></dd>
<dt><a name="2"><b class="function">overtype::renderline</b> <i class="arg">args</i></a></dt>
<dd><p>renderline is the core engine for overtype string processing (frames &amp; textblocks), and the raw mode commandline repl for the Tcl Punk Shell</p>
<p>It is also a central part of an ansi (micro) virtual terminal-emulator of sorts</p>
<p>This system does a half decent job at rendering 90's ANSI art to manipulable colour text blocks that can be joined &amp; framed for layout display within a unix or windows terminal</p>
<p>Renderline helps maintain ANSI text styling reset/replay codes so that the styling of one block doesn't affect another.</p>
<p>Calling on the punk::ansi library - it can coalesce codes to keep the size down.</p>
<p>It is a giant mess of doing exactly what common wisdom says not to do... lots at once.</p>
<p>renderline is part of the Unicode and ANSI aware Overtype system which 'renders' a block of text onto a static underlay</p>
<p>The underlay is generally expected to be an ordered set of lines or a rectangular text block analogous to a terminal screen - but it can also be ragged in line length, or just blank.</p>
<p>The overlay couuld be similar - in which case it may often be used to overwrite a column or section of the underlay.</p>
<p>The overlay could however be a sequence of ANSI-laden text that jumps all over the place.</p>
<p>renderline itself only deals with a single line - or sometimes a single character. It is generally called from a loop that does further terminal-like or textblock processing.</p>
<p>By suppyling the -info 1 option - it can return various fields indicating the state of the render.</p>
<p>The main 3 are the result, overflow_right, and unapplied.</p>
<p>Renderline handles cursor movements from either keystrokes or ANSI sequences but for a full system the aforementioned loop will need to be in place to manage the set of lines under manipulation.</p></dd>
</dl>
</div>
</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>

249
src/embedded/www/doc/files/punk/_module_ansi-0.1.0.tm.html → src/embedded/www/doc/files/punk/_module_ansi-0.1.1.tm.html

@ -91,7 +91,7 @@
}
--></style>
</head>
<!-- Generated from file '_module_ansi-0.1.0.tm.man' by tcllib/doctools with format 'html'
<!-- Generated from file '_module_ansi-0.1.1.tm.man' by tcllib/doctools with format 'html'
-->
<!-- Copyright &amp;copy; 2023
-->
@ -103,7 +103,7 @@
&#124; <a href="../../../index.html">Keyword Index</a>
] <hr>
<div class="doctools">
<h1 class="doctools_title">punkshell_module_punk::ansi(0) 0.1.0 doc &quot;punk Ansi library&quot;</h1>
<h1 class="doctools_title">punkshell_module_punk::ansi(0) 0.1.1 doc &quot;punk Ansi library&quot;</h1>
<div id="name" class="doctools_section"><h2><a name="name">Name</a></h2>
<p>punkshell_module_punk::ansi - Ansi string functions</p>
</div>
@ -121,8 +121,9 @@
<li class="doctools_section"><a href="#section3">API</a>
<ul>
<li class="doctools_subsection"><a href="#subsection3">Namespace punk::ansi</a></li>
<li class="doctools_subsection"><a href="#subsection4">Namespace punk::ansi::ta</a></li>
<li class="doctools_subsection"><a href="#subsection5">Namespace punk::ansi::ansistring</a></li>
<li class="doctools_subsection"><a href="#subsection4">Namespace punk::ansi::codetype</a></li>
<li class="doctools_subsection"><a href="#subsection5">Namespace punk::ansi::ta</a></li>
<li class="doctools_subsection"><a href="#subsection6">Namespace punk::ansi::ansistring</a></li>
</ul>
</li>
<li class="doctools_section"><a href="#keywords">Keywords</a></li>
@ -136,35 +137,59 @@
</ul>
<ul class="doctools_syntax">
<li><a href="#1"><b class="function">stripansi</b> <i class="arg">text</i></a></li>
<li><a href="#2"><b class="function">a?</b> <span class="opt">?ansicode...?</span></a></li>
<li><a href="#3"><b class="function">a+</b> <span class="opt">?ansicode...?</span></a></li>
<li><a href="#4"><b class="function">a</b> <span class="opt">?ansicode...?</span></a></li>
<li><a href="#5"><b class="function">get_code_name</b> <i class="arg">code</i></a></li>
<li><a href="#6"><b class="function">reset</b></a></li>
<li><a href="#7"><b class="function">reset_soft</b></a></li>
<li><a href="#8"><b class="function">reset_colour</b></a></li>
<li><a href="#9"><b class="function">clear</b></a></li>
<li><a href="#10"><b class="function">clear_above</b></a></li>
<li><a href="#11"><b class="function">clear_below</b></a></li>
<li><a href="#12"><b class="function">cursor_on</b></a></li>
<li><a href="#13"><b class="function">cursor_off</b></a></li>
<li><a href="#14"><b class="function">move</b> <i class="arg">row</i> <i class="arg">col</i></a></li>
<li><a href="#15"><b class="function">move_emit</b> <i class="arg">row</i> <i class="arg">col</i> <i class="arg">data</i> <span class="opt">?row col data...?</span></a></li>
<li><a href="#16"><b class="function">move_forward</b> <i class="arg">n</i></a></li>
<li><a href="#17"><b class="function">move_back</b> <i class="arg">n</i></a></li>
<li><a href="#18"><b class="function">move_up</b> <i class="arg">n</i></a></li>
<li><a href="#19"><b class="function">move_down</b> <i class="arg">n</i></a></li>
<li><a href="#20"><b class="function">erase_line</b></a></li>
<li><a href="#21"><b class="function">erase_sol</b></a></li>
<li><a href="#22"><b class="function">erase_eol</b></a></li>
<li><a href="#23"><b class="function">cursor_pos</b></a></li>
<li><a href="#24"><b class="function">titleset</b> <i class="arg">windowtitles</i></a></li>
<li><a href="#25"><b class="function">detect</b> <i class="arg">text</i></a></li>
<li><a href="#26"><b class="function">detect_csi</b> <i class="arg">text</i></a></li>
<li><a href="#27"><b class="function">detect_sgr</b> <i class="arg">text</i></a></li>
<li><a href="#28"><b class="function">strip</b> <i class="arg">text</i></a></li>
<li><a href="#29"><b class="function">length</b> <i class="arg">text</i></a></li>
<li><a href="#30"><b class="function">index</b> <i class="arg">string</i> <i class="arg">index</i></a></li>
<li><a href="#2"><b class="function">stripansi</b> <i class="arg">text</i></a></li>
<li><a href="#3"><b class="function">a?</b> <span class="opt">?ansicode...?</span></a></li>
<li><a href="#4"><b class="function">a+</b> <span class="opt">?ansicode...?</span></a></li>
<li><a href="#5"><b class="function">a</b> <span class="opt">?ansicode...?</span></a></li>
<li><a href="#6"><b class="function">a</b> <span class="opt">?ansicode...?</span></a></li>
<li><a href="#7"><b class="function">get_code_name</b> <i class="arg">code</i></a></li>
<li><a href="#8"><b class="function">reset</b></a></li>
<li><a href="#9"><b class="function">reset_soft</b></a></li>
<li><a href="#10"><b class="function">reset_colour</b></a></li>
<li><a href="#11"><b class="function">clear</b></a></li>
<li><a href="#12"><b class="function">clear_above</b></a></li>
<li><a href="#13"><b class="function">clear_below</b></a></li>
<li><a href="#14"><b class="function">cursor_on</b></a></li>
<li><a href="#15"><b class="function">cursor_off</b></a></li>
<li><a href="#16"><b class="function">move</b> <i class="arg">row</i> <i class="arg">col</i></a></li>
<li><a href="#17"><b class="function">move_emit</b> <i class="arg">row</i> <i class="arg">col</i> <i class="arg">data</i> <span class="opt">?row col data...?</span></a></li>
<li><a href="#18"><b class="function">move_forward</b> <i class="arg">n</i></a></li>
<li><a href="#19"><b class="function">move_back</b> <i class="arg">n</i></a></li>
<li><a href="#20"><b class="function">move_up</b> <i class="arg">n</i></a></li>
<li><a href="#21"><b class="function">move_down</b> <i class="arg">n</i></a></li>
<li><a href="#22"><b class="function">move_column</b> <i class="arg">col</i></a></li>
<li><a href="#23"><b class="function">move_row</b> <i class="arg">row</i></a></li>
<li><a href="#24"><b class="function">cursor_save</b></a></li>
<li><a href="#25"><b class="function">cursor_restore</b></a></li>
<li><a href="#26"><b class="function">cursor_save_dec</b></a></li>
<li><a href="#27"><b class="function">cursor_restore_attributes</b></a></li>
<li><a href="#28"><b class="function">enable_line_wrap</b></a></li>
<li><a href="#29"><b class="function">disable_line_wrap</b></a></li>
<li><a href="#30"><b class="function">query_mode_line_wrap</b></a></li>
<li><a href="#31"><b class="function">erase_line</b></a></li>
<li><a href="#32"><b class="function">erase_sol</b></a></li>
<li><a href="#33"><b class="function">erase_eol</b></a></li>
<li><a href="#34"><b class="function">scroll_up</b> <i class="arg">n</i></a></li>
<li><a href="#35"><b class="function">scroll_down</b> <i class="arg">n</i></a></li>
<li><a href="#36"><b class="function">insert_spaces</b> <i class="arg">count</i></a></li>
<li><a href="#37"><b class="function">delete_characters</b> <i class="arg">count</i></a></li>
<li><a href="#38"><b class="function">erase_characters</b> <i class="arg">count</i></a></li>
<li><a href="#39"><b class="function">insert_lines</b> <i class="arg">count</i></a></li>
<li><a href="#40"><b class="function">delete_lines</b> <i class="arg">count</i></a></li>
<li><a href="#41"><b class="function">cursor_pos</b></a></li>
<li><a href="#42"><b class="function">request_cursor_information</b></a></li>
<li><a href="#43"><b class="function">request_tabstops</b></a></li>
<li><a href="#44"><b class="function">titleset</b> <i class="arg">windowtitles</i></a></li>
<li><a href="#45"><b class="function">is_sgr_reset</b> <i class="arg">code</i></a></li>
<li><a href="#46"><b class="function">has_sgr_leadingreset</b> <i class="arg">code</i></a></li>
<li><a href="#47"><b class="function">detect</b> <i class="arg">text</i></a></li>
<li><a href="#48"><b class="function">detect_csi</b> <i class="arg">text</i></a></li>
<li><a href="#49"><b class="function">detect_sgr</b> <i class="arg">text</i></a></li>
<li><a href="#50"><b class="function">strip</b> <i class="arg">text</i></a></li>
<li><a href="#51"><b class="function">length</b> <i class="arg">text</i></a></li>
<li><a href="#52"><b class="function">VIEW</b> <i class="arg">string</i></a></li>
<li><a href="#53"><b class="function">COUNT</b> <i class="arg">string</i></a></li>
<li><a href="#54"><b class="function">index</b> <i class="arg">string</i> <i class="arg">index</i></a></li>
</ul>
</div>
</div>
@ -184,7 +209,8 @@
<div id="subsection2" class="doctools_subsection"><h3><a name="subsection2">dependencies</a></h3>
<p>packages used by punk::ansi</p>
<ul class="doctools_itemized">
<li><p><b class="package">Tcl 8.6</b></p></li>
<li><p><b class="package">Tcl 8.6-</b></p></li>
<li><p><b class="package">punk::char</b></p></li>
</ul>
</div>
</div>
@ -193,17 +219,22 @@
<p>Core API functions for punk::ansi</p>
<dl class="doctools_definitions">
<dt><a name="1"><b class="function">stripansi</b> <i class="arg">text</i></a></dt>
<dd><p>Return a string with ansi codes stripped out</p></dd>
<dt><a name="2"><b class="function">a?</b> <span class="opt">?ansicode...?</span></a></dt>
<dd><p>Return a string with ansi codes stripped out</p>
<p>Alternate graphics chars are replaced with modern unicode equivalents (e.g boxdrawing glyphs)</p></dd>
<dt><a name="2"><b class="function">stripansi</b> <i class="arg">text</i></a></dt>
<dd><p>Return a string with ansi codes stripped out</p>
<p>Alternate graphics modes will be stripped - exposing the raw characters as they appear without graphics mode.</p>
<p>ie instead of a horizontal line you may see: qqqqqq</p></dd>
<dt><a name="3"><b class="function">a?</b> <span class="opt">?ansicode...?</span></a></dt>
<dd><p>Return an ansi string representing a table of codes and a panel showing the colours</p></dd>
<dt><a name="3"><b class="function">a+</b> <span class="opt">?ansicode...?</span></a></dt>
<dt><a name="4"><b class="function">a+</b> <span class="opt">?ansicode...?</span></a></dt>
<dd><p>Returns the ansi code to apply those from the supplied list - without any reset being performed first</p>
<p>e.g to set foreground red and bold</p>
<p>punk::ansi::a red bold</p>
<p>to set background red</p>
<p>punk::ansi::a Red</p>
<p>see <b class="cmd">punk::ansi::a?</b> to display a list of codes</p></dd>
<dt><a name="4"><b class="function">a</b> <span class="opt">?ansicode...?</span></a></dt>
<dt><a name="5"><b class="function">a</b> <span class="opt">?ansicode...?</span></a></dt>
<dd><p>Returns the ansi code to reset any current settings and apply those from the supplied list</p>
<p>by calling punk::ansi::a with no arguments - the result is a reset to plain text</p>
<p>e.g to set foreground red and bold</p>
@ -211,30 +242,38 @@
<p>to set background red</p>
<p>punk::ansi::a Red</p>
<p>see <b class="cmd">punk::ansi::a?</b> to display a list of codes</p></dd>
<dt><a name="5"><b class="function">get_code_name</b> <i class="arg">code</i></a></dt>
<dt><a name="6"><b class="function">a</b> <span class="opt">?ansicode...?</span></a></dt>
<dd><p>Returns the ansi code to reset any current settings and apply those from the supplied list</p>
<p>by calling punk::ansi::a with no arguments - the result is a reset to plain text</p>
<p>e.g to set foreground red and bold</p>
<p>punk::ansi::a red bold</p>
<p>to set background red</p>
<p>punk::ansi::a Red</p>
<p>see <b class="cmd">punk::ansi::a?</b> to display a list of codes</p></dd>
<dt><a name="7"><b class="function">get_code_name</b> <i class="arg">code</i></a></dt>
<dd><p>for example</p>
<p>get_code_name red will return 31</p>
<p>get_code_name 31 will return red</p></dd>
<dt><a name="6"><b class="function">reset</b></a></dt>
<dt><a name="8"><b class="function">reset</b></a></dt>
<dd><p>reset console</p></dd>
<dt><a name="7"><b class="function">reset_soft</b></a></dt>
<dt><a name="9"><b class="function">reset_soft</b></a></dt>
<dd></dd>
<dt><a name="8"><b class="function">reset_colour</b></a></dt>
<dt><a name="10"><b class="function">reset_colour</b></a></dt>
<dd><p>reset colour only</p></dd>
<dt><a name="9"><b class="function">clear</b></a></dt>
<dt><a name="11"><b class="function">clear</b></a></dt>
<dd></dd>
<dt><a name="10"><b class="function">clear_above</b></a></dt>
<dt><a name="12"><b class="function">clear_above</b></a></dt>
<dd></dd>
<dt><a name="11"><b class="function">clear_below</b></a></dt>
<dt><a name="13"><b class="function">clear_below</b></a></dt>
<dd></dd>
<dt><a name="12"><b class="function">cursor_on</b></a></dt>
<dt><a name="14"><b class="function">cursor_on</b></a></dt>
<dd></dd>
<dt><a name="13"><b class="function">cursor_off</b></a></dt>
<dt><a name="15"><b class="function">cursor_off</b></a></dt>
<dd></dd>
<dt><a name="14"><b class="function">move</b> <i class="arg">row</i> <i class="arg">col</i></a></dt>
<dt><a name="16"><b class="function">move</b> <i class="arg">row</i> <i class="arg">col</i></a></dt>
<dd><p>Return an ansi sequence to move to row,col</p>
<p>aka cursor home</p></dd>
<dt><a name="15"><b class="function">move_emit</b> <i class="arg">row</i> <i class="arg">col</i> <i class="arg">data</i> <span class="opt">?row col data...?</span></a></dt>
<dt><a name="17"><b class="function">move_emit</b> <i class="arg">row</i> <i class="arg">col</i> <i class="arg">data</i> <span class="opt">?row col data...?</span></a></dt>
<dd><p>Return an ansi string representing a move to row col with data appended</p>
<p>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</p>
<p>Compare to punk::console::move_emit which calls this function - but writes it to stdout</p>
@ -246,62 +285,138 @@
<p>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:</p>
<pre class="doctools_example">punk::ansi::move_emit 10 10 blah {*}[punk::console::get_cursor_pos_list] DONE</pre>
<p>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.</p></dd>
<dt><a name="16"><b class="function">move_forward</b> <i class="arg">n</i></a></dt>
<dt><a name="18"><b class="function">move_forward</b> <i class="arg">n</i></a></dt>
<dd></dd>
<dt><a name="17"><b class="function">move_back</b> <i class="arg">n</i></a></dt>
<dt><a name="19"><b class="function">move_back</b> <i class="arg">n</i></a></dt>
<dd></dd>
<dt><a name="18"><b class="function">move_up</b> <i class="arg">n</i></a></dt>
<dt><a name="20"><b class="function">move_up</b> <i class="arg">n</i></a></dt>
<dd></dd>
<dt><a name="19"><b class="function">move_down</b> <i class="arg">n</i></a></dt>
<dt><a name="21"><b class="function">move_down</b> <i class="arg">n</i></a></dt>
<dd></dd>
<dt><a name="20"><b class="function">erase_line</b></a></dt>
<dt><a name="22"><b class="function">move_column</b> <i class="arg">col</i></a></dt>
<dd></dd>
<dt><a name="21"><b class="function">erase_sol</b></a></dt>
<dt><a name="23"><b class="function">move_row</b> <i class="arg">row</i></a></dt>
<dd><p>VPA - Vertical Line Position Absolute</p></dd>
<dt><a name="24"><b class="function">cursor_save</b></a></dt>
<dd><p>equivalent term::ansi::code::ctrl::sc</p>
<p>This is the ANSI/SCO cursor save as opposed to the DECSC version</p>
<p>On many terminals either will work - but cursor_save_dec is shorter and perhaps more widely supported</p></dd>
<dt><a name="25"><b class="function">cursor_restore</b></a></dt>
<dd><p>equivalent term::ansi::code::ctrl::rc</p>
<p>ANSI/SCO - see also cursor_restore_dec for the DECRC version</p></dd>
<dt><a name="26"><b class="function">cursor_save_dec</b></a></dt>
<dd><p>equivalent term::ansi::code::ctrl::sca</p>
<p>DECSC</p></dd>
<dt><a name="27"><b class="function">cursor_restore_attributes</b></a></dt>
<dd><p>equivalent term::ansi::code::ctrl::rca</p>
<p>DECRC</p></dd>
<dt><a name="28"><b class="function">enable_line_wrap</b></a></dt>
<dd><p>enable automatic line wrapping when characters entered beyond rightmost column</p>
<p>This will also allow forward movements to move to subsequent lines</p>
<p>This is DECAWM - and is the same sequence output by 'tput smam'</p></dd>
<dt><a name="29"><b class="function">disable_line_wrap</b></a></dt>
<dd><p>disable automatic line wrapping</p>
<p>reset DECAWM - same sequence output by 'tput rmam'
tput rmam</p></dd>
<dt><a name="30"><b class="function">query_mode_line_wrap</b></a></dt>
<dd><p>DECRQM to query line-wrap state</p>
<p>The punk::ansi::query_mode_ functions just emit the ansi query sequence.</p></dd>
<dt><a name="31"><b class="function">erase_line</b></a></dt>
<dd></dd>
<dt><a name="32"><b class="function">erase_sol</b></a></dt>
<dd><p>Erase to start of line, leaving cursor position alone.</p></dd>
<dt><a name="22"><b class="function">erase_eol</b></a></dt>
<dt><a name="33"><b class="function">erase_eol</b></a></dt>
<dd></dd>
<dt><a name="34"><b class="function">scroll_up</b> <i class="arg">n</i></a></dt>
<dd></dd>
<dt><a name="23"><b class="function">cursor_pos</b></a></dt>
<dt><a name="35"><b class="function">scroll_down</b> <i class="arg">n</i></a></dt>
<dd></dd>
<dt><a name="36"><b class="function">insert_spaces</b> <i class="arg">count</i></a></dt>
<dd></dd>
<dt><a name="37"><b class="function">delete_characters</b> <i class="arg">count</i></a></dt>
<dd></dd>
<dt><a name="38"><b class="function">erase_characters</b> <i class="arg">count</i></a></dt>
<dd></dd>
<dt><a name="39"><b class="function">insert_lines</b> <i class="arg">count</i></a></dt>
<dd></dd>
<dt><a name="40"><b class="function">delete_lines</b> <i class="arg">count</i></a></dt>
<dd></dd>
<dt><a name="41"><b class="function">cursor_pos</b></a></dt>
<dd><p>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</p>
<p>The output on screen will look something like ^[[47;3R</p>
<p>Use punk::console::get_cursor_pos or punk::console::get_cursor_pos_list instead.</p>
<p>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.</p>
<p>The punk::ansi::cursor_pos function is used by punk::console::get_cursor_pos and punk::console::get_cursor_pos_list</p></dd>
<dt><a name="24"><b class="function">titleset</b> <i class="arg">windowtitles</i></a></dt>
<dt><a name="42"><b class="function">request_cursor_information</b></a></dt>
<dd><p>DECRQPSR (DEC Request Presentation State Report) for DECCCIR Cursor Information report</p>
<p>When written to the terminal, this sequence causes the terminal to emit cursor information to stdin</p>
<p>A stdin readloop will need to be in place to read this information</p></dd>
<dt><a name="43"><b class="function">request_tabstops</b></a></dt>
<dd><p>DECRQPSR (DEC Request Presentation State Report) for DECTABSR Tab stop report</p>
<p>When written to the terminal, this sequence causes the terminal to emit tabstop information to stdin</p></dd>
<dt><a name="44"><b class="function">titleset</b> <i class="arg">windowtitles</i></a></dt>
<dd><p>Returns the code to set the title of the terminal window to windowtitle</p>
<p>This may not work on terminals which have multiple panes/windows</p></dd>
</dl>
</div>
<div id="subsection4" class="doctools_subsection"><h3><a name="subsection4">Namespace punk::ansi::ta</a></h3>
<div id="subsection4" class="doctools_subsection"><h3><a name="subsection4">Namespace punk::ansi::codetype</a></h3>
<p>API functions for punk::ansi::codetype</p>
<p>Utility functions for processing ansi code sequences</p>
<dl class="doctools_definitions">
<dt><a name="45"><b class="function">is_sgr_reset</b> <i class="arg">code</i></a></dt>
<dd><p>Return a boolean indicating whether this string has a trailing pure SGR reset</p>
<p>Note that if the reset is not the very last item in the string - it will not be detected.</p>
<p>This is primarily intended for testing a single ansi code sequence, but code can be any string where the trailing SGR code is to be tested.</p></dd>
<dt><a name="46"><b class="function">has_sgr_leadingreset</b> <i class="arg">code</i></a></dt>
<dd><p>The reset must be the very first item in code to be detected. Trailing strings/codes ignored.</p></dd>
</dl>
</div>
<div id="subsection5" class="doctools_subsection"><h3><a name="subsection5">Namespace punk::ansi::ta</a></h3>
<p>text ansi functions</p>
<p>based on but not identical to the Perl Text Ansi module:</p>
<p>https://github.com/perlancar/perl-Text-ANSI-Util/blob/master/lib/Text/ANSI/BaseUtil.pm</p>
<dl class="doctools_definitions">
<dt><a name="25"><b class="function">detect</b> <i class="arg">text</i></a></dt>
<dt><a name="47"><b class="function">detect</b> <i class="arg">text</i></a></dt>
<dd><p>Return a boolean indicating whether Ansi codes were detected in text</p></dd>
<dt><a name="26"><b class="function">detect_csi</b> <i class="arg">text</i></a></dt>
<dt><a name="48"><b class="function">detect_csi</b> <i class="arg">text</i></a></dt>
<dd><p>Return a boolean indicating whether an Ansi Control Sequence Introducer (CSI) was detected in text</p>
<p>The csi is often represented in code as \x1b or \033 followed by a left bracket [</p>
<p>The initial byte or escape is commonly referenced as ESC in Ansi documentation</p>
<p>There is also a multi-byte escape sequence \u009b</p>
<p>This is less commonly used but is also detected here</p>
<p>(This function is not in perl ta)</p></dd>
<dt><a name="27"><b class="function">detect_sgr</b> <i class="arg">text</i></a></dt>
<dt><a name="49"><b class="function">detect_sgr</b> <i class="arg">text</i></a></dt>
<dd><p>Return a boolean indicating whether an ansi Select Graphics Rendition code was detected.</p>
<p>This is the set of CSI sequences ending in 'm'</p>
<p>This is most commonly an Ansi colour code - but also things such as underline and italics</p>
<p>An SGR with empty or a single zero argument is a reset of the SGR features - this is also detected.</p>
<p>(This function is not in perl ta)</p></dd>
<dt><a name="28"><b class="function">strip</b> <i class="arg">text</i></a></dt>
<dt><a name="50"><b class="function">strip</b> <i class="arg">text</i></a></dt>
<dd><p>Return text stripped of Ansi codes</p>
<p>This is a tailcall to punk::ansi::stripansi</p></dd>
<dt><a name="29"><b class="function">length</b> <i class="arg">text</i></a></dt>
<dt><a name="51"><b class="function">length</b> <i class="arg">text</i></a></dt>
<dd><p>Return the character length after stripping ansi codes - not the printing length</p></dd>
</dl>
</div>
<div id="subsection5" class="doctools_subsection"><h3><a name="subsection5">Namespace punk::ansi::ansistring</a></h3>
<p>punk::ansi::string ensemble</p>
<div id="subsection6" class="doctools_subsection"><h3><a name="subsection6">Namespace punk::ansi::ansistring</a></h3>
<p>punk::ansi::ansistring ensemble - ansi-aware string operations</p>
<p>Working with strings containing ansi in a way that preserves/understands the codes is always going to be significantly slower than working with plain strings</p>
<p>Just as working with other forms of markup such as HTML - you simply need to be aware of the tradeoffs and design accordingly.</p>
<dl class="doctools_definitions">
<dt><a name="30"><b class="function">index</b> <i class="arg">string</i> <i class="arg">index</i></a></dt>
<dt><a name="52"><b class="function">VIEW</b> <i class="arg">string</i></a></dt>
<dd><p>Return a string with specific ANSI control characters substituted with visual equivalents frome the appropriate unicode C0 and C1 visualisation sets</p>
<p>For debugging purposes, certain other standard control characters are converted to visual representation, for example backspace (mapped to \\U2408 '\U2408')</p>
<p>Horizontal tab is mapped to \\U2409 '\U2409'. For many of the punk terminal text operations, tabs have already been mapped to the appropriate number of spaces using textutil::tabify functions</p>
<p>As punkshell uses linefeed where possible in preference to crlf even on windows, cr is mapped to \\U240D '\U240D' - but lf is left as is.</p></dd>
<dt><a name="53"><b class="function">COUNT</b> <i class="arg">string</i></a></dt>
<dd><p>Returns the count of visible graphemes and non-ansi control characters</p>
<p>Incomplete! grapheme clustering support not yet implemented - only diacritics are currently clustered to count as one grapheme.</p>
<p>This will not count strings hidden inside a 'privacy message' or other ansi codes which may have content between their opening escape and their termination sequence.</p>
<p>This is not quite equivalent to calling string length on the result of stripansi $string due to diacritics and/or grapheme combinations</p>
<p>Note that this returns the number of characters in the payload (after applying combiners)
It is not always the same as the width of the string as rendered on a terminal due to 2wide Unicode characters and the usual invisible control characters such as \r and \n</p>
<p>To get the width, use punk::ansi::printing_length instead, which is also ansi aware.</p></dd>
<dt><a name="54"><b class="function">index</b> <i class="arg">string</i> <i class="arg">index</i></a></dt>
<dd><p>Takes a string that possibly contains ansi codes such as colour,underline etc (SGR codes)</p>
<p>Returns the character (with applied ansi effect) at position index</p>
<p>The string could contain non SGR ansi codes - and these will (mostly) be ignored, so shouldn't affect the output.</p>

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

@ -190,7 +190,7 @@
<div id="subsection3" class="doctools_subsection"><h3><a name="subsection3">dependencies</a></h3>
<p>packages used by punk::args</p>
<ul class="doctools_itemized">
<li><p><b class="package">Tcl 8.6</b></p></li>
<li><p><b class="package">Tcl 8.6-</b></p></li>
</ul>
</div>
</div>

192
src/embedded/www/doc/files/punk/_module_assertion-0.1.0.tm.html

@ -0,0 +1,192 @@
<!DOCTYPE html><html><head>
<title>shellspy_module_punk::assertion - per-namespace assertions with </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_assertion-0.1.0.tm.man' by tcllib/doctools with format 'html'
-->
<!-- Copyright &amp;copy; 2024
-->
<!-- shellspy_module_punk::assertion.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">shellspy_module_punk::assertion(0) 0.1.0 doc &quot;per-namespace assertions with &quot;</h1>
<div id="name" class="doctools_section"><h2><a name="name">Name</a></h2>
<p>shellspy_module_punk::assertion - assertion alternative to control::assert</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::assertion::class</a></li>
<li class="doctools_subsection"><a href="#subsection4">Namespace punk::assertion</a></li>
<li class="doctools_subsection"><a href="#subsection5">Namespace punk::assertion::lib</a></li>
</ul>
</li>
<li class="doctools_section"><a href="#section4">Internal</a>
<ul>
<li class="doctools_subsection"><a href="#subsection6">Namespace punk::assertion::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::assertion</b></li>
</ul>
</div>
</div>
<div id="section1" class="doctools_section"><h2><a name="section1">Description</a></h2>
<p>The punk::assertion library has the same semantics as Tcllib's control::assert library for the assert command itself.</p>
<p>The main difference is the way in which assert is enabled/disabled in namespaces.</p>
<p>Due to commands such as 'namespace path' - the assert command could be available in arbitrary namespaces unrelated by tree structure to namespaces where assert has been directly imported.</p>
<p>punk::assertion::active 0|1 allows activating and deactivating assertions in any namespace where the assert command is available - but only affecting the activations state of the namespace in which it is called.</p>
<p>If such a non-primary assertion namespace never had active set to 0 or 1 - then it will activate/deactivate when the namespace corresponding to the found assert command (primary) is activated/deactivated.</p>
<p>Once marked active or inactive - such a non-primary namespace will no longer follow the primary</p>
</div>
<div id="section2" class="doctools_section"><h2><a name="section2">Overview</a></h2>
<p>overview of punk::assertion</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::assertion</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::assertion::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::assertion</a></h3>
<p>Core API functions for punk::assertion</p>
<dl class="doctools_definitions">
</dl>
</div>
<div id="subsection5" class="doctools_subsection"><h3><a name="subsection5">Namespace punk::assertion::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::assertion::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#assert">assert</a>, <a href="../../../index.html#assertion">assertion</a>, <a href="../../../index.html#debug">debug</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>

64
src/embedded/www/doc/files/_module_overtype-1.5.3.tm.html → src/embedded/www/doc/files/punk/_module_basictelnet-0.1.0.tm.html

@ -1,5 +1,5 @@
<!DOCTYPE html><html><head>
<title>overtype_module_overtype - overtype text layout</title>
<title>shellspy_module_punk::basictelnet - basic telnet client</title>
<style type="text/css"><!--
HTML {
background: #FFFFFF;
@ -91,21 +91,21 @@
}
--></style>
</head>
<!-- Generated from file '_module_overtype-1.5.3.tm.man' by tcllib/doctools with format 'html'
<!-- Generated from file '_module_basictelnet-0.1.0.tm.man' by tcllib/doctools with format 'html'
-->
<!-- Copyright &amp;copy; 2024
-->
<!-- overtype_module_overtype.0
<!-- shellspy_module_punk::basictelnet.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>
<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>
<h1 class="doctools_title">shellspy_module_punk::basictelnet(0) 0.1.0 doc &quot;basic telnet client&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>
<p>shellspy_module_punk::basictelnet - basic telnet client - DKF/Wiki</p>
</div>
<div id="toc" class="doctools_section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="doctools_toc">
@ -118,7 +118,18 @@
<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="#section3">API</a>
<ul>
<li class="doctools_subsection"><a href="#subsection3">Namespace punk::basictelnet::class</a></li>
<li class="doctools_subsection"><a href="#subsection4">Namespace punk::basictelnet</a></li>
<li class="doctools_subsection"><a href="#subsection5">Namespace punk::basictelnet::lib</a></li>
</ul>
</li>
<li class="doctools_section"><a href="#section4">Internal</a>
<ul>
<li class="doctools_subsection"><a href="#subsection6">Namespace punk::basictelnet::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>
@ -126,34 +137,49 @@
<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>
<li>package require <b class="pkgname">punk::basictelnet</b></li>
</ul>
</div>
</div>
<div id="section1" class="doctools_section"><h2><a name="section1">Description</a></h2>
<p>-</p>
<p>see https://wiki.tcl-lang.org/page/Tcl+Telnet</p>
</div>
<div id="section2" class="doctools_section"><h2><a name="section2">Overview</a></h2>
<p>overview of overtype</p>
<p>overview of punk::basictelnet</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>
<p>packages used by punk::basictelnet</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 id="subsection3" class="doctools_subsection"><h3><a name="subsection3">Namespace punk::basictelnet::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::basictelnet</a></h3>
<p>Core API functions for punk::basictelnet</p>
<dl class="doctools_definitions">
</dl>
</div>
<div id="subsection5" class="doctools_subsection"><h3><a name="subsection5">Namespace punk::basictelnet::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::basictelnet::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#ansi">ansi</a>, <a href="../../index.html#module">module</a>, <a href="../../index.html#text">text</a></p>
<p><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>

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

@ -161,7 +161,7 @@
<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>
<li><p><b class="package">Tcl 8.6-</b></p></li>
</ul>
</div>
</div>

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

@ -202,7 +202,7 @@
<div id="subsection3" class="doctools_subsection"><h3><a name="subsection3">dependencies</a></h3>
<p>packages needed by punk::fileline</p>
<ul class="doctools_itemized">
<li><p><b class="package">Tcl 8.6</b></p></li>
<li><p><b class="package">Tcl 8.6-</b></p></li>
<li><p><b class="package">punk::args</b></p></li>
</ul>
</div>

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

@ -152,7 +152,7 @@
<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">Tcl 8.6-</b></p></li>
<li><p><b class="package">pattern 1.2.4</b></p></li>
</ul>
</div>

154
src/embedded/www/doc/files/punk/_module_lib-0.1.0.tm.html → src/embedded/www/doc/files/punk/_module_lib-0.1.1.tm.html

@ -91,7 +91,7 @@
}
--></style>
</head>
<!-- Generated from file '_module_lib-0.1.0.tm.man' by tcllib/doctools with format 'html'
<!-- Generated from file '_module_lib-0.1.1.tm.man' by tcllib/doctools with format 'html'
-->
<!-- Copyright &amp;copy; 2024
-->
@ -103,7 +103,7 @@
&#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>
<h1 class="doctools_title">punkshell_module_punk::lib(0) 0.1.1 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>
@ -121,12 +121,13 @@
<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>
<li class="doctools_subsection"><a href="#subsection4">Namespace punk::lib::compat</a></li>
<li class="doctools_subsection"><a href="#subsection5">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>
<li class="doctools_subsection"><a href="#subsection6">Namespace punk::lib::system</a></li>
</ul>
</li>
<li class="doctools_section"><a href="#keywords">Keywords</a></li>
@ -139,24 +140,33 @@
<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>
<li><a href="#1"><b class="function">lremove</b> <i class="arg">list</i> <span class="opt">?index ...?</span></a></li>
<li><a href="#2"><b class="function">lpop</b> <i class="arg">listvar</i> <span class="opt">?index?</span></a></li>
<li><a href="#3"><b class="function">K</b> <i class="arg">x</i> <i class="arg">y</i></a></li>
<li><a href="#4"><b class="function">is_utf8_multibyteprefix</b> <i class="arg">str</i></a></li>
<li><a href="#5"><b class="function">is_utf8_single</b> <i class="arg">1234bytes</i></a></li>
<li><a href="#6"><b class="function">get_utf8_leading</b> <i class="arg">rawbytes</i></a></li>
<li><a href="#7"><b class="function">hex2dec</b> <span class="opt">?option value...?</span> <i class="arg">list_largeHex</i></a></li>
<li><a href="#8"><b class="function">dex2hex</b> <span class="opt">?option value...?</span> <i class="arg">list_decimals</i></a></li>
<li><a href="#9"><b class="function">log2</b> <i class="arg">x</i></a></li>
<li><a href="#10"><b class="function">logbase</b> <i class="arg">b</i> <i class="arg">x</i></a></li>
<li><a href="#11"><b class="function">factors</b> <i class="arg">x</i></a></li>
<li><a href="#12"><b class="function">oddFactors</b> <i class="arg">x</i></a></li>
<li><a href="#13"><b class="function">greatestFactorBelow</b> <i class="arg">x</i></a></li>
<li><a href="#14"><b class="function">greatestOddFactorBelow</b> <i class="arg">x</i></a></li>
<li><a href="#15"><b class="function">greatestOddFactor</b> <i class="arg">x</i></a></li>
<li><a href="#16"><b class="function">gcd</b> <i class="arg">n</i> <i class="arg">m</i></a></li>
<li><a href="#17"><b class="function">gcd</b> <i class="arg">n</i> <i class="arg">m</i></a></li>
<li><a href="#18"><b class="function">commonDivisors</b> <i class="arg">x</i> <i class="arg">y</i></a></li>
<li><a href="#19"><b class="function">hasglobs</b> <i class="arg">str</i></a></li>
<li><a href="#20"><b class="function">trimzero</b> <i class="arg">number</i></a></li>
<li><a href="#21"><b class="function">substring_count</b> <i class="arg">str</i> <i class="arg">substring</i></a></li>
<li><a href="#22"><b class="function">dict_merge_ordered</b> <i class="arg">defaults</i> <i class="arg">main</i></a></li>
<li><a href="#23"><b class="function">askuser</b> <i class="arg">question</i></a></li>
<li><a href="#24"><b class="function">linesort</b> <span class="opt">?sortoption ?val?...?</span> <i class="arg">textblock</i></a></li>
<li><a href="#25"><b class="function">list_as_lines</b> <span class="opt">?-joinchar char?</span> <i class="arg">linelist</i></a></li>
<li><a href="#26"><b class="function">lines_as_list</b> <span class="opt">?option value ...?</span> <i class="arg">text</i></a></li>
<li><a href="#27"><b class="function">opts_values</b> <span class="opt">?option value...?</span> <i class="arg">optionspecs</i> <i class="arg">rawargs</i></a></li>
</ul>
</div>
</div>
@ -174,7 +184,7 @@
<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>
<li><p><b class="package">Tcl 8.6-</b></p></li>
</ul>
</div>
</div>
@ -184,33 +194,61 @@
<ol class="doctools_enumerated">
</ol>
</div>
<div id="subsection4" class="doctools_subsection"><h3><a name="subsection4">Namespace punk::lib</a></h3>
<div id="subsection4" class="doctools_subsection"><h3><a name="subsection4">Namespace punk::lib::compat</a></h3>
<p>compatibility functions for features that may not be available in earlier Tcl versions</p>
<p>These are generally 'forward compatibility' functions ie allowing earlier versions to use later features/idioms by using a Tcl-only version of a missing builtin.</p>
<p>Such Tcl-only versions will inevitably be less performant - perhaps significantly so.</p>
<dl class="doctools_definitions">
<dt><a name="1"><b class="function">lremove</b> <i class="arg">list</i> <span class="opt">?index ...?</span></a></dt>
<dd><p>Forwards compatible lremove for versions 8.6 or less to support equivalent 8.7 lremove</p></dd>
<dt><a name="2"><b class="function">lpop</b> <i class="arg">listvar</i> <span class="opt">?index?</span></a></dt>
<dd><p>Forwards compatible lpop for versions 8.6 or less to support equivalent 8.7 lpop</p></dd>
</dl>
</div>
<div id="subsection5" class="doctools_subsection"><h3><a name="subsection5">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>
<dt><a name="3"><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>
<dt><a name="4"><b class="function">is_utf8_multibyteprefix</b> <i class="arg">str</i></a></dt>
<dd><p>Returns a boolean if str is potentially a prefix for a multibyte utf-8 character</p>
<p>ie - tests if it is possible that appending more data will result in a utf-8 codepoint</p>
<p>Will return false for an already complete utf-8 codepoint</p>
<p>It is assumed the incomplete sequence is at the beginning of the bytes argument</p>
<p>Suitable input for this might be from the unreturned tail portion of get_utf8_leading $testbytes</p>
<p>e.g using: set head [get_utf8_leading $testbytes] ; set tail [string range $testbytes [string length $head] end]</p></dd>
<dt><a name="5"><b class="function">is_utf8_single</b> <i class="arg">1234bytes</i></a></dt>
<dd><p>Tests input of 1,2,3 or 4 bytes and responds with a boolean indicating if it is a valid utf-8 character (codepoint)</p></dd>
<dt><a name="6"><b class="function">get_utf8_leading</b> <i class="arg">rawbytes</i></a></dt>
<dd><p>return the leading portion of rawbytes that is a valid utf8 sequence.</p>
<p>This will stop at the point at which the bytes can't be interpreted as a complete utf-8 codepoint</p>
<p>e.g It will not return the first byte or 2 of a 3-byte utf-8 character if the last byte is missing, and will return only the valid utf-8 string from before the first byte of the incomplete character.</p>
<p>It will also only return the prefix before any bytes that cannot be part of a utf-8 sequence at all.</p>
<p>Note that while this will return valid utf8 - it has no knowledge of grapheme clusters or diacritics</p>
<p>This means if it is being used to process bytes split at some arbitrary point - the trailing data that isn't returned could be part of a grapheme cluster that belongs with the last character of the leading string already returned</p>
<p>The utf-8 BOM \xEF\xBB\xBF is a valid UTF8 3-byte sequence and so can also be returned as part of the leading utf8 bytes</p></dd>
<dt><a name="7"><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>
<dt><a name="8"><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>
<dt><a name="9"><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>
<dt><a name="10"><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>
<dt><a name="11"><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>
@ -223,45 +261,47 @@ but has the disadvantage of being slower for 'small' numbers and using more memo
<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>
<dt><a name="12"><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>
<dt><a name="13"><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>
<dt><a name="14"><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>
<dt><a name="15"><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>
<dt><a name="16"><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>
<dt><a name="17"><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>
<dt><a name="18"><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>
<dt><a name="19"><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>
<dt><a name="20"><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>
<dt><a name="21"><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>
<dt><a name="22"><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>
<dt><a name="23"><b class="function">askuser</b> <i class="arg">question</i></a></dt>
<dd><p>A 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>If the terminal is using punk::console and is in raw mode - the terminal will temporarily be put in line mode.</p>
<p>(Generic terminal raw vs linemode detection not yet present)</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>
@ -274,11 +314,37 @@ but has the disadvantage of being slower for 'small' numbers and using more memo
}
</pre>
</dd>
<dt><a name="24"><b class="function">linesort</b> <span class="opt">?sortoption ?val?...?</span> <i class="arg">textblock</i></a></dt>
<dd><p>Sort lines in textblock</p>
<p>Returns another textblock with lines sorted</p>
<p>options are flags as accepted by lsort ie -ascii -command -decreasing -dictionary -index -indices -integer -nocase -real -stride -unique</p></dd>
<dt><a name="25"><b class="function">list_as_lines</b> <span class="opt">?-joinchar char?</span> <i class="arg">linelist</i></a></dt>
<dd><p>This simply joines the elements of the list with -joinchar</p>
<p>It is mainly intended for use in pipelines where the primary argument comes at the end - but it can also be used as a general replacement for join $lines &lt;le&gt;</p>
<p>The sister function lines_as_list takes a block of text and splits it into lines - but with more options related to trimming the block and/or each line.</p></dd>
<dt><a name="26"><b class="function">lines_as_list</b> <span class="opt">?option value ...?</span> <i class="arg">text</i></a></dt>
<dd><p>Returns a list of possibly trimmed lines depeding on options</p>
<p>The concept of lines is raw lines from splitting on newline after crlf is mapped to lf</p>
<p>- not console lines which may be entirely different due to control characters such as vertical tabs or ANSI movements</p></dd>
<dt><a name="27"><b class="function">opts_values</b> <span class="opt">?option value...?</span> <i class="arg">optionspecs</i> <i class="arg">rawargs</i></a></dt>
<dd><p>Parse rawargs as a sequence of zero or more option-value pairs followed by zero or more values</p>
<p>Returns a dict of the form: opts &lt;options_dict&gt; values &lt;values_dict&gt;</p>
<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) - 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>
<dt>list <i class="arg">rawargs</i></dt>
<dd><p>This is a list of the arguments to parse. Usually it will be the \$args value from the containing proc</p></dd>
</dl></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>
<div id="subsection6" class="doctools_subsection"><h3><a name="subsection6">Namespace punk::lib::system</a></h3>
<p>Internal functions that are not part of the API</p>
<dl class="doctools_definitions">
</dl>

2
src/embedded/www/doc/files/punk/_module_path-0.1.0.tm.html

@ -158,7 +158,7 @@
<div id="subsection2" class="doctools_subsection"><h3><a name="subsection2">dependencies</a></h3>
<p>packages used by punk::path</p>
<ul class="doctools_itemized">
<li><p><b class="package">Tcl 8.6</b></p></li>
<li><p><b class="package">Tcl 8.6-</b></p></li>
</ul>
</div>
</div>

280
src/embedded/www/doc/files/punk/_module_sshrun-0.1.0.tm.html

@ -0,0 +1,280 @@
<!DOCTYPE html><html><head>
<title>shellspy_module_punk::sshrun - punk::sshrun tclssh clone</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_sshrun-0.1.0.tm.man' by tcllib/doctools with format 'html'
-->
<!-- Copyright &amp;copy; 2009
-->
<!-- shellspy_module_punk::sshrun.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">shellspy_module_punk::sshrun(0) 0.1.0 doc &quot;punk::sshrun tclssh clone&quot;</h1>
<div id="name" class="doctools_section"><h2><a name="name">Name</a></h2>
<p>shellspy_module_punk::sshrun - Tcl procedures to execute tcl scripts in remote hosts</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::sshrun::class</a></li>
<li class="doctools_subsection"><a href="#subsection4">Namespace punk::sshrun</a></li>
<li class="doctools_subsection"><a href="#subsection5">Namespace punk::sshrun::lib</a></li>
</ul>
</li>
<li class="doctools_section"><a href="#section4">Internal</a>
<ul>
<li class="doctools_subsection"><a href="#subsection6">Namespace punk::sshrun::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::sshrun</b></li>
</ul>
<ul class="doctools_syntax">
<li><a href="#1">connect <i class="arg">args</i></a></li>
<li><a href="#2">disconnect <i class="arg">host</i></a></li>
<li><a href="#3">push <i class="arg">host</i> <i class="arg">script</i></a></li>
<li><a href="#4">send <i class="arg">host</i></a></li>
<li><a href="#5">send_exit <i class="arg">host</i></a></li>
<li><a href="#6">send_exit <i class="arg">host</i></a></li>
<li><a href="#7">pop_all <i class="arg">host</i> <i class="arg">output_varname</i></a></li>
<li><a href="#8">pop_read <i class="arg">host</i> <i class="arg">numbytes</i> <i class="arg">output_varname</i></a></li>
<li><a href="#9">hfileevent <i class="arg">host</i> <i class="arg">readable_writable</i> <i class="arg">script</i></a></li>
<li><a href="#10">hconfigure <i class="arg">host</i> <i class="arg">args</i></a></li>
<li><a href="#11">rexec <i class="arg">host</i> <i class="arg">script</i> <i class="arg">output_varname</i></a></li>
<li><a href="#12">get_filehandle <i class="arg">host</i></a></li>
</ul>
</div>
</div>
<div id="section1" class="doctools_section"><h2><a name="section1">Description</a></h2>
<p>This is a clone of tclssh by Jose F. Nieves</p>
<p>The original repo is at: https://bitbucket.org/noaaport/tclssh/src/master/</p>
<p>This version is namespaced under punk::sshrun specifically for the Punk shell project - and may lag the original project or diverge.</p>
<p>You are encouraged to use the original Tclssh source from the above URL for your own projects</p>
</div>
<div id="section2" class="doctools_section"><h2><a name="section2">Overview</a></h2>
<p>overview of punk::sshrun</p>
<p>SYNOPSIS</p>
<p>package require punk::sshrun</p>
<p>-</p>
<p>punk::sshrun::connect [-t &lt;tclsh_name&gt;] [-- &lt;ssh_options&gt;] [&lt;user&gt;@]&lt;host&gt;</p>
<p>Defaults: -t tclsh</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::sshrun</p>
<ul class="doctools_itemized">
<li><p><b class="package">Tcl 8.6</b></p></li>
<li><p><b class="package">cmdline</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::sshrun::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::sshrun</a></h3>
<p>Core API functions for punk::sshrun</p>
<dl class="doctools_definitions">
<dt><a name="1">connect <i class="arg">args</i></a></dt>
<dd><p>Must be called first.</p>
<p>This proc opens an io channel to the tclsh in the remote host (via ssh) that is kept in an internal variable for subsequent use.</p>
<p>The file handle can be retrieved if desired through the command: get_filehandle {host}</p></dd>
<dt><a name="2">disconnect <i class="arg">host</i></a></dt>
<dd><p>Must be called last. Closes the filehandle opened by connect.</p></dd>
<dt><a name="3">push <i class="arg">host</i> <i class="arg">script</i></a></dt>
<dd><p>&lt;script&gt; can be any tcl code.</p>
<p>For example, if the remote host is named &quot;diablo&quot;</p>
<pre class="doctools_example">
ssh::push &quot;diablo&quot; &quot;exec date&quot;
ssh::push &quot;diablo&quot; &quot;exec uname -a&quot;
</pre>
<p>The commands are note executed immediately. Instead, the &quot;push&quot; proc simply accumulates them in a list that is sent to the host when the &quot;send&quot; procedure is executed.</p>
<p>Each push proc inserts the newline '\n' character after each &lt;script&gt;</p>
<p>In the above example. Internally, each &lt;script&gt; is a member of a list, and when the &quot;send&quot; proc is invoked the entire script is constructed as a &quot;join &lt;list&gt; \n</p></dd>
<dt><a name="4">send <i class="arg">host</i></a></dt>
<dd><p>This proc does the equivalent of a</p>
<pre class="doctools_example">
puts &lt;filehandle&gt; [join &lt;script_list&gt; \n]
flush &lt;filehandle&gt;
</pre>
</dd>
<dt><a name="5">send_exit <i class="arg">host</i></a></dt>
<dd><p>This proc is similar to the above, but it &quot;pushes&quot; an exit command at the end of the script. The proc does the equivalent of</p>
<pre class="doctools_example">
ssh::push &lt;host&gt; &quot;exit&quot;
ssh::send &lt;host&gt;
</pre>
<p>The net effect if this is that the remote host's tclsh will exit, so that the filehandle receives an eof and we can use</p>
<pre class="doctools_example">
[read &lt;filehandle&gt;]
</pre>
<p>to read the entire output at once (see the pop proc below)</p></dd>
<dt><a name="6">send_exit <i class="arg">host</i></a></dt>
<dd><p>After executing a &quot;send&quot;, this can be used to read one line of output. The proc does the equivalent of</p>
<pre class="doctools_example">
[gets &lt;filehandle&gt; line]
</pre>
</dd>
<dt><a name="7">pop_all <i class="arg">host</i> <i class="arg">output_varname</i></a></dt>
<dd><p>This proc does the equivalent of</p>
<pre class="doctools_example">
while {[pop_line $host line] &gt;=0} {
puts $line;
}
</pre>
<p>but all the output is returned as one string in output_varname.</p>
<p>It should be used only when we know that the remote host's tclsh will exit, so that the above code will detect the eof and exit</p>
<p>(see the send_exit proc above)</p>
<p>The function returns the number of lines read (0 if nothing is read before encoutering eof)</p></dd>
<dt><a name="8">pop_read <i class="arg">host</i> <i class="arg">numbytes</i> <i class="arg">output_varname</i></a></dt>
<dd><p>Returns: numbytes read. If numbytes is not positive, then read is called without the numbytes argument.</p></dd>
<dt><a name="9">hfileevent <i class="arg">host</i> <i class="arg">readable_writable</i> <i class="arg">script</i></a></dt>
<dd><p>Equivalent to:</p>
<pre class="doctools_example">
fileevent &lt;filehandle&gt; $readable_writable $script
</pre>
</dd>
<dt><a name="10">hconfigure <i class="arg">host</i> <i class="arg">args</i></a></dt>
<dd></dd>
<dt><a name="11">rexec <i class="arg">host</i> <i class="arg">script</i> <i class="arg">output_varname</i></a></dt>
<dd><p>shortcut for:</p>
<pre class="doctools_example">
ssh::rexec_nopop $host $script
ssh::pop_all $host outputvar
</pre>
</dd>
<dt><a name="12">get_filehandle <i class="arg">host</i></a></dt>
<dd></dd>
</dl>
</div>
<div id="subsection5" class="doctools_subsection"><h3><a name="subsection5">Namespace punk::sshrun::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::sshrun::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#module">module</a>, <a href="../../../index.html#ssh">ssh</a></p>
</div>
<div id="copyright" class="doctools_section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2009</p>
</div>
</div></body></html>

62
src/embedded/www/doc/files/_module_overtype-1.5.1.tm.html → src/embedded/www/doc/files/punk/_module_uc-0.1.0.tm.html

@ -1,5 +1,5 @@
<!DOCTYPE html><html><head>
<title>overtype_module_overtype - overtype text layout</title>
<title>shellspy_module_punk::uc - -</title>
<style type="text/css"><!--
HTML {
background: #FFFFFF;
@ -91,21 +91,21 @@
}
--></style>
</head>
<!-- Generated from file '_module_overtype-1.5.1.tm.man' by tcllib/doctools with format 'html'
<!-- Generated from file '_module_uc-0.1.0.tm.man' by tcllib/doctools with format 'html'
-->
<!-- Copyright &amp;copy; 2024
-->
<!-- overtype_module_overtype.0
<!-- shellspy_module_punk::uc.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>
<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>
<h1 class="doctools_title">shellspy_module_punk::uc(0) 0.1.0 doc &quot;-&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>
<p>shellspy_module_punk::uc - Module API</p>
</div>
<div id="toc" class="doctools_section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="doctools_toc">
@ -118,7 +118,18 @@
<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="#section3">API</a>
<ul>
<li class="doctools_subsection"><a href="#subsection3">Namespace punk::uc::class</a></li>
<li class="doctools_subsection"><a href="#subsection4">Namespace punk::uc</a></li>
<li class="doctools_subsection"><a href="#subsection5">Namespace punk::uc::lib</a></li>
</ul>
</li>
<li class="doctools_section"><a href="#section4">Internal</a>
<ul>
<li class="doctools_subsection"><a href="#subsection6">Namespace punk::uc::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>
@ -126,7 +137,7 @@
<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>
<li>package require <b class="pkgname">punk::uc</b></li>
</ul>
</div>
</div>
@ -134,26 +145,41 @@
<p>-</p>
</div>
<div id="section2" class="doctools_section"><h2><a name="section2">Overview</a></h2>
<p>overview of overtype</p>
<p>overview of punk::uc</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>
<p>packages used by punk::uc</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 id="subsection3" class="doctools_subsection"><h3><a name="subsection3">Namespace punk::uc::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::uc</a></h3>
<p>Core API functions for punk::uc</p>
<dl class="doctools_definitions">
</dl>
</div>
<div id="subsection5" class="doctools_subsection"><h3><a name="subsection5">Namespace punk::uc::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::uc::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#ansi">ansi</a>, <a href="../../index.html#module">module</a>, <a href="../../index.html#text">text</a></p>
<p><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>

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

@ -163,7 +163,7 @@
<div id="subsection2" class="doctools_subsection"><h3><a name="subsection2">dependencies</a></h3>
<p>packages used by punk::mix::commandset::project</p>
<ul class="doctools_itemized">
<li><p><b class="package">Tcl 8.6</b></p></li>
<li><p><b class="package">Tcl 8.6-</b></p></li>
<li><p><b class="package">punk::ns</b></p></li>
<li><p><b class="package">sqlite3</b> (binary)</p></li>
<li><p><b class="package">overtype</b></p></li>

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

@ -13,15 +13,7 @@
<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_tocleft" ><a name='overtype_module_overtype'><a href="files/_module_overtype-1.6.2.tm.html">overtype_module_overtype</a></td>
<td class="#doctools_tocright">overtype text layout - ansi aware</td>
</tr>
<tr class="#doctools_tocodd" >
@ -37,7 +29,7 @@
<td class="#doctools_tocright">Introduction to punkshell</td>
</tr>
<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_tocleft" ><a name='punkshell_module_punk_ansi'><a href="files/punk/_module_ansi-0.1.1.tm.html">punkshell_module_punk::ansi</a></td>
<td class="#doctools_tocright">Ansi string functions</td>
</tr>
<tr class="#doctools_tocodd" >
@ -65,7 +57,7 @@
<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_tocleft" ><a name='punkshell_module_punk_lib'><a href="files/punk/_module_lib-0.1.1.tm.html">punkshell_module_punk::lib</a></td>
<td class="#doctools_tocright">punk general utility functions</td>
</tr>
<tr class="#doctools_toceven" >
@ -76,5 +68,21 @@
<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>
<td class="#doctools_tocright">Filesystem path utilities</td>
</tr>
<tr class="#doctools_toceven" >
<td class="#doctools_tocleft" ><a name='shellspy_module_punk_assertion'><a href="files/punk/_module_assertion-0.1.0.tm.html">shellspy_module_punk::assertion</a></td>
<td class="#doctools_tocright">assertion alternative to control::assert</td>
</tr>
<tr class="#doctools_tocodd" >
<td class="#doctools_tocleft" ><a name='shellspy_module_punk_basictelnet'><a href="files/punk/_module_basictelnet-0.1.0.tm.html">shellspy_module_punk::basictelnet</a></td>
<td class="#doctools_tocright">basic telnet client - DKF/Wiki</td>
</tr>
<tr class="#doctools_toceven" >
<td class="#doctools_tocleft" ><a name='shellspy_module_punk_sshrun'><a href="files/punk/_module_sshrun-0.1.0.tm.html">shellspy_module_punk::sshrun</a></td>
<td class="#doctools_tocright">Tcl procedures to execute tcl scripts in remote hosts</td>
</tr>
<tr class="#doctools_tocodd" >
<td class="#doctools_tocleft" ><a name='shellspy_module_punk_uc'><a href="files/punk/_module_uc-0.1.0.tm.html">shellspy_module_punk::uc</a></td>
<td class="#doctools_tocright">Module API</td>
</tr>
</table>
</dd></dl><hr></body></html>

69
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="#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>
<a href="#cA"> A </a> &#183; <a href="#cB"> B </a> &#183; <a href="#cC"> C </a> &#183; <a href="#cD"> D </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/_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>
<a href="doc/files/_module_overtype-1.6.2.tm.html"> overtype_module_overtype </a> &#183; <a href="doc/files/punk/_module_ansi-0.1.1.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>
@ -34,6 +34,16 @@
<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>
<td class="#doctools_idxleft" width="35%"><a name="assert"> assert </a></td>
<td class="#doctools_idxright" width="65%">
<a href="doc/files/punk/_module_assertion-0.1.0.tm.html"> shellspy_module_punk::assertion </a>
</td></tr>
<tr class="#doctools_idxeven" valign=top>
<td class="#doctools_idxleft" width="35%"><a name="assertion"> assertion </a></td>
<td class="#doctools_idxright" width="65%">
<a href="doc/files/punk/_module_assertion-0.1.0.tm.html"> shellspy_module_punk::assertion </a>
</td></tr>
<tr class="#doctools_idxheader"><th colspan="2">
<a name="cB">Keywords: B</a>
</th></tr>
@ -58,22 +68,30 @@
<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>
<a href="doc/files/punk/_module_ansi-0.1.1.tm.html"> punkshell_module_punk::ansi </a>
</td></tr>
<tr class="#doctools_idxheader"><th colspan="2">
<a name="cE">Keywords: E</a>
<a name="cD">Keywords: D</a>
</th></tr>
<tr class="#doctools_idxodd" valign=top>
<td class="#doctools_idxleft" width="35%"><a name="debug"> debug </a></td>
<td class="#doctools_idxright" width="65%">
<a href="doc/files/punk/_module_assertion-0.1.0.tm.html"> shellspy_module_punk::assertion </a>
</td></tr>
<tr class="#doctools_idxheader"><th colspan="2">
<a name="cE">Keywords: E</a>
</th></tr>
<tr class="#doctools_idxeven" 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>
<tr class="#doctools_idxodd" 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>
<tr class="#doctools_idxeven" 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>
@ -81,12 +99,12 @@
<tr class="#doctools_idxheader"><th colspan="2">
<a name="cF">Keywords: F</a>
</th></tr>
<tr class="#doctools_idxeven" valign=top>
<tr class="#doctools_idxodd" valign=top>
<td class="#doctools_idxleft" width="35%"><a name="file"> file </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_idxodd" valign=top>
<tr class="#doctools_idxeven" valign=top>
<td class="#doctools_idxleft" width="35%"><a name="filesystem"> filesystem </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>
@ -94,43 +112,43 @@
<tr class="#doctools_idxheader"><th colspan="2">
<a name="cL">Keywords: L</a>
</th></tr>
<tr class="#doctools_idxeven" valign=top>
<tr class="#doctools_idxodd" 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>
<a href="doc/files/punk/_module_lib-0.1.1.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>
<tr class="#doctools_idxeven" valign=top>
<td class="#doctools_idxleft" width="35%"><a name="module"> module </a></td>
<td class="#doctools_idxright" width="65%">
<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>
<a href="doc/files/_module_overtype-1.6.2.tm.html"> overtype_module_overtype </a> &#183; <a href="doc/files/punk/_module_ansi-0.1.1.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.1.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> &#183; <a href="doc/files/punk/_module_assertion-0.1.0.tm.html"> shellspy_module_punk::assertion </a> &#183; <a href="doc/files/punk/_module_basictelnet-0.1.0.tm.html"> shellspy_module_punk::basictelnet </a> &#183; <a href="doc/files/punk/_module_sshrun-0.1.0.tm.html"> shellspy_module_punk::sshrun </a> &#183; <a href="doc/files/punk/_module_uc-0.1.0.tm.html"> shellspy_module_punk::uc </a>
</td></tr>
<tr class="#doctools_idxheader"><th colspan="2">
<a name="cP">Keywords: P</a>
</th></tr>
<tr class="#doctools_idxeven" valign=top>
<tr class="#doctools_idxodd" 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_idxodd" valign=top>
<tr class="#doctools_idxeven" 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_idxeven" valign=top>
<tr class="#doctools_idxodd" 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_idxodd" valign=top>
<tr class="#doctools_idxeven" 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_idxeven" valign=top>
<tr class="#doctools_idxodd" 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>
@ -138,7 +156,7 @@
<tr class="#doctools_idxheader"><th colspan="2">
<a name="cR">Keywords: R</a>
</th></tr>
<tr class="#doctools_idxodd" valign=top>
<tr class="#doctools_idxeven" 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>
@ -146,15 +164,20 @@
<tr class="#doctools_idxheader"><th colspan="2">
<a name="cS">Keywords: S</a>
</th></tr>
<tr class="#doctools_idxeven" valign=top>
<tr class="#doctools_idxodd" 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>
<td class="#doctools_idxleft" width="35%"><a name="ssh"> ssh </a></td>
<td class="#doctools_idxright" width="65%">
<a href="doc/files/punk/_module_sshrun-0.1.0.tm.html"> shellspy_module_punk::sshrun </a>
</td></tr>
<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>
<a href="doc/files/punk/_module_ansi-0.1.1.tm.html"> punkshell_module_punk::ansi </a>
</td></tr>
<tr class="#doctools_idxheader"><th colspan="2">
<a name="cT">Keywords: T</a>
@ -162,12 +185,12 @@
<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>
<a href="doc/files/punk/_module_ansi-0.1.1.tm.html"> punkshell_module_punk::ansi </a>
</td></tr>
<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/_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>
<a href="doc/files/_module_overtype-1.6.2.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>
@ -175,7 +198,7 @@
<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>
<a href="doc/files/punk/_module_lib-0.1.1.tm.html"> punkshell_module_punk::lib </a>
</td></tr>
</table>
</body></html>

30
src/embedded/www/toc.html

@ -13,15 +13,7 @@
<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_tocleft" ><a name='overtype_module_overtype'><a href="doc/files/_module_overtype-1.6.2.tm.html">overtype_module_overtype</a></td>
<td class="#doctools_tocright">overtype text layout - ansi aware</td>
</tr>
<tr class="#doctools_tocodd" >
@ -37,7 +29,7 @@
<td class="#doctools_tocright">Introduction to punkshell</td>
</tr>
<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_tocleft" ><a name='punkshell_module_punk_ansi'><a href="doc/files/punk/_module_ansi-0.1.1.tm.html">punkshell_module_punk::ansi</a></td>
<td class="#doctools_tocright">Ansi string functions</td>
</tr>
<tr class="#doctools_tocodd" >
@ -65,7 +57,7 @@
<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_tocleft" ><a name='punkshell_module_punk_lib'><a href="doc/files/punk/_module_lib-0.1.1.tm.html">punkshell_module_punk::lib</a></td>
<td class="#doctools_tocright">punk general utility functions</td>
</tr>
<tr class="#doctools_toceven" >
@ -76,5 +68,21 @@
<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>
<td class="#doctools_tocright">Filesystem path utilities</td>
</tr>
<tr class="#doctools_toceven" >
<td class="#doctools_tocleft" ><a name='shellspy_module_punk_assertion'><a href="doc/files/punk/_module_assertion-0.1.0.tm.html">shellspy_module_punk::assertion</a></td>
<td class="#doctools_tocright">assertion alternative to control::assert</td>
</tr>
<tr class="#doctools_tocodd" >
<td class="#doctools_tocleft" ><a name='shellspy_module_punk_basictelnet'><a href="doc/files/punk/_module_basictelnet-0.1.0.tm.html">shellspy_module_punk::basictelnet</a></td>
<td class="#doctools_tocright">basic telnet client - DKF/Wiki</td>
</tr>
<tr class="#doctools_toceven" >
<td class="#doctools_tocleft" ><a name='shellspy_module_punk_sshrun'><a href="doc/files/punk/_module_sshrun-0.1.0.tm.html">shellspy_module_punk::sshrun</a></td>
<td class="#doctools_tocright">Tcl procedures to execute tcl scripts in remote hosts</td>
</tr>
<tr class="#doctools_tocodd" >
<td class="#doctools_tocleft" ><a name='shellspy_module_punk_uc'><a href="doc/files/punk/_module_uc-0.1.0.tm.html">shellspy_module_punk::uc</a></td>
<td class="#doctools_tocright">Module API</td>
</tr>
</table>
</dd></dl><hr></body></html>

Loading…
Cancel
Save