Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Difference From cce4ddc36cca1845
To a9b2ee05e38e52f4
2014-06-11
| | |
22:41 |
|
check-in: 3ea2dbb6c0 user: andreask tags: pt-work
|
22:20 |
|
check-in: cce4ddc36c user: andreask tags: pt-work
|
22:17 |
|
check-in: a9bc5f4335 user: andreask tags: pt-work
|
2014-01-31
| | |
08:04 |
|
check-in: 4f04f7e130 user: aku tags: tcllib-1-16-rc
|
07:43 |
|
check-in: a9b2ee05e3 user: aku tags: tcllib-1-16-rc
|
07:39 |
|
check-in: d62c5a4fed user: aku tags: tcllib-1-16-rc
|
| | |
Changes to README.releasemgr.
︙ | | |
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
-
+
-
-
-
-
-
-
-
-
-
+
-
-
+
-
-
-
+
-
-
-
+
-
-
-
-
-
+
-
-
-
-
-
-
+
-
|
and anybody else interested in the task.
Basics
------
< Flesh this out >
sak.tcl validate
sak.tcl
sak.tcl test run
sak.tcl review
sak.tcl readme
sak.tcl localdoc
sak.tcl release (change to include rpmspec+gentip55+yml)
< Tasks, and how to perform them >
Making a release (candidate) branch.
Readying the release in the branch.
Make the release official, merging the branch back.
Uploading and releasing files
Uploading and releasing files to SourceForge
--------------------------------------------
(1) Create a proper fossil event for the release, via
The main form to upload files is
http://core.tcl.tk/tcllib/eventedit
See existing events (*) for a template
https://frs.sourceforge.net/webupload
(Ad *) http://core.tcl.tk/tcllib/event/dac0ddcd2e990234143196b4dc438fe01e7b9817
(2) Update the following web locations
This is WebDAV.
(a) Home page: http://core.tcl.tk/tcllib/home
(b) Downloads: http://core.tcl.tk/tcllib/wiki?name=Downloads
(c) Past Releases: http://core.tcl.tk/tcllib/wiki?name=Past+Releases
Admin access to the fossil repository required
The place to manage the releases the files are for is
(d) http://www.tcl.tk/home/release.txt
(e) http://www.tcl.tk/software/tcllib/*.tml
ssh access to tcl.activestate.com
aka www.tcl.tk
required.
https://sourceforge.net/project/admin/editpackages.php?group_id=12883
(f) http://wiki.tcl.tk/1246
|
Changes to embedded/man/files/modules/crc/sum.n.
1
2
3
4
5
6
7
8
9
10
11
12
|
1
2
3
4
5
6
7
8
9
10
11
12
|
-
+
|
'\"
'\" Generated from file 'sum\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2002, Pat Thoyts <patthoyts@users\&.sourceforge\&.net>
'\"
.TH "sum" n 1\&.1\&.1 tcllib "Cyclic Redundancy Checks"
.TH "sum" n 1\&.1\&.0 tcllib "Cyclic Redundancy Checks"
.\" 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,
|
︙ | | |
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
|
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
|
-
+
|
..
.BS
.SH NAME
sum \- Calculate a sum(1) compatible checksum
.SH SYNOPSIS
package require \fBTcl 8\&.2\fR
.sp
package require \fBsum ?1\&.1\&.1?\fR
package require \fBsum ?1\&.1\&.0?\fR
.sp
\fB::crc::sum\fR ?\fI-bsd\fR | \fI-sysv\fR? ?\fI-format fmt\fR? ?\fI-chunksize size\fR? [ \fI-filename file\fR | \fI-channel chan\fR | \fIstring\fR ]
.sp
.BE
.SH DESCRIPTION
.PP
This package provides a Tcl-only implementation of the sum(1) command
|
︙ | | |
Changes to embedded/man/files/modules/debug/debug.n.
︙ | | |
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
|
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
|
-
+
|
.SH DESCRIPTION
Debugging areas of interest are represented by 'tags' which have
independently settable levels of interest (an integer, higher is more
detailed)\&.
.SH API
.TP
\fBdebug\&.\fBtag\fR\fR \fImessage\fR ?\fIlevel\fR?
For each known tag the package creates a command with this signature
For each known tag the package creates a command with this signatur
the user can then use to provide the debug narrative of the tag\&.
The narrative \fImessage\fR is provided as a Tcl script whose value is
\fBsubst\fRed in the caller's scope if and only if the current level of
interest for the \fItag\fR matches or exceeds the call's \fIlevel\fR
of detail\&. This is useful, as one can place arbitrarily complex
narrative in code without unnecessarily evaluating it\&.
.sp
|
︙ | | |
Changes to embedded/man/files/modules/dns/tcllib_ip.n.
1
2
3
4
5
6
7
8
9
10
11
12
13
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
-
+
|
'\"
'\" Generated from file 'tcllib_ip\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2004, Pat Thoyts
'\" Copyright (c) 2005 Aamer Akhter <aakhter@cisco\&.com>
'\"
.TH "tcllib_ip" n 1\&.2\&.2 tcllib "Domain Name Service"
.TH "tcllib_ip" n 1\&.2\&.1 tcllib "Domain Name Service"
.\" 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,
|
︙ | | |
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
|
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
|
-
+
|
..
.BS
.SH NAME
tcllib_ip \- IPv4 and IPv6 address manipulation
.SH SYNOPSIS
package require \fBTcl 8\&.2\fR
.sp
package require \fBip ?1\&.2\&.2?\fR
package require \fBip ?1\&.2\&.1?\fR
.sp
\fB::ip::version\fR \fIaddress\fR
.sp
\fB::ip::is\fR \fIclass\fR \fIaddress\fR
.sp
\fB::ip::equal\fR \fIaddress\fR \fIaddress\fR
.sp
|
︙ | | |
Changes to embedded/man/files/modules/doctools/doctools.n.
1
2
3
4
5
6
7
8
9
10
11
12
|
1
2
3
4
5
6
7
8
9
10
11
12
|
-
+
-
+
|
'\"
'\" Generated from file 'doctools\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2003-2014 Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>
'\" Copyright (c) 2003-2013 Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>
'\"
.TH "doctools" n 1\&.4\&.18 tcllib "Documentation tools"
.TH "doctools" n 1\&.4\&.16 tcllib "Documentation tools"
.\" 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,
|
︙ | | |
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
|
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
|
-
+
|
..
.BS
.SH NAME
doctools \- doctools - Processing documents
.SH SYNOPSIS
package require \fBTcl 8\&.2\fR
.sp
package require \fBdoctools ?1\&.4\&.18?\fR
package require \fBdoctools ?1\&.4\&.16?\fR
.sp
\fB::doctools::new\fR \fIobjectName\fR ?\fIoption value\fR\&.\&.\&.?
.sp
\fB::doctools::help\fR
.sp
\fB::doctools::search\fR \fIpath\fR
.sp
|
︙ | | |
697
698
699
700
701
702
703
704
705
706
|
697
698
699
700
701
702
703
704
705
706
|
-
+
|
doctools_intro, doctools_lang_cmdref, doctools_lang_intro, doctools_lang_syntax, doctools_plugin_apiref
.SH KEYWORDS
HTML, TMML, conversion, documentation, manpage, markup, nroff
.SH CATEGORY
Documentation tools
.SH COPYRIGHT
.nf
Copyright (c) 2003-2014 Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>
Copyright (c) 2003-2013 Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>
.fi
|
Changes to embedded/man/files/modules/dtplite/pkg_dtplite.n.
1
2
3
4
5
6
7
8
9
10
11
12
|
1
2
3
4
5
6
7
8
9
10
11
12
|
-
+
|
'\"
'\" Generated from file 'pkg_dtplite\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2004-2013 Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>
'\"
.TH "dtplite" n 1\&.2 tcllib "Documentation toolbox"
.TH "dtplite" n 1\&.1 tcllib "Documentation toolbox"
.\" 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,
|
︙ | | |
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
|
270
271
272
273
274
275
276
277
278
279
280
281
282
283
|
-
-
|
.de MT
.QW ""
..
.BS
.SH NAME
dtplite \- Lightweight DocTools Markup Processor
.SH SYNOPSIS
package require \fBdtplite ?1\&.2?\fR
.sp
\fBdtplite\fR \fB-o\fR \fIoutput\fR ?options? \fIformat\fR \fIinputfile\fR
.sp
\fBdtplite\fR \fBvalidate\fR \fIinputfile\fR
.sp
\fBdtplite\fR \fB-o\fR \fIoutput\fR ?options? \fIformat\fR \fIinputdirectory\fR
.sp
\fBdtplite\fR \fB-merge\fR \fB-o\fR \fIoutput\fR ?options? \fIformat\fR \fIinputdirectory\fR
|
︙ | | |
Changes to embedded/man/files/modules/ftp/ftp.n.
1
2
3
4
5
6
7
8
9
10
11
|
1
2
3
4
5
6
7
8
9
10
11
|
-
+
|
'\"
'\" Generated from file 'ftp\&.man' by tcllib/doctools with format 'nroff'
'\"
.TH "ftp" n 2\&.4\&.13 tcllib "ftp client"
.TH "ftp" n 2\&.4\&.11 tcllib "ftp client"
.\" The -*- nroff -*- definitions below are for supplemental macros used
.\" in Tcl/Tk manual entries.
.\"
.\" .AP type name in/out ?indent?
.\" Start paragraph describing an argument to a library procedure.
.\" type is type of argument (int, etc.), in/out is either "in", "out",
.\" or "in/out" to describe whether procedure reads or modifies arg,
|
︙ | | |
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
|
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
|
-
+
|
..
.BS
.SH NAME
ftp \- Client-side tcl implementation of the ftp protocol
.SH SYNOPSIS
package require \fBTcl 8\&.2\fR
.sp
package require \fBftp ?2\&.4\&.13?\fR
package require \fBftp ?2\&.4\&.11?\fR
.sp
\fB::ftp::Open\fR \fIserver\fR \fIuser\fR \fIpasswd\fR ?\fIoptions\fR?
.sp
\fB::ftp::Close\fR \fIhandle\fR
.sp
\fB::ftp::Cd\fR \fIhandle\fR \fIdirectory\fR
.sp
|
︙ | | |
Changes to embedded/man/files/modules/html/html.n.
1
2
3
4
5
6
7
8
9
10
11
|
1
2
3
4
5
6
7
8
9
10
11
|
-
+
|
'\"
'\" Generated from file 'html\&.man' by tcllib/doctools with format 'nroff'
'\"
.TH "html" n 1\&.4\&.3 tcllib "HTML Generation"
.TH "html" n 1\&.4 tcllib "HTML Generation"
.\" 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,
|
︙ | | |
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
|
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
|
-
+
|
..
.BS
.SH NAME
html \- Procedures to generate HTML structures
.SH SYNOPSIS
package require \fBTcl 8\&.2\fR
.sp
package require \fBhtml ?1\&.4\&.3?\fR
package require \fBhtml ?1\&.4?\fR
.sp
\fB::html::author\fR \fIauthor\fR
.sp
\fB::html::bodyTag\fR \fIargs\fR
.sp
\fB::html::cell\fR \fIparam value\fR ?\fItag\fR?
.sp
|
︙ | | |
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
|
341
342
343
344
345
346
347
348
349
350
351
352
353
354
|
-
-
-
-
-
-
-
-
|
.sp
\fB::html::keywords\fR \fIargs\fR
.sp
\fB::html::mailto\fR \fIemail\fR ?\fIsubject\fR?
.sp
\fB::html::meta\fR \fIargs\fR
.sp
\fB::html::css\fR \fIhref\fR
.sp
\fB::html::css-clear\fR
.sp
\fB::html::js\fR \fIhref\fR
.sp
\fB::html::js-clear\fR
.sp
\fB::html::minorList\fR \fIlist\fR ?\fIordered\fR?
.sp
\fB::html::minorMenu\fR \fIlist\fR ?\fIsep\fR?
.sp
\fB::html::nl2br\fR \fIstring\fR
.sp
\fB::html::openTag\fR \fItag\fR ?\fIparam\fR?
|
︙ | | |
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
|
387
388
389
390
391
392
393
394
395
396
397
398
399
400
|
-
-
|
.sp
\fB::html::textInputRow\fR \fIlabel name value args\fR
.sp
\fB::html::varEmpty\fR \fIname\fR
.sp
\fB::html::while\fR \fItest body\fR
.sp
\fB::html::doctype\fR \fIid\fR
.sp
.BE
.SH DESCRIPTION
.PP
The package \fBhtml\fR provides commands that generate HTML\&.
These commands typically return an HTML string as their result\&. In
particular, they do not output their result to \fBstdout\fR\&.
.PP
|
︙ | | |
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
|
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
|
-
+
|
Generate a set of \fIcheckbox\fR form elements and associated labels\&. The
\fIlist\fR should contain an alternating list of labels and values\&.
This uses \fB::html::checkbox\fR\&. All the \fIcheckbox\fR buttons share the
same \fIkey\fR for their name\&. The \fIsep\fR is text used to separate
the elements\&.
.TP
\fB::html::checkValue\fR \fIname\fR ?\fIvalue\fR?
Generate the "name=\fIname\fR value=\fIvalue\fR" for a \fIcheckbox\fR form
Generate the "name=\fIname\fR value=\fIvalue\fR for a \fIcheckbox\fR form
element\&. If the CGI variable \fIname\fR has the value \fIvalue\fR,
then SELECTED is added to the return value\&. \fIvalue\fR defaults to
"1"\&.
.TP
\fB::html::closeTag\fR
Pop a tag off the stack created by \fB::html::openTag\fR and generate
the corresponding close tag (e\&.g\&., </body>)\&.
|
︙ | | |
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
|
581
582
583
584
585
586
587
588
589
590
591
592
593
594
|
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
|
\fB::html::meta\fR \fIargs\fR
\fISide effect only\fR\&. Call this before \fB::html::head\fR to
define a \fImeta\fR tag for the page\&. The \fIargs\fR is a Tcl-style name,
value list that is used for the name= and value= parameters for the
\fImeta\fR tag\&. The \fImeta\fR tag is included in the result of
\fB::html::head\fR\&.
.TP
\fB::html::css\fR \fIhref\fR
\fISide effect only\fR\&. Call this before \fB::html::head\fR to
define a \fIlink\fR tag for a linked CSS document\&. The \fIhref\fR
value is a HTTP URL to a CSS document\&. The \fIlink\fR tag is included
in the result of \fB::html::head\fR\&.
.sp
Multiple calls of this command are allowed, enabling the use of
multiple CSS document references\&. In other words, the arguments
of multiple calls are accumulated, and do not overwrite each other\&.
.TP
\fB::html::css-clear\fR
\fISide effect only\fR\&. Call this before \fB::html::head\fR to
clear all links to CSS documents\&.
.sp
Multiple calls of this command are allowed, doing nothing after the
first of a sequence with no intervening \fB::html::css\fR\&.
.TP
\fB::html::js\fR \fIhref\fR
\fISide effect only\fR\&. Call this before \fB::html::head\fR to
define a \fIscript\fR tag for a linked JavaScript document\&. The
\fIhref\fR is a HTTP URL to a JavaScript document\&. The \fIscript\fR
tag is included in the result of \fB::html::head\fR\&.
.sp
Multiple calls of this command are allowed, enabling the use of
multiple JavaScript document references\&. In other words, the arguments
of multiple calls are accumulated, and do not overwrite each other\&.
.TP
\fB::html::js-clear\fR
\fISide effect only\fR\&. Call this before \fB::html::head\fR to
clear all links to JavaScript documents\&.
.sp
Multiple calls of this command are allowed, doing nothing after the
first of a sequence with no intervening \fB::html::js\fR\&.
.TP
\fB::html::minorList\fR \fIlist\fR ?\fIordered\fR?
Generate an ordered or unordered list of links\&. The \fIlist\fR is a
Tcl-style name, value list of labels and urls for the links\&.
\fIordered\fR is a boolean used to choose between an ordered or
unordered list\&. It defaults to \fBfalse\fR\&.
.TP
\fB::html::minorMenu\fR \fIlist\fR ?\fIsep\fR?
|
︙ | | |
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
|
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
|
-
+
|
\fB::html::radioSet\fR \fIkey sep list\fR
Generate a set of \fIinput\fR tags of type \fIradio\fR and an associated text
label\&. All the radio buttons share the same \fIkey\fR for their name\&.
The \fIsep\fR is text used to separate the elements\&. The \fIlist\fR
is a Tcl-style label, value list\&.
.TP
\fB::html::radioValue\fR \fIname value\fR
Generate the "name=\fIname\fR value=\fIvalue\fR" for a \fIradio\fR form
Generate the "name=\fIname\fR value=\fIvalue\fR for a \fIradio\fR form
element\&. If the CGI variable \fIname\fR has the value \fIvalue\fR,
then SELECTED is added to the return value\&.
.TP
\fB::html::refresh\fR \fIseconds url\fR
Set up a refresh \fImeta\fR tag\&. Call this before \fB::html::head\fR and the
HEAD section will contain a \fImeta\fR tag that causes the document to
refresh in \fIseconds\fR seconds\&. The \fIurl\fR is optional\&. If
|
︙ | | |
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
|
702
703
704
705
706
707
708
709
710
711
712
713
714
715
|
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
|
empty string for its value\&.
.TP
\fB::html::while\fR \fItest body\fR
This procedure is similar to the built-in Tcl \fBwhile\fR control
structure\&. Rather than evaluating the body, it returns the subst'ed
\fIbody\fR\&. Each iteration of the loop causes another string to be
concatenated to the result value\&.
.TP
\fB::html::doctype\fR \fIid\fR
This procedure can be used to build the standard DOCTYPE
declaration string\&. It will return the standard declaration
string for the id, or throw an error if the id is not known\&.
The following id's are defined:
.RS
.IP [1]
HTML32
.IP [2]
HTML40
.IP [3]
HTML40T
.IP [4]
HTML40F
.IP [5]
HTML401
.IP [6]
HTML401T
.IP [7]
HTML401F
.IP [8]
XHTML10S
.IP [9]
XHTML10T
.IP [10]
XHTML10F
.IP [11]
XHTML11
.IP [12]
XHTMLB
.RE
.PP
.SH "BUGS, IDEAS, FEEDBACK"
This document, and the package it describes, will undoubtedly contain
bugs and other problems\&.
Please report such in the category \fIhtml\fR of the
\fITcllib Trackers\fR [http://core\&.tcl\&.tk/tcllib/reportlist]\&.
Please also report any ideas for enhancements you may have for either
|
︙ | | |
Changes to embedded/man/files/modules/json/json_write.n.
1
2
3
4
5
6
7
8
9
10
11
12
|
1
2
3
4
5
6
7
8
9
10
11
12
|
-
+
|
'\"
'\" Generated from file 'json_write\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2009-2013 Andreas Kupries <andreas_kupries@sourceforge\&.net>
'\"
.TH "json::write" n 1\&.0\&.3 tcllib "JSON"
.TH "json::write" n 1\&.0\&.2 tcllib "JSON"
.\" 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,
|
︙ | | |
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
|
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
|
-
+
|
..
.BS
.SH NAME
json::write \- JSON generation
.SH SYNOPSIS
package require \fBTcl 8\&.5\fR
.sp
package require \fBjson::write ?1\&.0\&.3?\fR
package require \fBjson::write ?1\&.0\&.2?\fR
.sp
\fB::json::write\fR \fBindented\fR
.sp
\fB::json::write\fR \fBindented\fR \fIflag\fR
.sp
\fB::json::write\fR \fBaligned\fR
.sp
|
︙ | | |
Changes to embedded/man/files/modules/math/math_geometry.n.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
-
+
|
'\"
'\" Generated from file 'math_geometry\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2001 by Ideogramic ApS and other parties
'\" Copyright (c) 2004 by Arjen Markus
'\" Copyright (c) 2010 by Andreas Kupries
'\" Copyright (c) 2010 by Kevin Kenny
'\"
.TH "math::geometry" n 1\&.1\&.3 tcllib "Tcl Math Library"
.TH "math::geometry" n 1\&.1\&.2 tcllib "Tcl Math Library"
.\" The -*- nroff -*- definitions below are for supplemental macros used
.\" in Tcl/Tk manual entries.
.\"
.\" .AP type name in/out ?indent?
.\" Start paragraph describing an argument to a library procedure.
.\" type is type of argument (int, etc.), in/out is either "in", "out",
.\" or "in/out" to describe whether procedure reads or modifies arg,
|
︙ | | |
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
|
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
|
-
+
|
..
.BS
.SH NAME
math::geometry \- Geometrical computations
.SH SYNOPSIS
package require \fBTcl ?8\&.3?\fR
.sp
package require \fBmath::geometry ?1\&.1\&.3?\fR
package require \fBmath::geometry ?1\&.1\&.2?\fR
.sp
\fB::math::geometry::+\fR \fIpoint1\fR \fIpoint2\fR
.sp
\fB::math::geometry::-\fR \fIpoint1\fR \fIpoint2\fR
.sp
\fB::math::geometry::p\fR \fIx\fR \fIy\fR
.sp
|
︙ | | |
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
|
311
312
313
314
315
316
317
318
319
320
321
322
323
324
|
-
-
|
.sp
\fB::math::geometry::calculateDistanceToLine\fR \fIP\fR \fIline\fR
.sp
\fB::math::geometry::calculateDistanceToLineSegment\fR \fIP\fR \fIlinesegment\fR
.sp
\fB::math::geometry::calculateDistanceToPolyline\fR \fIP\fR \fIpolyline\fR
.sp
\fB::math::geometry::calculateDistanceToPolygon\fR \fIP\fR \fIpolygon\fR
.sp
\fB::math::geometry::findClosestPointOnLine\fR \fIP\fR \fIline\fR
.sp
\fB::math::geometry::findClosestPointOnLineSegment\fR \fIP\fR \fIlinesegment\fR
.sp
\fB::math::geometry::findClosestPointOnPolyline\fR \fIP\fR \fIpolyline\fR
.sp
\fB::math::geometry::lengthOfPolyline\fR \fIpolyline\fR
|
︙ | | |
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
|
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
|
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
|
first and last points of the line segment
.RE
.sp
.sp
.TP
\fB::math::geometry::calculateDistanceToPolyline\fR \fIP\fR \fIpolyline\fR
Calculate the distance of point P to the polyline and
return the result\&. Note that a polyline needs not to be closed\&.
return the result\&.
.RS
.TP
list \fIP\fR
List of two numbers, the coordinates of the point
.TP
list \fIpolyline\fR
List of numbers, the coordinates of the
vertices of the polyline
.RE
.sp
.TP
\fB::math::geometry::calculateDistanceToPolygon\fR \fIP\fR \fIpolygon\fR
Calculate the distance of point P to the polygon and
return the result\&. If the list of coordinates is not closed (first and last
points differ), it is automatically closed\&.
.RS
.TP
list \fIP\fR
List of two numbers, the coordinates of the point
.TP
list \fIpolygon\fR
List of numbers, the coordinates of the
vertices of the polygon
.RE
.sp
.TP
\fB::math::geometry::findClosestPointOnLine\fR \fIP\fR \fIline\fR
Return the point on a line which is closest to a given point\&.
.RS
.TP
list \fIP\fR
|
︙ | | |
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
|
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
|
-
+
-
|
list \fIdist\fR
Distance over which to move the point
.RE
.sp
.TP
\fB::math::geometry::lineSegmentsIntersect\fR \fIlinesegment1\fR \fIlinesegment2\fR
Check if two line segments intersect or coincide\&. Returns 1 if that is
the case, 0 otherwise (in two dimensions only)\&. If an endpoint of one segment lies on
the case, 0 otherwise (in two dimensions only)\&.
the other segment (or is very close to the segment), they are considered to intersect
.RS
.TP
list \fIlinesegment1\fR
First line segment
.TP
list \fIlinesegment2\fR
Second line segment
|
︙ | | |
Changes to embedded/man/files/modules/pt/pt_peg_from_peg.n.
1
2
3
4
5
6
7
8
9
10
11
12
|
1
2
3
4
5
6
7
8
9
10
11
12
|
-
+
|
'\"
'\" Generated from file 'from\&.inc' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2009 Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>
'\"
.TH "pt::peg::from::peg" n 1\&.0\&.2 tcllib "Parser Tools"
.TH "pt::peg::from::peg" n 1 tcllib "Parser Tools"
.\" 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,
|
︙ | | |
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
|
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
|
-
+
|
..
.BS
.SH NAME
pt::peg::from::peg \- PEG Conversion\&. Read PEG format
.SH SYNOPSIS
package require \fBTcl 8\&.5\fR
.sp
package require \fBpt::peg::from::peg ?1\&.0\&.2?\fR
package require \fBpt::peg::from::peg ?1?\fR
.sp
\fBpt::peg::from::peg\fR \fBconvert\fR \fItext\fR
.sp
.BE
.SH DESCRIPTION
.PP
Are you lost ?
|
︙ | | |
Changes to embedded/man/files/modules/pt/pt_peg_op.n.
1
2
3
4
5
6
7
8
9
10
11
12
|
1
2
3
4
5
6
7
8
9
10
11
12
|
-
+
|
'\"
'\" Generated from file 'pt_peg_op\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2009 Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>
'\"
.TH "pt_peg_op" i 1\&.0\&.1 tcllib "Parser Tools"
.TH "pt_peg_op" i 1 tcllib "Parser Tools"
.\" 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,
|
︙ | | |
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
|
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
|
-
+
|
..
.BS
.SH NAME
pt_peg_op \- Parser Tools PE Grammar Utility Operations
.SH SYNOPSIS
package require \fBTcl 8\&.5\fR
.sp
package require \fBpt::peg::op 1\&.0\&.1\fR
package require \fBpt::peg::op 1\fR
.sp
\fB::peg::peg::op\fR \fBcalled\fR \fIcontainer\fR
.sp
\fB::peg::peg::op\fR \fBdechain\fR \fIcontainer\fR
.sp
\fB::peg::peg::op\fR \fBdrop unreachable\fR \fIcontainer\fR
.sp
|
︙ | | |
Changes to embedded/man/files/modules/pt/pt_peg_to_peg.n.
1
2
3
4
5
6
7
8
9
10
11
12
|
1
2
3
4
5
6
7
8
9
10
11
12
|
-
+
|
'\"
'\" Generated from file 'to\&.inc' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2009 Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>
'\"
.TH "pt::peg::to::peg" n 1\&.0\&.1 tcllib "Parser Tools"
.TH "pt::peg::to::peg" n 1 tcllib "Parser Tools"
.\" 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,
|
︙ | | |
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
|
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
|
-
+
|
..
.BS
.SH NAME
pt::peg::to::peg \- PEG Conversion\&. Write PEG format
.SH SYNOPSIS
package require \fBTcl 8\&.5\fR
.sp
package require \fBpt::peg::to::peg ?1\&.0\&.1?\fR
package require \fBpt::peg::to::peg ?1?\fR
.sp
package require \fBpt::peg \fR
.sp
package require \fBpt::pe \fR
.sp
package require \fBtext::write \fR
.sp
|
︙ | | |
Changes to embedded/man/files/modules/pt/pt_pgen.n.
1
2
3
4
5
6
7
8
9
10
11
12
|
1
2
3
4
5
6
7
8
9
10
11
12
|
-
+
|
'\"
'\" Generated from file 'pt_pgen\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2009 Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>
'\"
.TH "pt::pgen" n 1\&.0\&.2 tcllib "Parser Tools"
.TH "pt::pgen" n 1\&.0\&.1 tcllib "Parser Tools"
.\" 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,
|
︙ | | |
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
|
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
|
-
+
|
..
.BS
.SH NAME
pt::pgen \- Parser Generator
.SH SYNOPSIS
package require \fBTcl 8\&.5\fR
.sp
package require \fBpt::pgen ?1\&.0\&.2?\fR
package require \fBpt::pgen ?1\&.0\&.1?\fR
.sp
\fB::pt::pgen\fR \fIinputformat\fR \fItext\fR \fIresultformat\fR ?\fIoptions\&.\&.\&.\fR?
.sp
.BE
.SH DESCRIPTION
.PP
Are you lost ?
|
︙ | | |
Changes to embedded/man/files/modules/rest/rest.n.
1
2
3
4
5
6
7
8
9
10
11
|
1
2
3
4
5
6
7
8
9
10
11
|
-
+
|
'\"
'\" Generated from file 'rest\&.man' by tcllib/doctools with format 'nroff'
'\"
.TH "rest" n 1\&.0\&.1 tcllib "A framework for RESTful web services"
.TH "rest" n 1\&.0 tcllib "A framework for RESTful web services"
.\" 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,
|
︙ | | |
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
|
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
|
-
+
|
..
.BS
.SH NAME
rest \- define REST web APIs and call them inline or asychronously
.SH SYNOPSIS
package require \fBTcl 8\&.5\fR
.sp
package require \fBrest ?1\&.0\&.1?\fR
package require \fBrest ?1\&.0?\fR
.sp
\fB::rest::simple\fR \fIurl\fR \fIquery\fR ?config? ?body?
.sp
\fB::rest::get\fR \fIurl\fR \fIquery\fR ?config? ?body?
.sp
\fB::rest::post\fR \fIurl\fR \fIquery\fR ?config? ?body?
.sp
|
︙ | | |
Changes to embedded/man/files/modules/struct/struct_list.n.
1
2
3
4
5
6
7
8
9
10
11
12
13
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
-
+
|
'\"
'\" Generated from file 'struct_list\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2003-2005 by Kevin B\&. Kenny\&. All rights reserved
'\" Copyright (c) 2003-2012 Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>
'\"
.TH "struct::list" n 1\&.8\&.3 tcllib "Tcl Data Structures"
.TH "struct::list" n 1\&.8\&.2 tcllib "Tcl Data Structures"
.\" 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,
|
︙ | | |
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
|
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
|
-
+
|
..
.BS
.SH NAME
struct::list \- Procedures for manipulating lists
.SH SYNOPSIS
package require \fBTcl 8\&.4\fR
.sp
package require \fBstruct::list ?1\&.8\&.3?\fR
package require \fBstruct::list ?1\&.8\&.2?\fR
.sp
\fB::struct::list\fR \fBlongestCommonSubsequence\fR \fIsequence1\fR \fIsequence2\fR ?\fImaxOccurs\fR?
.sp
\fB::struct::list\fR \fBlongestCommonSubsequence2\fR \fIsequence1 sequence2\fR ?\fImaxOccurs\fR?
.sp
\fB::struct::list\fR \fBlcsInvert\fR \fIlcsData\fR \fIlen1\fR \fIlen2\fR
.sp
|
︙ | | |
Changes to embedded/man/files/modules/tar/tar.n.
1
2
3
4
5
6
7
8
9
10
11
|
1
2
3
4
5
6
7
8
9
10
11
|
-
+
|
'\"
'\" Generated from file 'tar\&.man' by tcllib/doctools with format 'nroff'
'\"
.TH "tar" n 0\&.10 tcllib "Tar file handling"
.TH "tar" n 0\&.9 tcllib "Tar file handling"
.\" 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,
|
︙ | | |
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
|
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
|
-
+
|
..
.BS
.SH NAME
tar \- Tar file creation, extraction & manipulation
.SH SYNOPSIS
package require \fBTcl 8\&.4\fR
.sp
package require \fBtar ?0\&.10?\fR
package require \fBtar ?0\&.9?\fR
.sp
\fB::tar::contents\fR \fItarball\fR ?\fB-chan\fR?
.sp
\fB::tar::stat\fR \fItarball\fR ?file? ?\fB-chan\fR?
.sp
\fB::tar::untar\fR \fItarball\fR \fIargs\fR
.sp
|
︙ | | |
Changes to embedded/man/files/modules/term/ansi_cctrl.n.
1
2
3
4
5
6
7
8
9
10
11
12
|
1
2
3
4
5
6
7
8
9
10
11
12
|
-
+
|
'\"
'\" Generated from file 'ansi_cctrl\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2006-2008 Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>
'\"
.TH "term::ansi::code::ctrl" n 0\&.2 tcllib "Terminal control"
.TH "term::ansi::code::ctrl" n 0\&.1 tcllib "Terminal control"
.\" 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,
|
︙ | | |
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
|
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
|
-
+
-
+
|
..
.BS
.SH NAME
term::ansi::code::ctrl \- ANSI control sequences
.SH SYNOPSIS
package require \fBTcl 8\&.4\fR
.sp
package require \fBterm::ansi::code ?0\&.2?\fR
package require \fBterm::ansi::code ?0\&.1?\fR
.sp
package require \fBterm::ansi::code::ctrl ?0\&.2?\fR
package require \fBterm::ansi::code::ctrl ?0\&.1\&.1?\fR
.sp
\fB::term::ansi::code::ctrl::names\fR
.sp
\fB::term::ansi::code::ctrl::import\fR ?\fIns\fR? ?\fIarg\fR\&.\&.\&.?
.sp
\fB::term::ansi::code::ctrl::eeol\fR
.sp
|
︙ | | |
Changes to embedded/man/files/modules/term/ansi_code.n.
1
2
3
4
5
6
7
8
9
10
11
12
|
1
2
3
4
5
6
7
8
9
10
11
12
|
-
+
|
'\"
'\" Generated from file 'ansi_code\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2006 Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>
'\"
.TH "term::ansi::code" n 0\&.2 tcllib "Terminal control"
.TH "term::ansi::code" n 0\&.1 tcllib "Terminal control"
.\" 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,
|
︙ | | |
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
|
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
|
-
+
|
..
.BS
.SH NAME
term::ansi::code \- Helper for control sequences
.SH SYNOPSIS
package require \fBTcl 8\&.4\fR
.sp
package require \fBterm::ansi::code ?0\&.2?\fR
package require \fBterm::ansi::code ?0\&.1?\fR
.sp
\fB::term::ansi::code::esc\fR \fIstr\fR
.sp
\fB::term::ansi::code::escb\fR \fIstr\fR
.sp
\fB::term::ansi::code::define\fR \fIname\fR \fIescape\fR \fIcode\fR
.sp
|
︙ | | |
Changes to embedded/man/files/modules/term/ansi_send.n.
1
2
3
4
5
6
7
8
9
10
11
12
|
1
2
3
4
5
6
7
8
9
10
11
12
|
-
+
|
'\"
'\" Generated from file 'ansi_send\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2006 Andreas Kupries <andreas_kupries@users\&.sourceforge\&.net>
'\"
.TH "term::ansi::send" n 0\&.2 tcllib "Terminal control"
.TH "term::ansi::send" n 0\&.1 tcllib "Terminal control"
.\" 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,
|
︙ | | |
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
|
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
|
-
+
|
..
.BS
.SH NAME
term::ansi::send \- Output of ANSI control sequences to terminals
.SH SYNOPSIS
package require \fBTcl 8\&.4\fR
.sp
package require \fBterm::ansi::send ?0\&.2?\fR
package require \fBterm::ansi::send ?0\&.1?\fR
.sp
\fB::term::ansi::send::import\fR ?\fIns\fR? \fI\&.\&.\&.\fR
.sp
\fB::term::ansi::send::eeol\fR
.sp
\fB::term::ansi::send::esol\fR
.sp
|
︙ | | |
Changes to embedded/man/files/modules/textutil/textutil.n.
1
2
3
4
5
6
7
8
9
10
11
|
1
2
3
4
5
6
7
8
9
10
11
|
-
+
|
'\"
'\" Generated from file 'textutil\&.man' by tcllib/doctools with format 'nroff'
'\"
.TH "textutil" n 0\&.8 tcllib "Text and string utilities, macro processing"
.TH "textutil" n 0\&.7\&.1 tcllib "Text and string utilities, macro processing"
.\" 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,
|
︙ | | |
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
|
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
|
-
+
|
..
.BS
.SH NAME
textutil \- Procedures to manipulate texts and strings\&.
.SH SYNOPSIS
package require \fBTcl 8\&.2\fR
.sp
package require \fBtextutil ?0\&.8?\fR
package require \fBtextutil ?0\&.7\&.1?\fR
.sp
\fB::textutil::adjust\fR \fIstring args\fR
.sp
\fB::textutil::adjust::readPatterns\fR \fIfilename\fR
.sp
\fB::textutil::adjust::listPredefined\fR
.sp
|
︙ | | |
Changes to embedded/man/files/modules/textutil/textutil_string.n.
1
2
3
4
5
6
7
8
9
10
11
|
1
2
3
4
5
6
7
8
9
10
11
|
-
+
|
'\"
'\" Generated from file 'textutil_string\&.man' by tcllib/doctools with format 'nroff'
'\"
.TH "textutil::string" n 0\&.8 tcllib "Text and string utilities, macro processing"
.TH "textutil::string" n 0\&.7 tcllib "Text and string utilities, macro processing"
.\" 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,
|
︙ | | |
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
|
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
|
-
+
-
-
|
..
.BS
.SH NAME
textutil::string \- Procedures to manipulate texts and strings\&.
.SH SYNOPSIS
package require \fBTcl 8\&.2\fR
.sp
package require \fBtextutil::string ?0\&.8?\fR
package require \fBtextutil::string ?0\&.7?\fR
.sp
\fB::textutil::string::chop\fR \fIstring\fR
.sp
\fB::textutil::string::tail\fR \fIstring\fR
.sp
\fB::textutil::string::cap\fR \fIstring\fR
.sp
\fB::textutil::string::capEachWord\fR \fIstring\fR
.sp
\fB::textutil::string::uncap\fR \fIstring\fR
.sp
\fB::textutil::string::longestCommonPrefixList\fR \fIlist\fR
.sp
\fB::textutil::string::longestCommonPrefix\fR ?\fIstring\fR\&.\&.\&.?
.sp
.BE
|
︙ | | |
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
|
304
305
306
307
308
309
310
311
312
313
314
315
316
317
|
-
-
-
-
-
|
A convenience command\&. Removes the first character of \fIstring\fR and
returns the shortened string\&.
.TP
\fB::textutil::string::cap\fR \fIstring\fR
Capitalizes the first character of \fIstring\fR and returns the
modified string\&.
.TP
\fB::textutil::string::capEachWord\fR \fIstring\fR
Capitalizes the first character of word of the \fIstring\fR and
returns the modified string\&. Words quoted with either backslash or
dollar-sign are left untouched\&.
.TP
\fB::textutil::string::uncap\fR \fIstring\fR
The complementary operation to \fB::textutil::string::cap\fR\&. Forces
the first character of \fIstring\fR to lower case and returns the
modified string\&.
.TP
\fB::textutil::string::longestCommonPrefixList\fR \fIlist\fR
.TP
|
︙ | | |
Changes to embedded/man/files/modules/zip/decode.n.
1
2
3
4
5
6
7
8
9
10
11
12
|
1
2
3
4
5
6
7
8
9
10
11
12
|
-
+
-
+
|
'\"
'\" Generated from file 'decode\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2008-2014 Andreas Kupries
'\" Copyright (c) 2008-2012 Andreas Kupries
'\"
.TH "zipfile::decode" n 0\&.5 tcllib "Zip archive handling"
.TH "zipfile::encode" n 0\&.3 tcllib "Zip archive handling"
.\" 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,
|
︙ | | |
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
|
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
|
-
+
-
+
|
..
.\" # MT - "empty" string
.de MT
.QW ""
..
.BS
.SH NAME
zipfile::decode \- Access to zip archives
zipfile::encode \- Access to zip archives
.SH SYNOPSIS
package require \fBTcl 8\&.4\fR
.sp
package require \fBfileutil::magic::mimetype \fR
.sp
package require \fBfileutil::decode 0\&.2\fR
.sp
package require \fBTrf \fR
.sp
package require \fBzlibtcl \fR
.sp
package require \fBzipfile::decode ?0\&.5?\fR
package require \fBzipfile::decode ?0\&.4?\fR
.sp
\fB::zipfile::decode::archive\fR
.sp
\fB::zipfile::decode::close\fR
.sp
\fB::zipfile::decode::comment\fR \fIadict\fR
.sp
|
︙ | | |
392
393
394
395
396
397
398
399
400
401
|
392
393
394
395
396
397
398
399
400
401
|
-
+
|
package and/or documentation\&.
.SH KEYWORDS
decompression, zip
.SH CATEGORY
File
.SH COPYRIGHT
.nf
Copyright (c) 2008-2014 Andreas Kupries
Copyright (c) 2008-2012 Andreas Kupries
.fi
|
Changes to embedded/man/index.n.
︙ | | |
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
|
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
|
-
+
|
decompression
.RS
.TP
\fBfiles/modules/virtchannel_transform/tcllib_zlib\&.n\fR
tcl::transform::zlib
.TP
\fBfiles/modules/zip/decode\&.n\fR
zipfile::decode
zipfile::encode
.RE
decryption
.RS
.TP
\fBfiles/modules/virtchannel_transform/vt_otp\&.n\fR
tcl::transform::otp
.TP
|
︙ | | |
11284
11285
11286
11287
11288
11289
11290
11291
11292
11293
11294
11295
11296
11297
11298
11299
11300
11301
|
11284
11285
11286
11287
11288
11289
11290
11291
11292
11293
11294
11295
11296
11297
11298
11299
11300
11301
|
-
-
+
+
-
+
|
.TP
\fBfiles/modules/virtchannel_base/tcllib_zero\&.n\fR
tcl::chan::zero
.RE
zip
.RS
.TP
\fBfiles/modules/zip/decode\&.n\fR
zipfile::decode
\fBfiles/modules/zip/encode\&.n\fR
zipfile::encode
.TP
\fBfiles/modules/zip/encode\&.n\fR
\fBfiles/modules/zip/decode\&.n\fR
zipfile::encode
.RE
zlib
.RS
.TP
\fBfiles/modules/virtchannel_transform/tcllib_zlib\&.n\fR
tcl::transform::zlib
|
︙ | | |
Changes to embedded/man/toc.n.
︙ | | |
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
|
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
|
-
-
+
+
-
+
|
.TP
\fByaml\fR
\fIfiles/modules/yaml/yaml\&.n\fR: YAML Format Encoder/Decoder
.TP
\fByencode\fR
\fIfiles/modules/base64/yencode\&.n\fR: Y-encode/decode binary data
.TP
\fBzipfile::decode\fR
\fIfiles/modules/zip/decode\&.n\fR: Access to zip archives
\fBzipfile::encode\fR
\fIfiles/modules/zip/encode\&.n\fR: Generation of zip archives
.TP
\fBzipfile::encode\fR
\fIfiles/modules/zip/encode\&.n\fR: Generation of zip archives
\fIfiles/modules/zip/decode\&.n\fR: Access to zip archives
|
Changes to embedded/www/index.html.
︙ | | |
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
|
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
|
-
+
|
<td class="#idxleft" width="35%"><a name="key334"> declare </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/term/ansi_code.html"> term::ansi::code </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key43"> decompression </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_transform/tcllib_zlib.html"> tcl::transform::zlib </a> · <a href="tcllib/files/modules/zip/decode.html"> zipfile::decode </a>
<a href="tcllib/files/modules/virtchannel_transform/tcllib_zlib.html"> tcl::transform::zlib </a> · <a href="tcllib/files/modules/zip/decode.html"> zipfile::encode </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key370"> decryption </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_transform/vt_otp.html"> tcl::transform::otp </a> · <a href="tcllib/files/modules/virtchannel_transform/rot.html"> tcl::transform::rot </a>
</td></tr>
<tr class="#idxodd" valign=top>
|
︙ | | |
4225
4226
4227
4228
4229
4230
4231
4232
4233
4234
4235
4236
4237
4238
4239
4240
4241
4242
4243
4244
4245
|
4225
4226
4227
4228
4229
4230
4231
4232
4233
4234
4235
4236
4237
4238
4239
4240
4241
4242
4243
4244
4245
|
-
+
|
<td class="#idxleft" width="35%"><a name="key113"> zero </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_base/nullzero.html"> tcl::chan::nullzero </a> · <a href="tcllib/files/modules/virtchannel_base/tcllib_zero.html"> tcl::chan::zero </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key42"> zip </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/zip/decode.html"> zipfile::decode </a> · <a href="tcllib/files/modules/zip/encode.html"> zipfile::encode </a>
<a href="tcllib/files/modules/zip/decode.html"> zipfile::encode </a> · <a href="tcllib/files/modules/zip/encode.html"> zipfile::encode </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key541"> zlib </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/virtchannel_transform/tcllib_zlib.html"> tcl::transform::zlib </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key196"> zoom </a></td>
<td class="#idxright" width="65%">
<a href="tcllib/files/modules/map/map_slippy.html"> map::slippy </a> · <a href="tcllib/files/modules/map/map_slippy_cache.html"> map::slippy::cache </a> · <a href="tcllib/files/modules/map/map_slippy_fetcher.html"> map::slippy::fetcher </a>
</td></tr>
</table>
</body></html>
|
Changes to embedded/www/tcllib/files/modules/crc/sum.html.
1
2
3
4
5
6
7
8
|
1
2
3
4
5
6
7
|
-
|
<html><head>
<title>sum - Cyclic Redundancy Checks</title>
<style type="text/css"><!--
HTML {
background: #FFFFFF;
color: black;
}
|
︙ | | |
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
-
+
|
| <a href="../../../../toc.html">Main Table Of Contents</a>
| <a href="../../../toc.html">Table Of Contents</a>
| <a href="../../../../index.html">Keyword Index</a>
| <a href="../../../../toc0.html">Categories</a>
| <a href="../../../../toc1.html">Modules</a>
| <a href="../../../../toc2.html">Applications</a>
] <hr>
<h1 class="title">sum(n) 1.1.1 tcllib "Cyclic Redundancy Checks"</h1>
<h1 class="title">sum(n) 1.1.0 tcllib "Cyclic Redundancy Checks"</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>sum - Calculate a sum(1) compatible checksum</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
|
︙ | | |
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
|
-
+
|
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
<li>package require <b class="pkgname">Tcl 8.2</b></li>
<li>package require <b class="pkgname">sum <span class="opt">?1.1.1?</span></b></li>
<li>package require <b class="pkgname">sum <span class="opt">?1.1.0?</span></b></li>
</ul>
<ul class="syntax">
<li><a href="#1"><b class="cmd">::crc::sum</b> <span class="opt">?<i class="arg">-bsd</i> | <i class="arg">-sysv</i>?</span> <span class="opt">?<i class="arg">-format fmt</i>?</span> <span class="opt">?<i class="arg">-chunksize size</i>?</span> [ <i class="arg">-filename file</i> | <i class="arg">-channel chan</i> | <i class="arg">string</i> ]</a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
|
︙ | | |
Changes to embedded/www/tcllib/files/modules/debug/debug.html.
︙ | | |
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
|
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
|
-
+
|
<p>Debugging areas of interest are represented by 'tags' which have
independently settable levels of interest (an integer, higher is more
detailed).</p>
</div>
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">debug.<b class="variable">tag</b></b> <i class="arg">message</i> <span class="opt">?<i class="arg">level</i>?</span></a></dt>
<dd><p>For each known tag the package creates a command with this signature
<dd><p>For each known tag the package creates a command with this signatur
the user can then use to provide the debug narrative of the tag.
The narrative <i class="arg">message</i> is provided as a Tcl script whose value is
<b class="cmd"><a href="../../../../index.html#key269">subst</a></b>ed in the caller's scope if and only if the current level of
interest for the <i class="arg">tag</i> matches or exceeds the call's <i class="arg">level</i>
of detail. This is useful, as one can place arbitrarily complex
narrative in code without unnecessarily evaluating it.</p>
<p>See methods <b class="method">level</b> and <b class="method">setting</b> for querying
|
︙ | | |
Changes to embedded/www/tcllib/files/modules/dns/tcllib_ip.html.
1
2
3
4
5
6
7
8
|
1
2
3
4
5
6
7
|
-
|
<html><head>
<title>tcllib_ip - Domain Name Service</title>
<style type="text/css"><!--
HTML {
background: #FFFFFF;
color: black;
}
|
︙ | | |
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
-
+
|
| <a href="../../../../toc.html">Main Table Of Contents</a>
| <a href="../../../toc.html">Table Of Contents</a>
| <a href="../../../../index.html">Keyword Index</a>
| <a href="../../../../toc0.html">Categories</a>
| <a href="../../../../toc1.html">Modules</a>
| <a href="../../../../toc2.html">Applications</a>
] <hr>
<h1 class="title">tcllib_ip(n) 1.2.2 tcllib "Domain Name Service"</h1>
<h1 class="title">tcllib_ip(n) 1.2.1 tcllib "Domain Name Service"</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tcllib_ip - IPv4 and IPv6 address manipulation</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
|
︙ | | |
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
|
-
+
|
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
<li>package require <b class="pkgname">Tcl 8.2</b></li>
<li>package require <b class="pkgname">ip <span class="opt">?1.2.2?</span></b></li>
<li>package require <b class="pkgname">ip <span class="opt">?1.2.1?</span></b></li>
</ul>
<ul class="syntax">
<li><a href="#1"><b class="cmd">::ip::version</b> <i class="arg">address</i></a></li>
<li><a href="#2"><b class="cmd">::ip::is</b> <i class="arg">class</i> <i class="arg">address</i></a></li>
<li><a href="#3"><b class="cmd">::ip::equal</b> <i class="arg">address</i> <i class="arg">address</i></a></li>
<li><a href="#4"><b class="cmd">::ip::normalize</b> <i class="arg">address</i></a></li>
<li><a href="#5"><b class="cmd">::ip::contract</b> <i class="arg">address</i></a></li>
|
︙ | | |
Changes to embedded/www/tcllib/files/modules/doctools/doctools.html.
︙ | | |
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
-
+
-
+
|
margin-bottom: 1em;
border-bottom: 1px solid black;
}
--></style>
</head>
<! -- Generated from file 'doctools.man' by tcllib/doctools with format 'html'
-->
<! -- Copyright © 2003-2014 Andreas Kupries <[email protected]>
<! -- Copyright © 2003-2013 Andreas Kupries <[email protected]>
-->
<! -- CVS: $Id$ doctools.n
-->
<body><div class="doctools">
<hr> [
<a href="../../../../../../../../home">Tcllib Home</a>
| <a href="../../../../toc.html">Main Table Of Contents</a>
| <a href="../../../toc.html">Table Of Contents</a>
| <a href="../../../../index.html">Keyword Index</a>
| <a href="../../../../toc0.html">Categories</a>
| <a href="../../../../toc1.html">Modules</a>
| <a href="../../../../toc2.html">Applications</a>
] <hr>
<h1 class="title">doctools(n) 1.4.18 tcllib "Documentation tools"</h1>
<h1 class="title">doctools(n) 1.4.16 tcllib "Documentation tools"</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>doctools - doctools - Processing documents</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
|
︙ | | |
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
|
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
|
-
+
|
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
<li>package require <b class="pkgname">Tcl 8.2</b></li>
<li>package require <b class="pkgname">doctools <span class="opt">?1.4.18?</span></b></li>
<li>package require <b class="pkgname">doctools <span class="opt">?1.4.16?</span></b></li>
</ul>
<ul class="syntax">
<li><a href="#1"><b class="cmd">::doctools::new</b> <i class="arg">objectName</i> <span class="opt">?<i class="arg">option value</i>...?</span></a></li>
<li><a href="#2"><b class="cmd">::doctools::help</b></a></li>
<li><a href="#3"><b class="cmd">::doctools::search</b> <i class="arg">path</i></a></li>
<li><a href="#4"><b class="cmd">objectName</b> <b class="method">method</b> <span class="opt">?<i class="arg">arg arg ...</i>?</span></a></li>
<li><a href="#5"><i class="arg">objectName</i> <b class="method">configure</b></a></li>
|
︙ | | |
495
496
497
498
499
500
501
502
503
504
|
495
496
497
498
499
500
501
502
503
504
|
-
+
|
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key18">HTML</a>, <a href="../../../../index.html#key19">TMML</a>, <a href="../../../../index.html#key20">conversion</a>, <a href="../../../../index.html#key185">documentation</a>, <a href="../../../../index.html#key17">manpage</a>, <a href="../../../../index.html#key16">markup</a>, <a href="../../../../index.html#key21">nroff</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>Documentation tools</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright © 2003-2014 Andreas Kupries <[email protected]></p>
<p>Copyright © 2003-2013 Andreas Kupries <[email protected]></p>
</div>
</div></body></html>
|
Changes to embedded/www/tcllib/files/modules/dtplite/pkg_dtplite.html.
︙ | | |
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
-
+
|
| <a href="../../../../toc.html">Main Table Of Contents</a>
| <a href="../../../toc.html">Table Of Contents</a>
| <a href="../../../../index.html">Keyword Index</a>
| <a href="../../../../toc0.html">Categories</a>
| <a href="../../../../toc1.html">Modules</a>
| <a href="../../../../toc2.html">Applications</a>
] <hr>
<h1 class="title">dtplite(n) 1.2 tcllib "Documentation toolbox"</h1>
<h1 class="title">dtplite(n) 1.1 tcllib "Documentation toolbox"</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>dtplite - Lightweight DocTools Markup Processor</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
|
︙ | | |
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
130
131
132
133
134
135
136
137
138
139
140
141
142
143
|
-
-
-
|
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
<li>package require <b class="pkgname">dtplite <span class="opt">?1.2?</span></b></li>
</ul>
<ul class="syntax">
<li><a href="#1"><b class="cmd">dtplite</b> <b class="option">-o</b> <i class="arg">output</i> <span class="opt">?options?</span> <i class="arg">format</i> <i class="arg">inputfile</i></a></li>
<li><a href="#2"><b class="cmd">dtplite</b> <b class="const">validate</b> <i class="arg">inputfile</i></a></li>
<li><a href="#3"><b class="cmd">dtplite</b> <b class="option">-o</b> <i class="arg">output</i> <span class="opt">?options?</span> <i class="arg">format</i> <i class="arg">inputdirectory</i></a></li>
<li><a href="#4"><b class="cmd">dtplite</b> <b class="option">-merge</b> <b class="option">-o</b> <i class="arg">output</i> <span class="opt">?options?</span> <i class="arg">format</i> <i class="arg">inputdirectory</i></a></li>
</ul>
</div>
|
︙ | | |
Changes to embedded/www/tcllib/files/modules/ftp/ftp.html.
︙ | | |
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
-
+
-
+
|
| <a href="../../../../toc.html">Main Table Of Contents</a>
| <a href="../../../toc.html">Table Of Contents</a>
| <a href="../../../../index.html">Keyword Index</a>
| <a href="../../../../toc0.html">Categories</a>
| <a href="../../../../toc1.html">Modules</a>
| <a href="../../../../toc2.html">Applications</a>
] <hr>
<h1 class="title">ftp(n) 2.4.13 tcllib "ftp client"</h1>
<h1 class="title">ftp(n) 2.4.11 tcllib "ftp client"</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>ftp - Client-side tcl implementation of the ftp protocol</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">BUGS</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
<li>package require <b class="pkgname">Tcl 8.2</b></li>
<li>package require <b class="pkgname">ftp <span class="opt">?2.4.13?</span></b></li>
<li>package require <b class="pkgname">ftp <span class="opt">?2.4.11?</span></b></li>
</ul>
<ul class="syntax">
<li><a href="#1"><b class="cmd">::ftp::Open</b> <i class="arg">server</i> <i class="arg">user</i> <i class="arg">passwd</i> <span class="opt">?<i class="arg">options</i>?</span></a></li>
<li><a href="#2"><b class="cmd">::ftp::Close</b> <i class="arg">handle</i></a></li>
<li><a href="#3"><b class="cmd">::ftp::Cd</b> <i class="arg">handle</i> <i class="arg">directory</i></a></li>
<li><a href="#4"><b class="cmd">::ftp::Pwd</b> <i class="arg">handle</i></a></li>
<li><a href="#5"><b class="cmd">::ftp::Type</b> <i class="arg">handle</i> <span class="opt">?<b class="const">ascii|binary|tenex</b>?</span></a></li>
|
︙ | | |
Changes to embedded/www/tcllib/files/modules/html/html.html.
︙ | | |
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
-
+
-
+
|
| <a href="../../../../toc.html">Main Table Of Contents</a>
| <a href="../../../toc.html">Table Of Contents</a>
| <a href="../../../../index.html">Keyword Index</a>
| <a href="../../../../toc0.html">Categories</a>
| <a href="../../../../toc1.html">Modules</a>
| <a href="../../../../toc2.html">Applications</a>
] <hr>
<h1 class="title">html(n) 1.4.3 tcllib "HTML Generation"</h1>
<h1 class="title">html(n) 1.4 tcllib "HTML Generation"</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>html - Procedures to generate HTML structures</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
<li>package require <b class="pkgname">Tcl 8.2</b></li>
<li>package require <b class="pkgname">html <span class="opt">?1.4.3?</span></b></li>
<li>package require <b class="pkgname">html <span class="opt">?1.4?</span></b></li>
</ul>
<ul class="syntax">
<li><a href="#1"><b class="cmd">::html::author</b> <i class="arg">author</i></a></li>
<li><a href="#2"><b class="cmd">::html::bodyTag</b> <i class="arg">args</i></a></li>
<li><a href="#3"><b class="cmd">::html::cell</b> <i class="arg">param value</i> <span class="opt">?<i class="arg">tag</i>?</span></a></li>
<li><a href="#4"><b class="cmd">::html::checkbox</b> <i class="arg">name value</i></a></li>
<li><a href="#5"><b class="cmd">::html::checkSet</b> <i class="arg">key sep list</i></a></li>
|
︙ | | |
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
|
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
|
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
|
<li><a href="#28"><b class="cmd">::html::headTag</b> <i class="arg">string</i></a></li>
<li><a href="#29"><b class="cmd">::html::html_entities</b> <i class="arg">string</i></a></li>
<li><a href="#30"><b class="cmd">::html::if</b> <i class="arg">expr1 body1</i> <span class="opt">?<b class="const">elseif</b> <i class="arg">expr2 body2 ...</i>?</span> <span class="opt">?<b class="const">else</b> <i class="arg">bodyN</i>?</span></a></li>
<li><a href="#31"><b class="cmd">::html::init</b> <span class="opt">?<i class="arg">list</i>?</span></a></li>
<li><a href="#32"><b class="cmd">::html::keywords</b> <i class="arg">args</i></a></li>
<li><a href="#33"><b class="cmd">::html::mailto</b> <i class="arg">email</i> <span class="opt">?<i class="arg">subject</i>?</span></a></li>
<li><a href="#34"><b class="cmd">::html::meta</b> <i class="arg">args</i></a></li>
<li><a href="#35"><b class="cmd">::html::css</b> <i class="arg">href</i></a></li>
<li><a href="#36"><b class="cmd">::html::css-clear</b></a></li>
<li><a href="#37"><b class="cmd">::html::js</b> <i class="arg">href</i></a></li>
<li><a href="#38"><b class="cmd">::html::js-clear</b></a></li>
<li><a href="#39"><b class="cmd">::html::minorList</b> <i class="arg">list</i> <span class="opt">?<i class="arg">ordered</i>?</span></a></li>
<li><a href="#40"><b class="cmd">::html::minorMenu</b> <i class="arg">list</i> <span class="opt">?<i class="arg">sep</i>?</span></a></li>
<li><a href="#41"><b class="cmd">::html::nl2br</b> <i class="arg">string</i></a></li>
<li><a href="#42"><b class="cmd">::html::openTag</b> <i class="arg">tag</i> <span class="opt">?<i class="arg">param</i>?</span></a></li>
<li><a href="#43"><b class="cmd">::html::paramRow</b> <i class="arg">list</i> <span class="opt">?<i class="arg">rparam</i>?</span> <span class="opt">?<i class="arg">cparam</i>?</span></a></li>
<li><a href="#44"><b class="cmd">::html::passwordInput</b> <span class="opt">?<i class="arg">name</i>?</span></a></li>
<li><a href="#45"><b class="cmd">::html::passwordInputRow</b> <i class="arg">label</i> <span class="opt">?<i class="arg">name</i>?</span></a></li>
<li><a href="#46"><b class="cmd">::html::quoteFormValue</b> <i class="arg">value</i></a></li>
<li><a href="#47"><b class="cmd">::html::radioSet</b> <i class="arg">key sep list</i></a></li>
<li><a href="#48"><b class="cmd">::html::radioValue</b> <i class="arg">name value</i></a></li>
<li><a href="#49"><b class="cmd">::html::refresh</b> <i class="arg">seconds url</i></a></li>
<li><a href="#50"><b class="cmd">::html::row</b> <i class="arg">args</i></a></li>
<li><a href="#51"><b class="cmd">::html::select</b> <i class="arg">name param choices</i> <span class="opt">?<i class="arg">current</i>?</span></a></li>
<li><a href="#52"><b class="cmd">::html::selectPlain</b> <i class="arg">name param choices</i> <span class="opt">?<i class="arg">current</i>?</span></a></li>
<li><a href="#53"><b class="cmd">::html::set</b> <i class="arg">var val</i></a></li>
<li><a href="#54"><b class="cmd">::html::submit</b> <i class="arg">label</i> <span class="opt">?<i class="arg">name</i>?</span></a></li>
<li><a href="#55"><b class="cmd">::html::tableFromArray</b> <i class="arg">arrname</i> <span class="opt">?<i class="arg">param</i>?</span> <span class="opt">?<i class="arg">pat</i>?</span></a></li>
<li><a href="#56"><b class="cmd">::html::tableFromList</b> <i class="arg">querylist</i> <span class="opt">?<i class="arg">param</i>?</span></a></li>
<li><a href="#57"><b class="cmd">::html::textarea</b> <i class="arg">name</i> <span class="opt">?<i class="arg">param</i>?</span> <span class="opt">?<i class="arg">current</i>?</span></a></li>
<li><a href="#58"><b class="cmd">::html::textInput</b> <i class="arg">name value args</i></a></li>
<li><a href="#59"><b class="cmd">::html::textInputRow</b> <i class="arg">label name value args</i></a></li>
<li><a href="#60"><b class="cmd">::html::varEmpty</b> <i class="arg">name</i></a></li>
<li><a href="#61"><b class="cmd">::html::while</b> <i class="arg">test body</i></a></li>
<li><a href="#35"><b class="cmd">::html::minorList</b> <i class="arg">list</i> <span class="opt">?<i class="arg">ordered</i>?</span></a></li>
<li><a href="#36"><b class="cmd">::html::minorMenu</b> <i class="arg">list</i> <span class="opt">?<i class="arg">sep</i>?</span></a></li>
<li><a href="#37"><b class="cmd">::html::nl2br</b> <i class="arg">string</i></a></li>
<li><a href="#38"><b class="cmd">::html::openTag</b> <i class="arg">tag</i> <span class="opt">?<i class="arg">param</i>?</span></a></li>
<li><a href="#39"><b class="cmd">::html::paramRow</b> <i class="arg">list</i> <span class="opt">?<i class="arg">rparam</i>?</span> <span class="opt">?<i class="arg">cparam</i>?</span></a></li>
<li><a href="#40"><b class="cmd">::html::passwordInput</b> <span class="opt">?<i class="arg">name</i>?</span></a></li>
<li><a href="#41"><b class="cmd">::html::passwordInputRow</b> <i class="arg">label</i> <span class="opt">?<i class="arg">name</i>?</span></a></li>
<li><a href="#42"><b class="cmd">::html::quoteFormValue</b> <i class="arg">value</i></a></li>
<li><a href="#43"><b class="cmd">::html::radioSet</b> <i class="arg">key sep list</i></a></li>
<li><a href="#44"><b class="cmd">::html::radioValue</b> <i class="arg">name value</i></a></li>
<li><a href="#45"><b class="cmd">::html::refresh</b> <i class="arg">seconds url</i></a></li>
<li><a href="#46"><b class="cmd">::html::row</b> <i class="arg">args</i></a></li>
<li><a href="#47"><b class="cmd">::html::select</b> <i class="arg">name param choices</i> <span class="opt">?<i class="arg">current</i>?</span></a></li>
<li><a href="#48"><b class="cmd">::html::selectPlain</b> <i class="arg">name param choices</i> <span class="opt">?<i class="arg">current</i>?</span></a></li>
<li><a href="#49"><b class="cmd">::html::set</b> <i class="arg">var val</i></a></li>
<li><a href="#50"><b class="cmd">::html::submit</b> <i class="arg">label</i> <span class="opt">?<i class="arg">name</i>?</span></a></li>
<li><a href="#51"><b class="cmd">::html::tableFromArray</b> <i class="arg">arrname</i> <span class="opt">?<i class="arg">param</i>?</span> <span class="opt">?<i class="arg">pat</i>?</span></a></li>
<li><a href="#52"><b class="cmd">::html::tableFromList</b> <i class="arg">querylist</i> <span class="opt">?<i class="arg">param</i>?</span></a></li>
<li><a href="#53"><b class="cmd">::html::textarea</b> <i class="arg">name</i> <span class="opt">?<i class="arg">param</i>?</span> <span class="opt">?<i class="arg">current</i>?</span></a></li>
<li><a href="#54"><b class="cmd">::html::textInput</b> <i class="arg">name value args</i></a></li>
<li><a href="#55"><b class="cmd">::html::textInputRow</b> <i class="arg">label name value args</i></a></li>
<li><a href="#56"><b class="cmd">::html::varEmpty</b> <i class="arg">name</i></a></li>
<li><a href="#57"><b class="cmd">::html::while</b> <i class="arg">test body</i></a></li>
<li><a href="#62"><b class="cmd">::html::doctype</b> <i class="arg">id</i></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>The package <b class="package">html</b> provides commands that generate HTML.
These commands typically return an HTML string as their result. In
particular, they do not output their result to <b class="const">stdout</b>.</p>
|
︙ | | |
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
|
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
|
-
+
|
<dt><a name="5"><b class="cmd">::html::checkSet</b> <i class="arg">key sep list</i></a></dt>
<dd><p>Generate a set of <i class="term"><a href="../../../../index.html#key614">checkbox</a></i> form elements and associated labels. The
<i class="arg">list</i> should contain an alternating list of labels and values.
This uses <b class="cmd">::html::checkbox</b>. All the <i class="term"><a href="../../../../index.html#key614">checkbox</a></i> buttons share the
same <i class="arg">key</i> for their name. The <i class="arg">sep</i> is text used to separate
the elements.</p></dd>
<dt><a name="6"><b class="cmd">::html::checkValue</b> <i class="arg">name</i> <span class="opt">?<i class="arg">value</i>?</span></a></dt>
<dd><p>Generate the "name=<i class="arg">name</i> value=<i class="arg">value</i>" for a <i class="term"><a href="../../../../index.html#key614">checkbox</a></i> form
<dd><p>Generate the "name=<i class="arg">name</i> value=<i class="arg">value</i> for a <i class="term"><a href="../../../../index.html#key614">checkbox</a></i> form
element. If the CGI variable <i class="arg">name</i> has the value <i class="arg">value</i>,
then SELECTED is added to the return value. <i class="arg">value</i> defaults to
"1".</p></dd>
<dt><a name="7"><b class="cmd">::html::closeTag</b></a></dt>
<dd><p>Pop a tag off the stack created by <b class="cmd">::html::openTag</b> and generate
the corresponding close tag (e.g., </body>).</p></dd>
<dt><a name="8"><b class="cmd">::html::default</b> <i class="arg">key</i> <span class="opt">?<i class="arg">param</i>?</span></a></dt>
|
︙ | | |
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
|
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
|
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
|
<dd><p>Generate a hypertext link to a mailto: URL.</p></dd>
<dt><a name="34"><b class="cmd">::html::meta</b> <i class="arg">args</i></a></dt>
<dd><p><em>Side effect only</em>. Call this before <b class="cmd">::html::head</b> to
define a <i class="term">meta</i> tag for the page. The <i class="arg">args</i> is a Tcl-style name,
value list that is used for the name= and value= parameters for the
<i class="term">meta</i> tag. The <i class="term">meta</i> tag is included in the result of
<b class="cmd">::html::head</b>.</p></dd>
<dt><a name="35"><b class="cmd">::html::css</b> <i class="arg">href</i></a></dt>
<dd><p><em>Side effect only</em>. Call this before <b class="cmd">::html::head</b> to
define a <i class="term">link</i> tag for a linked CSS document. The <i class="arg">href</i>
value is a HTTP URL to a CSS document. The <i class="term">link</i> tag is included
in the result of <b class="cmd">::html::head</b>.</p>
<p>Multiple calls of this command are allowed, enabling the use of
multiple CSS document references. In other words, the arguments
of multiple calls are accumulated, and do not overwrite each other.</p></dd>
<dt><a name="36"><b class="cmd">::html::css-clear</b></a></dt>
<dd><p><em>Side effect only</em>. Call this before <b class="cmd">::html::head</b> to
clear all links to CSS documents.</p>
<p>Multiple calls of this command are allowed, doing nothing after the
first of a sequence with no intervening <b class="cmd">::html::css</b>.</p></dd>
<dt><a name="37"><b class="cmd">::html::js</b> <i class="arg">href</i></a></dt>
<dd><p><em>Side effect only</em>. Call this before <b class="cmd">::html::head</b> to
define a <i class="term">script</i> tag for a linked JavaScript document. The
<i class="arg">href</i> is a HTTP URL to a JavaScript document. The <i class="term">script</i>
tag is included in the result of <b class="cmd">::html::head</b>.</p>
<p>Multiple calls of this command are allowed, enabling the use of
multiple JavaScript document references. In other words, the arguments
of multiple calls are accumulated, and do not overwrite each other.</p></dd>
<dt><a name="38"><b class="cmd">::html::js-clear</b></a></dt>
<dd><p><em>Side effect only</em>. Call this before <b class="cmd">::html::head</b> to
clear all links to JavaScript documents.</p>
<p>Multiple calls of this command are allowed, doing nothing after the
first of a sequence with no intervening <b class="cmd">::html::js</b>.</p></dd>
<dt><a name="39"><b class="cmd">::html::minorList</b> <i class="arg">list</i> <span class="opt">?<i class="arg">ordered</i>?</span></a></dt>
<dt><a name="35"><b class="cmd">::html::minorList</b> <i class="arg">list</i> <span class="opt">?<i class="arg">ordered</i>?</span></a></dt>
<dd><p>Generate an ordered or unordered list of links. The <i class="arg">list</i> is a
Tcl-style name, value list of labels and urls for the links.
<i class="arg">ordered</i> is a boolean used to choose between an ordered or
unordered list. It defaults to <b class="const">false</b>.</p></dd>
<dt><a name="40"><b class="cmd">::html::minorMenu</b> <i class="arg">list</i> <span class="opt">?<i class="arg">sep</i>?</span></a></dt>
<dt><a name="36"><b class="cmd">::html::minorMenu</b> <i class="arg">list</i> <span class="opt">?<i class="arg">sep</i>?</span></a></dt>
<dd><p>Generate a series of hypertext links. The <i class="arg">list</i> is a Tcl-style
name, value list of labels and urls for the links. The <i class="arg">sep</i> is
the text to put between each link. It defaults to " | ".</p></dd>
<dt><a name="41"><b class="cmd">::html::nl2br</b> <i class="arg">string</i></a></dt>
<dt><a name="37"><b class="cmd">::html::nl2br</b> <i class="arg">string</i></a></dt>
<dd><p>This command replaces all line-endings in the <i class="arg">string</i> with a
<i class="term">br</i> tag and returns the modified text.</p></dd>
<dt><a name="42"><b class="cmd">::html::openTag</b> <i class="arg">tag</i> <span class="opt">?<i class="arg">param</i>?</span></a></dt>
<dt><a name="38"><b class="cmd">::html::openTag</b> <i class="arg">tag</i> <span class="opt">?<i class="arg">param</i>?</span></a></dt>
<dd><p>Push <i class="arg">tag</i> onto a stack and generate the opening tag for
<i class="arg">tag</i>. Use <b class="cmd">::html::closeTag</b> to pop the tag from the
stack. The second argument provides any tag arguments, as a
list whose elements are formatted to be in the form
"<b class="variable">key</b>=<b class="const">value</b>".</p></dd>
<dt><a name="43"><b class="cmd">::html::paramRow</b> <i class="arg">list</i> <span class="opt">?<i class="arg">rparam</i>?</span> <span class="opt">?<i class="arg">cparam</i>?</span></a></dt>
<dt><a name="39"><b class="cmd">::html::paramRow</b> <i class="arg">list</i> <span class="opt">?<i class="arg">rparam</i>?</span> <span class="opt">?<i class="arg">cparam</i>?</span></a></dt>
<dd><p>Generate a table row, including <i class="term">tr</i> and <i class="term">td</i> tags. Each value in
<i class="arg">list</i> is placed into its own table cell. This uses
<b class="cmd">::html::cell</b>. The value of <i class="arg">rparam</i> is used as parameter for
the <i class="term">tr</i> tag. The value of <i class="arg">cparam</i> is passed to <b class="cmd">::html::cell</b>
as parameter for the <i class="term">td</i> tags.</p></dd>
<dt><a name="44"><b class="cmd">::html::passwordInput</b> <span class="opt">?<i class="arg">name</i>?</span></a></dt>
<dt><a name="40"><b class="cmd">::html::passwordInput</b> <span class="opt">?<i class="arg">name</i>?</span></a></dt>
<dd><p>Generate an <i class="term">input</i> tag of type <i class="term"><a href="../../../../index.html#key685">password</a></i>. The <i class="arg">name</i> defaults to
"password".</p></dd>
<dt><a name="45"><b class="cmd">::html::passwordInputRow</b> <i class="arg">label</i> <span class="opt">?<i class="arg">name</i>?</span></a></dt>
<dt><a name="41"><b class="cmd">::html::passwordInputRow</b> <i class="arg">label</i> <span class="opt">?<i class="arg">name</i>?</span></a></dt>
<dd><p>Format a table row containing a label and an <i class="term">input</i> tag of type
<i class="term"><a href="../../../../index.html#key685">password</a></i>. The <i class="arg">name</i> defaults to "password".</p></dd>
<dt><a name="46"><b class="cmd">::html::quoteFormValue</b> <i class="arg">value</i></a></dt>
<dt><a name="42"><b class="cmd">::html::quoteFormValue</b> <i class="arg">value</i></a></dt>
<dd><p>Quote special characters in <i class="arg">value</i> by replacing them with HTML
entities for quotes, ampersand, and angle brackets.</p></dd>
<dt><a name="47"><b class="cmd">::html::radioSet</b> <i class="arg">key sep list</i></a></dt>
<dt><a name="43"><b class="cmd">::html::radioSet</b> <i class="arg">key sep list</i></a></dt>
<dd><p>Generate a set of <i class="term">input</i> tags of type <i class="term">radio</i> and an associated text
label. All the radio buttons share the same <i class="arg">key</i> for their name.
The <i class="arg">sep</i> is text used to separate the elements. The <i class="arg">list</i>
is a Tcl-style label, value list.</p></dd>
<dt><a name="48"><b class="cmd">::html::radioValue</b> <i class="arg">name value</i></a></dt>
<dd><p>Generate the "name=<i class="arg">name</i> value=<i class="arg">value</i>" for a <i class="term">radio</i> form
<dt><a name="44"><b class="cmd">::html::radioValue</b> <i class="arg">name value</i></a></dt>
<dd><p>Generate the "name=<i class="arg">name</i> value=<i class="arg">value</i> for a <i class="term">radio</i> form
element. If the CGI variable <i class="arg">name</i> has the value <i class="arg">value</i>,
then SELECTED is added to the return value.</p></dd>
<dt><a name="49"><b class="cmd">::html::refresh</b> <i class="arg">seconds url</i></a></dt>
<dt><a name="45"><b class="cmd">::html::refresh</b> <i class="arg">seconds url</i></a></dt>
<dd><p>Set up a refresh <i class="term">meta</i> tag. Call this before <b class="cmd">::html::head</b> and the
HEAD section will contain a <i class="term">meta</i> tag that causes the document to
refresh in <i class="arg">seconds</i> seconds. The <i class="arg">url</i> is optional. If
specified, it specifies a new page to load after the refresh interval.</p></dd>
<dt><a name="50"><b class="cmd">::html::row</b> <i class="arg">args</i></a></dt>
<dt><a name="46"><b class="cmd">::html::row</b> <i class="arg">args</i></a></dt>
<dd><p>Generate a table row, including <i class="term">tr</i> and <i class="term">td</i> tags. Each value in
<i class="arg">args</i> is place into its own table cell. This uses
<b class="cmd">::html::cell</b>. Ignores any default information set up via
<b class="cmd">::html::init</b>.</p></dd>
<dt><a name="51"><b class="cmd">::html::select</b> <i class="arg">name param choices</i> <span class="opt">?<i class="arg">current</i>?</span></a></dt>
<dt><a name="47"><b class="cmd">::html::select</b> <i class="arg">name param choices</i> <span class="opt">?<i class="arg">current</i>?</span></a></dt>
<dd><p>Generate a <i class="term">select</i> form element and nested <i class="term">option</i> tags. The <i class="arg">name</i>
and <i class="arg">param</i> are used to generate the <i class="term">select</i> tag. The <i class="arg">choices</i>
list is a Tcl-style name, value list.</p></dd>
<dt><a name="52"><b class="cmd">::html::selectPlain</b> <i class="arg">name param choices</i> <span class="opt">?<i class="arg">current</i>?</span></a></dt>
<dt><a name="48"><b class="cmd">::html::selectPlain</b> <i class="arg">name param choices</i> <span class="opt">?<i class="arg">current</i>?</span></a></dt>
<dd><p>Like <b class="cmd">::html::select</b> except that <i class="arg">choices</i> is a Tcl list of
values used for the <i class="term">option</i> tags. The label and the value for each
<i class="term">option</i> are the same.</p></dd>
<dt><a name="53"><b class="cmd">::html::set</b> <i class="arg">var val</i></a></dt>
<dt><a name="49"><b class="cmd">::html::set</b> <i class="arg">var val</i></a></dt>
<dd><p>This procedure is similar to the built-in Tcl <b class="cmd"><a href="../../../../index.html#key297">set</a></b> command. The
main difference is that it returns "" so it can be called from an HTML
template file without appending unwanted results. The other
difference is that it must take two arguments.</p></dd>
<dt><a name="54"><b class="cmd">::html::submit</b> <i class="arg">label</i> <span class="opt">?<i class="arg">name</i>?</span></a></dt>
<dt><a name="50"><b class="cmd">::html::submit</b> <i class="arg">label</i> <span class="opt">?<i class="arg">name</i>?</span></a></dt>
<dd><p>Generate an <i class="term">input</i> tag of type <i class="term">submit</i>. <i class="arg">name</i> defaults to "submit".</p></dd>
<dt><a name="55"><b class="cmd">::html::tableFromArray</b> <i class="arg">arrname</i> <span class="opt">?<i class="arg">param</i>?</span> <span class="opt">?<i class="arg">pat</i>?</span></a></dt>
<dt><a name="51"><b class="cmd">::html::tableFromArray</b> <i class="arg">arrname</i> <span class="opt">?<i class="arg">param</i>?</span> <span class="opt">?<i class="arg">pat</i>?</span></a></dt>
<dd><p>Generate a two-column <i class="term"><a href="../../../../index.html#key106">table</a></i> and nested rows to display a Tcl array. The
table gets a heading that matches the array name, and each generated row
contains a name, value pair. The array names are sorted (<b class="cmd">lsort</b> without
special options). The argument <i class="arg">param</i> is for the <i class="term"><a href="../../../../index.html#key106">table</a></i> tag and has
to contain a pre-formatted string. The <i class="arg">pat</i> is a <b class="cmd">string match</b>
pattern used to select the array elements to show in the table. It defaults to
<b class="const">*</b>, i.e. the whole array is shown.</p></dd>
<dt><a name="56"><b class="cmd">::html::tableFromList</b> <i class="arg">querylist</i> <span class="opt">?<i class="arg">param</i>?</span></a></dt>
<dt><a name="52"><b class="cmd">::html::tableFromList</b> <i class="arg">querylist</i> <span class="opt">?<i class="arg">param</i>?</span></a></dt>
<dd><p>Generate a two-column <i class="term"><a href="../../../../index.html#key106">table</a></i> and nested rows to display <i class="arg">querylist</i>,
which is a Tcl dictionary. Each generated row contains a name, value pair. The
information is shown in the same order as specified in the dictionary. The
argument <i class="arg">param</i> is for the <i class="term"><a href="../../../../index.html#key106">table</a></i> tag and has to contain a
pre-formatted string.</p></dd>
<dt><a name="57"><b class="cmd">::html::textarea</b> <i class="arg">name</i> <span class="opt">?<i class="arg">param</i>?</span> <span class="opt">?<i class="arg">current</i>?</span></a></dt>
<dt><a name="53"><b class="cmd">::html::textarea</b> <i class="arg">name</i> <span class="opt">?<i class="arg">param</i>?</span> <span class="opt">?<i class="arg">current</i>?</span></a></dt>
<dd><p>Generate a <i class="term">textarea</i> tag wrapped around its current values.</p></dd>
<dt><a name="58"><b class="cmd">::html::textInput</b> <i class="arg">name value args</i></a></dt>
<dt><a name="54"><b class="cmd">::html::textInput</b> <i class="arg">name value args</i></a></dt>
<dd><p>Generate an <i class="term">input</i> form tag with type <i class="term"><a href="../../../../index.html#key246">text</a></i>. This uses
<b class="cmd">::html::formValue</b>. The args is any additional tag attributes
you want to put into the <i class="term">input</i> tag.</p></dd>
<dt><a name="59"><b class="cmd">::html::textInputRow</b> <i class="arg">label name value args</i></a></dt>
<dt><a name="55"><b class="cmd">::html::textInputRow</b> <i class="arg">label name value args</i></a></dt>
<dd><p>Generate an <i class="term">input</i> form tag with type <i class="term"><a href="../../../../index.html#key246">text</a></i> formatted into a table row
with an associated label. The args is any additional tag attributes
you want to put into the <i class="term">input</i> tag.</p></dd>
<dt><a name="60"><b class="cmd">::html::varEmpty</b> <i class="arg">name</i></a></dt>
<dt><a name="56"><b class="cmd">::html::varEmpty</b> <i class="arg">name</i></a></dt>
<dd><p>This returns 1 if the named variable either does not exist or has the
empty string for its value.</p></dd>
<dt><a name="61"><b class="cmd">::html::while</b> <i class="arg">test body</i></a></dt>
<dt><a name="57"><b class="cmd">::html::while</b> <i class="arg">test body</i></a></dt>
<dd><p>This procedure is similar to the built-in Tcl <b class="cmd">while</b> control
structure. Rather than evaluating the body, it returns the subst'ed
<i class="arg">body</i>. Each iteration of the loop causes another string to be
concatenated to the result value.</p></dd>
<dt><a name="62"><b class="cmd">::html::doctype</b> <i class="arg">id</i></a></dt>
<dd><p>This procedure can be used to build the standard DOCTYPE
declaration string. It will return the standard declaration
string for the id, or throw an error if the id is not known.
The following id's are defined:</p>
<ol class="enumerated">
<li><p>HTML32</p></li>
<li><p>HTML40</p></li>
<li><p>HTML40T</p></li>
<li><p>HTML40F</p></li>
<li><p>HTML401</p></li>
<li><p>HTML401T</p></li>
<li><p>HTML401F</p></li>
<li><p>XHTML10S</p></li>
<li><p>XHTML10T</p></li>
<li><p>XHTML10F</p></li>
<li><p>XHTML11</p></li>
<li><p>XHTMLB</p></li>
</ol></dd>
</dl>
</div>
<div id="section2" class="section"><h2><a name="section2">Bugs, Ideas, Feedback</a></h2>
<p>This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category <em>html</em> of the
<a href="http://core.tcl.tk/tcllib/reportlist">Tcllib Trackers</a>.
|
︙ | | |
Changes to embedded/www/tcllib/files/modules/json/json_write.html.
︙ | | |
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
-
+
-
+
|
| <a href="../../../../toc.html">Main Table Of Contents</a>
| <a href="../../../toc.html">Table Of Contents</a>
| <a href="../../../../index.html">Keyword Index</a>
| <a href="../../../../toc0.html">Categories</a>
| <a href="../../../../toc1.html">Modules</a>
| <a href="../../../../toc2.html">Applications</a>
] <hr>
<h1 class="title">json::write(n) 1.0.3 tcllib "JSON"</h1>
<h1 class="title">json::write(n) 1.0.2 tcllib "JSON"</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>json::write - JSON generation</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">COMMANDS</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
<li>package require <b class="pkgname">Tcl 8.5</b></li>
<li>package require <b class="pkgname">json::write <span class="opt">?1.0.3?</span></b></li>
<li>package require <b class="pkgname">json::write <span class="opt">?1.0.2?</span></b></li>
</ul>
<ul class="syntax">
<li><a href="#1"><b class="cmd">::json::write</b> <b class="method">indented</b></a></li>
<li><a href="#2"><b class="cmd">::json::write</b> <b class="method">indented</b> <i class="arg">flag</i></a></li>
<li><a href="#3"><b class="cmd">::json::write</b> <b class="method">aligned</b></a></li>
<li><a href="#4"><b class="cmd">::json::write</b> <b class="method">aligned</b> <i class="arg">flag</i></a></li>
<li><a href="#5"><b class="cmd">::json::write</b> <b class="method">string</b> <i class="arg">s</i></a></li>
|
︙ | | |
Changes to embedded/www/tcllib/files/modules/math/math_geometry.html.
︙ | | |
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
|
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
|
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
|
| <a href="../../../../toc.html">Main Table Of Contents</a>
| <a href="../../../toc.html">Table Of Contents</a>
| <a href="../../../../index.html">Keyword Index</a>
| <a href="../../../../toc0.html">Categories</a>
| <a href="../../../../toc1.html">Modules</a>
| <a href="../../../../toc2.html">Applications</a>
] <hr>
<h1 class="title">math::geometry(n) 1.1.3 tcllib "Tcl Math Library"</h1>
<h1 class="title">math::geometry(n) 1.1.2 tcllib "Tcl Math Library"</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>math::geometry - Geometrical computations</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">PROCEDURES</a></li>
<li class="section"><a href="#section3">References</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
<li>package require <b class="pkgname">Tcl <span class="opt">?8.3?</span></b></li>
<li>package require <b class="pkgname">math::geometry <span class="opt">?1.1.3?</span></b></li>
<li>package require <b class="pkgname">math::geometry <span class="opt">?1.1.2?</span></b></li>
</ul>
<ul class="syntax">
<li><a href="#1"><b class="cmd">::math::geometry::+</b> <i class="arg">point1</i> <i class="arg">point2</i></a></li>
<li><a href="#2"><b class="cmd">::math::geometry::-</b> <i class="arg">point1</i> <i class="arg">point2</i></a></li>
<li><a href="#3"><b class="cmd">::math::geometry::p</b> <i class="arg">x</i> <i class="arg">y</i></a></li>
<li><a href="#4"><b class="cmd">::math::geometry::distance</b> <i class="arg">point1</i> <i class="arg">point2</i></a></li>
<li><a href="#5"><b class="cmd">::math::geometry::length</b> <i class="arg">point</i></a></li>
<li><a href="#6"><b class="cmd">::math::geometry::s*</b> <i class="arg">factor</i> <i class="arg">point</i></a></li>
<li><a href="#7"><b class="cmd">::math::geometry::direction</b> <i class="arg">angle</i></a></li>
<li><a href="#8"><b class="cmd">::math::geometry::h</b> <i class="arg">length</i></a></li>
<li><a href="#9"><b class="cmd">::math::geometry::v</b> <i class="arg">length</i></a></li>
<li><a href="#10"><b class="cmd">::math::geometry::between</b> <i class="arg">point1</i> <i class="arg">point2</i> <i class="arg">s</i></a></li>
<li><a href="#11"><b class="cmd">::math::geometry::octant</b> <i class="arg">point</i></a></li>
<li><a href="#12"><b class="cmd">::math::geometry::rect</b> <i class="arg">nw</i> <i class="arg">se</i></a></li>
<li><a href="#13"><b class="cmd">::math::geometry::nwse</b> <i class="arg">rect</i></a></li>
<li><a href="#14"><b class="cmd">::math::geometry::angle</b> <i class="arg">line</i></a></li>
<li><a href="#15"><b class="cmd">::math::geometry::calculateDistanceToLine</b> <i class="arg">P</i> <i class="arg">line</i></a></li>
<li><a href="#16"><b class="cmd">::math::geometry::calculateDistanceToLineSegment</b> <i class="arg">P</i> <i class="arg">linesegment</i></a></li>
<li><a href="#17"><b class="cmd">::math::geometry::calculateDistanceToPolyline</b> <i class="arg">P</i> <i class="arg">polyline</i></a></li>
<li><a href="#18"><b class="cmd">::math::geometry::calculateDistanceToPolygon</b> <i class="arg">P</i> <i class="arg">polygon</i></a></li>
<li><a href="#19"><b class="cmd">::math::geometry::findClosestPointOnLine</b> <i class="arg">P</i> <i class="arg">line</i></a></li>
<li><a href="#20"><b class="cmd">::math::geometry::findClosestPointOnLineSegment</b> <i class="arg">P</i> <i class="arg">linesegment</i></a></li>
<li><a href="#21"><b class="cmd">::math::geometry::findClosestPointOnPolyline</b> <i class="arg">P</i> <i class="arg">polyline</i></a></li>
<li><a href="#22"><b class="cmd">::math::geometry::lengthOfPolyline</b> <i class="arg">polyline</i></a></li>
<li><a href="#23"><b class="cmd">::math::geometry::movePointInDirection</b> <i class="arg">P</i> <i class="arg">direction</i> <i class="arg">dist</i></a></li>
<li><a href="#24"><b class="cmd">::math::geometry::lineSegmentsIntersect</b> <i class="arg">linesegment1</i> <i class="arg">linesegment2</i></a></li>
<li><a href="#25"><b class="cmd">::math::geometry::findLineSegmentIntersection</b> <i class="arg">linesegment1</i> <i class="arg">linesegment2</i></a></li>
<li><a href="#26"><b class="cmd">::math::geometry::findLineIntersection</b> <i class="arg">line1</i> <i class="arg">line2</i></a></li>
<li><a href="#27"><b class="cmd">::math::geometry::polylinesIntersect</b> <i class="arg">polyline1</i> <i class="arg">polyline2</i></a></li>
<li><a href="#28"><b class="cmd">::math::geometry::polylinesBoundingIntersect</b> <i class="arg">polyline1</i> <i class="arg">polyline2</i> <i class="arg">granularity</i></a></li>
<li><a href="#29"><b class="cmd">::math::geometry::intervalsOverlap</b> <i class="arg">y1</i> <i class="arg">y2</i> <i class="arg">y3</i> <i class="arg">y4</i> <i class="arg">strict</i></a></li>
<li><a href="#30"><b class="cmd">::math::geometry::rectanglesOverlap</b> <i class="arg">P1</i> <i class="arg">P2</i> <i class="arg">Q1</i> <i class="arg">Q2</i> <i class="arg">strict</i></a></li>
<li><a href="#31"><b class="cmd">::math::geometry::bbox</b> <i class="arg">polyline</i></a></li>
<li><a href="#32"><b class="cmd">::math::geometry::pointInsidePolygon</b> <i class="arg">P</i> <i class="arg">polyline</i></a></li>
<li><a href="#33"><b class="cmd">::math::geometry::rectangleInsidePolygon</b> <i class="arg">P1</i> <i class="arg">P2</i> <i class="arg">polyline</i></a></li>
<li><a href="#34"><b class="cmd">::math::geometry::areaPolygon</b> <i class="arg">polygon</i></a></li>
<li><a href="#18"><b class="cmd">::math::geometry::findClosestPointOnLine</b> <i class="arg">P</i> <i class="arg">line</i></a></li>
<li><a href="#19"><b class="cmd">::math::geometry::findClosestPointOnLineSegment</b> <i class="arg">P</i> <i class="arg">linesegment</i></a></li>
<li><a href="#20"><b class="cmd">::math::geometry::findClosestPointOnPolyline</b> <i class="arg">P</i> <i class="arg">polyline</i></a></li>
<li><a href="#21"><b class="cmd">::math::geometry::lengthOfPolyline</b> <i class="arg">polyline</i></a></li>
<li><a href="#22"><b class="cmd">::math::geometry::movePointInDirection</b> <i class="arg">P</i> <i class="arg">direction</i> <i class="arg">dist</i></a></li>
<li><a href="#23"><b class="cmd">::math::geometry::lineSegmentsIntersect</b> <i class="arg">linesegment1</i> <i class="arg">linesegment2</i></a></li>
<li><a href="#24"><b class="cmd">::math::geometry::findLineSegmentIntersection</b> <i class="arg">linesegment1</i> <i class="arg">linesegment2</i></a></li>
<li><a href="#25"><b class="cmd">::math::geometry::findLineIntersection</b> <i class="arg">line1</i> <i class="arg">line2</i></a></li>
<li><a href="#26"><b class="cmd">::math::geometry::polylinesIntersect</b> <i class="arg">polyline1</i> <i class="arg">polyline2</i></a></li>
<li><a href="#27"><b class="cmd">::math::geometry::polylinesBoundingIntersect</b> <i class="arg">polyline1</i> <i class="arg">polyline2</i> <i class="arg">granularity</i></a></li>
<li><a href="#28"><b class="cmd">::math::geometry::intervalsOverlap</b> <i class="arg">y1</i> <i class="arg">y2</i> <i class="arg">y3</i> <i class="arg">y4</i> <i class="arg">strict</i></a></li>
<li><a href="#29"><b class="cmd">::math::geometry::rectanglesOverlap</b> <i class="arg">P1</i> <i class="arg">P2</i> <i class="arg">Q1</i> <i class="arg">Q2</i> <i class="arg">strict</i></a></li>
<li><a href="#30"><b class="cmd">::math::geometry::bbox</b> <i class="arg">polyline</i></a></li>
<li><a href="#31"><b class="cmd">::math::geometry::pointInsidePolygon</b> <i class="arg">P</i> <i class="arg">polyline</i></a></li>
<li><a href="#32"><b class="cmd">::math::geometry::rectangleInsidePolygon</b> <i class="arg">P1</i> <i class="arg">P2</i> <i class="arg">polyline</i></a></li>
<li><a href="#33"><b class="cmd">::math::geometry::areaPolygon</b> <i class="arg">polygon</i></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>The <b class="package">math::geometry</b> package is a collection of functions for
computations and manipulations on two-dimensional geometrical objects,
such as points, lines and polygons.</p>
|
︙ | | |
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
|
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
|
-
+
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
|
<dd><p>List of two numbers, the coordinates of the point</p></dd>
<dt>list <i class="arg">linesegment</i></dt>
<dd><p>List of four numbers, the coordinates of the
first and last points of the line segment</p></dd>
</dl></dd>
<dt><a name="17"><b class="cmd">::math::geometry::calculateDistanceToPolyline</b> <i class="arg">P</i> <i class="arg">polyline</i></a></dt>
<dd><p>Calculate the distance of point P to the polyline and
return the result. Note that a polyline needs not to be closed.</p>
return the result.</p>
<dl class="arguments">
<dt>list <i class="arg">P</i></dt>
<dd><p>List of two numbers, the coordinates of the point</p></dd>
<dt>list <i class="arg">polyline</i></dt>
<dd><p>List of numbers, the coordinates of the
vertices of the polyline</p></dd>
</dl></dd>
<dt><a name="18"><b class="cmd">::math::geometry::calculateDistanceToPolygon</b> <i class="arg">P</i> <i class="arg">polygon</i></a></dt>
<dd><p>Calculate the distance of point P to the polygon and
return the result. If the list of coordinates is not closed (first and last
points differ), it is automatically closed.</p>
<dl class="arguments">
<dt>list <i class="arg">P</i></dt>
<dd><p>List of two numbers, the coordinates of the point</p></dd>
<dt>list <i class="arg">polygon</i></dt>
<dd><p>List of numbers, the coordinates of the
vertices of the polygon</p></dd>
</dl></dd>
<dt><a name="19"><b class="cmd">::math::geometry::findClosestPointOnLine</b> <i class="arg">P</i> <i class="arg">line</i></a></dt>
<dt><a name="18"><b class="cmd">::math::geometry::findClosestPointOnLine</b> <i class="arg">P</i> <i class="arg">line</i></a></dt>
<dd><p>Return the point on a line which is closest to a given point.</p>
<dl class="arguments">
<dt>list <i class="arg">P</i></dt>
<dd><p>List of two numbers, the coordinates of the point</p></dd>
<dt>list <i class="arg">line</i></dt>
<dd><p>List of four numbers, the coordinates of two points
on the line</p></dd>
</dl></dd>
<dt><a name="20"><b class="cmd">::math::geometry::findClosestPointOnLineSegment</b> <i class="arg">P</i> <i class="arg">linesegment</i></a></dt>
<dt><a name="19"><b class="cmd">::math::geometry::findClosestPointOnLineSegment</b> <i class="arg">P</i> <i class="arg">linesegment</i></a></dt>
<dd><p>Return the point on a <em>line segment</em> which is closest to a given
point.</p>
<dl class="arguments">
<dt>list <i class="arg">P</i></dt>
<dd><p>List of two numbers, the coordinates of the point</p></dd>
<dt>list <i class="arg">linesegment</i></dt>
<dd><p>List of four numbers, the first and last
points on the line segment</p></dd>
</dl></dd>
<dt><a name="21"><b class="cmd">::math::geometry::findClosestPointOnPolyline</b> <i class="arg">P</i> <i class="arg">polyline</i></a></dt>
<dt><a name="20"><b class="cmd">::math::geometry::findClosestPointOnPolyline</b> <i class="arg">P</i> <i class="arg">polyline</i></a></dt>
<dd><p>Return the point on a <em>polyline</em> which is closest to a given
point.</p>
<dl class="arguments">
<dt>list <i class="arg">P</i></dt>
<dd><p>List of two numbers, the coordinates of the point</p></dd>
<dt>list <i class="arg">polyline</i></dt>
<dd><p>List of numbers, the vertices of the polyline</p></dd>
</dl></dd>
<dt><a name="22"><b class="cmd">::math::geometry::lengthOfPolyline</b> <i class="arg">polyline</i></a></dt>
<dt><a name="21"><b class="cmd">::math::geometry::lengthOfPolyline</b> <i class="arg">polyline</i></a></dt>
<dd><p>Return the length of the <em>polyline</em> (note: it not regarded as a
polygon)</p>
<dl class="arguments">
<dt>list <i class="arg">polyline</i></dt>
<dd><p>List of numbers, the vertices of the polyline</p></dd>
</dl></dd>
<dt><a name="23"><b class="cmd">::math::geometry::movePointInDirection</b> <i class="arg">P</i> <i class="arg">direction</i> <i class="arg">dist</i></a></dt>
<dt><a name="22"><b class="cmd">::math::geometry::movePointInDirection</b> <i class="arg">P</i> <i class="arg">direction</i> <i class="arg">dist</i></a></dt>
<dd><p>Move a point over a given distance in a given direction and return the
new coordinates (in two dimensions only).</p>
<dl class="arguments">
<dt>list <i class="arg">P</i></dt>
<dd><p>Coordinates of the point to be moved</p></dd>
<dt>double <i class="arg">direction</i></dt>
<dd><p>Direction (in degrees; 0 is to the right, 90
upwards)</p></dd>
<dt>list <i class="arg">dist</i></dt>
<dd><p>Distance over which to move the point</p></dd>
</dl></dd>
<dt><a name="24"><b class="cmd">::math::geometry::lineSegmentsIntersect</b> <i class="arg">linesegment1</i> <i class="arg">linesegment2</i></a></dt>
<dt><a name="23"><b class="cmd">::math::geometry::lineSegmentsIntersect</b> <i class="arg">linesegment1</i> <i class="arg">linesegment2</i></a></dt>
<dd><p>Check if two line segments intersect or coincide. Returns 1 if that is
the case, 0 otherwise (in two dimensions only). If an endpoint of one segment lies on
the case, 0 otherwise (in two dimensions only).</p>
the other segment (or is very close to the segment), they are considered to intersect</p>
<dl class="arguments">
<dt>list <i class="arg">linesegment1</i></dt>
<dd><p>First line segment</p></dd>
<dt>list <i class="arg">linesegment2</i></dt>
<dd><p>Second line segment</p></dd>
</dl></dd>
<dt><a name="25"><b class="cmd">::math::geometry::findLineSegmentIntersection</b> <i class="arg">linesegment1</i> <i class="arg">linesegment2</i></a></dt>
<dt><a name="24"><b class="cmd">::math::geometry::findLineSegmentIntersection</b> <i class="arg">linesegment1</i> <i class="arg">linesegment2</i></a></dt>
<dd><p>Find the intersection point of two line segments. Return the coordinates
or the keywords "coincident" or "none" if the line segments coincide or
have no points in common (in two dimensions only).</p>
<dl class="arguments">
<dt>list <i class="arg">linesegment1</i></dt>
<dd><p>First line segment</p></dd>
<dt>list <i class="arg">linesegment2</i></dt>
<dd><p>Second line segment</p></dd>
</dl></dd>
<dt><a name="26"><b class="cmd">::math::geometry::findLineIntersection</b> <i class="arg">line1</i> <i class="arg">line2</i></a></dt>
<dt><a name="25"><b class="cmd">::math::geometry::findLineIntersection</b> <i class="arg">line1</i> <i class="arg">line2</i></a></dt>
<dd><p>Find the intersection point of two (infinite) lines. Return the coordinates
or the keywords "coincident" or "none" if the lines coincide or
have no points in common (in two dimensions only).</p>
<dl class="arguments">
<dt>list <i class="arg">line1</i></dt>
<dd><p>First line</p></dd>
<dt>list <i class="arg">line2</i></dt>
<dd><p>Second line</p></dd>
</dl>
<p>See section <span class="sectref"><a href="#section3">References</a></span> for details on the algorithm and math behind it.</p></dd>
<dt><a name="27"><b class="cmd">::math::geometry::polylinesIntersect</b> <i class="arg">polyline1</i> <i class="arg">polyline2</i></a></dt>
<dt><a name="26"><b class="cmd">::math::geometry::polylinesIntersect</b> <i class="arg">polyline1</i> <i class="arg">polyline2</i></a></dt>
<dd><p>Check if two polylines intersect or not (in two dimensions only).</p>
<dl class="arguments">
<dt>list <i class="arg">polyline1</i></dt>
<dd><p>First polyline</p></dd>
<dt>list <i class="arg">polyline2</i></dt>
<dd><p>Second polyline</p></dd>
</dl></dd>
<dt><a name="28"><b class="cmd">::math::geometry::polylinesBoundingIntersect</b> <i class="arg">polyline1</i> <i class="arg">polyline2</i> <i class="arg">granularity</i></a></dt>
<dt><a name="27"><b class="cmd">::math::geometry::polylinesBoundingIntersect</b> <i class="arg">polyline1</i> <i class="arg">polyline2</i> <i class="arg">granularity</i></a></dt>
<dd><p>Check whether two polylines intersect, but reduce
the correctness of the result to the given granularity.
Use this for faster, but weaker, intersection checking.</p>
<p>How it works:</p>
<p>Each polyline is split into a number of smaller polylines,
consisting of granularity points each. If a pair of those smaller
lines' bounding boxes intersect, then this procedure returns 1,
otherwise it returns 0.</p>
<dl class="arguments">
<dt>list <i class="arg">polyline1</i></dt>
<dd><p>First polyline</p></dd>
<dt>list <i class="arg">polyline2</i></dt>
<dd><p>Second polyline</p></dd>
<dt>int <i class="arg">granularity</i></dt>
<dd><p>Number of points in each part (<=1 means check
every edge)</p></dd>
</dl></dd>
<dt><a name="29"><b class="cmd">::math::geometry::intervalsOverlap</b> <i class="arg">y1</i> <i class="arg">y2</i> <i class="arg">y3</i> <i class="arg">y4</i> <i class="arg">strict</i></a></dt>
<dt><a name="28"><b class="cmd">::math::geometry::intervalsOverlap</b> <i class="arg">y1</i> <i class="arg">y2</i> <i class="arg">y3</i> <i class="arg">y4</i> <i class="arg">strict</i></a></dt>
<dd><p>Check if two intervals overlap.</p>
<dl class="arguments">
<dt>double <i class="arg">y1,y2</i></dt>
<dd><p>Begin and end of first interval</p></dd>
<dt>double <i class="arg">y3,y4</i></dt>
<dd><p>Begin and end of second interval</p></dd>
<dt>logical <i class="arg">strict</i></dt>
<dd><p>Check for strict or non-strict overlap</p></dd>
</dl></dd>
<dt><a name="30"><b class="cmd">::math::geometry::rectanglesOverlap</b> <i class="arg">P1</i> <i class="arg">P2</i> <i class="arg">Q1</i> <i class="arg">Q2</i> <i class="arg">strict</i></a></dt>
<dt><a name="29"><b class="cmd">::math::geometry::rectanglesOverlap</b> <i class="arg">P1</i> <i class="arg">P2</i> <i class="arg">Q1</i> <i class="arg">Q2</i> <i class="arg">strict</i></a></dt>
<dd><p>Check if two rectangles overlap.</p>
<dl class="arguments">
<dt>list <i class="arg">P1</i></dt>
<dd><p>upper-left corner of the first rectangle</p></dd>
<dt>list <i class="arg">P2</i></dt>
<dd><p>lower-right corner of the first rectangle</p></dd>
<dt>list <i class="arg">Q1</i></dt>
<dd><p>upper-left corner of the second rectangle</p></dd>
<dt>list <i class="arg">Q2</i></dt>
<dd><p>lower-right corner of the second rectangle</p></dd>
<dt>list <i class="arg">strict</i></dt>
<dd><p>choosing strict or non-strict interpretation</p></dd>
</dl></dd>
<dt><a name="31"><b class="cmd">::math::geometry::bbox</b> <i class="arg">polyline</i></a></dt>
<dt><a name="30"><b class="cmd">::math::geometry::bbox</b> <i class="arg">polyline</i></a></dt>
<dd><p>Calculate the bounding box of a polyline. Returns a list of four
coordinates: the upper-left and the lower-right corner of the box.</p>
<dl class="arguments">
<dt>list <i class="arg">polyline</i></dt>
<dd><p>The polyline to be examined</p></dd>
</dl></dd>
<dt><a name="32"><b class="cmd">::math::geometry::pointInsidePolygon</b> <i class="arg">P</i> <i class="arg">polyline</i></a></dt>
<dt><a name="31"><b class="cmd">::math::geometry::pointInsidePolygon</b> <i class="arg">P</i> <i class="arg">polyline</i></a></dt>
<dd><p>Determine if a point is completely inside a polygon. If the point
touches the polygon, then the point is not completely inside the
polygon.</p>
<dl class="arguments">
<dt>list <i class="arg">P</i></dt>
<dd><p>Coordinates of the point</p></dd>
<dt>list <i class="arg">polyline</i></dt>
<dd><p>The polyline to be examined</p></dd>
</dl></dd>
<dt><a name="33"><b class="cmd">::math::geometry::rectangleInsidePolygon</b> <i class="arg">P1</i> <i class="arg">P2</i> <i class="arg">polyline</i></a></dt>
<dt><a name="32"><b class="cmd">::math::geometry::rectangleInsidePolygon</b> <i class="arg">P1</i> <i class="arg">P2</i> <i class="arg">polyline</i></a></dt>
<dd><p>Determine if a rectangle is completely inside a polygon. If polygon
touches the rectangle, then the rectangle is not complete inside the
polygon.</p>
<dl class="arguments">
<dt>list <i class="arg">P1</i></dt>
<dd><p>Upper-left corner of the rectangle</p></dd>
<dt>list <i class="arg">P2</i></dt>
<dd><p>Lower-right corner of the rectangle</p></dd>
<dt>list <i class="arg">polygon</i></dt>
<dd><p>The polygon in question</p></dd>
</dl></dd>
<dt><a name="34"><b class="cmd">::math::geometry::areaPolygon</b> <i class="arg">polygon</i></a></dt>
<dt><a name="33"><b class="cmd">::math::geometry::areaPolygon</b> <i class="arg">polygon</i></a></dt>
<dd><p>Calculate the area of a polygon.</p>
<dl class="arguments">
<dt>list <i class="arg">polygon</i></dt>
<dd><p>The polygon in question</p></dd>
</dl></dd>
</dl>
</div>
|
︙ | | |
Changes to embedded/www/tcllib/files/modules/pt/pt_peg_from_peg.html.
︙ | | |
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
-
+
|
| <a href="../../../../toc.html">Main Table Of Contents</a>
| <a href="../../../toc.html">Table Of Contents</a>
| <a href="../../../../index.html">Keyword Index</a>
| <a href="../../../../toc0.html">Categories</a>
| <a href="../../../../toc1.html">Modules</a>
| <a href="../../../../toc2.html">Applications</a>
] <hr>
<h1 class="title">pt::peg::from::peg(n) 1.0.2 tcllib "Parser Tools"</h1>
<h1 class="title">pt::peg::from::peg(n) 1 tcllib "Parser Tools"</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::from::peg - PEG Conversion. Read PEG format</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
|
︙ | | |
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
|
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
|
-
+
|
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
<li>package require <b class="pkgname">Tcl 8.5</b></li>
<li>package require <b class="pkgname">pt::peg::from::peg <span class="opt">?1.0.2?</span></b></li>
<li>package require <b class="pkgname">pt::peg::from::peg <span class="opt">?1?</span></b></li>
</ul>
<ul class="syntax">
<li><a href="#1"><b class="cmd">pt::peg::from::peg</b> <b class="method">convert</b> <i class="arg">text</i></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
|
︙ | | |
Changes to embedded/www/tcllib/files/modules/pt/pt_peg_op.html.
︙ | | |
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
-
+
-
+
|
| <a href="../../../../toc.html">Main Table Of Contents</a>
| <a href="../../../toc.html">Table Of Contents</a>
| <a href="../../../../index.html">Keyword Index</a>
| <a href="../../../../toc0.html">Categories</a>
| <a href="../../../../toc1.html">Modules</a>
| <a href="../../../../toc2.html">Applications</a>
] <hr>
<h1 class="title">pt_peg_op(i) 1.0.1 tcllib "Parser Tools"</h1>
<h1 class="title">pt_peg_op(i) 1 tcllib "Parser Tools"</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt_peg_op - Parser Tools PE Grammar Utility Operations</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
<li>package require <b class="pkgname">Tcl 8.5</b></li>
<li>package require <b class="pkgname">pt::peg::op 1.0.1</b></li>
<li>package require <b class="pkgname">pt::peg::op 1</b></li>
</ul>
<ul class="syntax">
<li><a href="#1"><b class="cmd">::peg::peg::op</b> <b class="method">called</b> <i class="arg">container</i></a></li>
<li><a href="#2"><b class="cmd">::peg::peg::op</b> <b class="method">dechain</b> <i class="arg">container</i></a></li>
<li><a href="#3"><b class="cmd">::peg::peg::op</b> <b class="method">drop unreachable</b> <i class="arg">container</i></a></li>
<li><a href="#4"><b class="cmd">::peg::peg::op</b> <b class="method">drop unrealizable</b> <i class="arg">container</i></a></li>
<li><a href="#5"><b class="cmd">::peg::peg::op</b> <b class="method">flatten</b> <i class="arg">container</i></a></li>
|
︙ | | |
Changes to embedded/www/tcllib/files/modules/pt/pt_peg_to_peg.html.
︙ | | |
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
-
+
|
| <a href="../../../../toc.html">Main Table Of Contents</a>
| <a href="../../../toc.html">Table Of Contents</a>
| <a href="../../../../index.html">Keyword Index</a>
| <a href="../../../../toc0.html">Categories</a>
| <a href="../../../../toc1.html">Modules</a>
| <a href="../../../../toc2.html">Applications</a>
] <hr>
<h1 class="title">pt::peg::to::peg(n) 1.0.1 tcllib "Parser Tools"</h1>
<h1 class="title">pt::peg::to::peg(n) 1 tcllib "Parser Tools"</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::peg::to::peg - PEG Conversion. Write PEG format</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
|
︙ | | |
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
|
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
|
-
+
|
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
<li>package require <b class="pkgname">Tcl 8.5</b></li>
<li>package require <b class="pkgname">pt::peg::to::peg <span class="opt">?1.0.1?</span></b></li>
<li>package require <b class="pkgname">pt::peg::to::peg <span class="opt">?1?</span></b></li>
<li>package require <b class="pkgname">pt::peg</b></li>
<li>package require <b class="pkgname">pt::pe</b></li>
<li>package require <b class="pkgname">text::write</b></li>
</ul>
<ul class="syntax">
<li><a href="#1"><b class="cmd">pt::peg::to::peg</b> <b class="method">reset</b></a></li>
<li><a href="#2"><b class="cmd">pt::peg::to::peg</b> <b class="method">configure</b></a></li>
|
︙ | | |
Changes to embedded/www/tcllib/files/modules/pt/pt_pgen.html.
︙ | | |
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
-
+
-
+
|
| <a href="../../../../toc.html">Main Table Of Contents</a>
| <a href="../../../toc.html">Table Of Contents</a>
| <a href="../../../../index.html">Keyword Index</a>
| <a href="../../../../toc0.html">Categories</a>
| <a href="../../../../toc1.html">Modules</a>
| <a href="../../../../toc2.html">Applications</a>
] <hr>
<h1 class="title">pt::pgen(n) 1.0.2 tcllib "Parser Tools"</h1>
<h1 class="title">pt::pgen(n) 1.0.1 tcllib "Parser Tools"</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>pt::pgen - Parser Generator</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Example</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
<li>package require <b class="pkgname">Tcl 8.5</b></li>
<li>package require <b class="pkgname">pt::pgen <span class="opt">?1.0.2?</span></b></li>
<li>package require <b class="pkgname">pt::pgen <span class="opt">?1.0.1?</span></b></li>
</ul>
<ul class="syntax">
<li><a href="#1"><b class="cmd">::pt::pgen</b> <i class="arg">inputformat</i> <i class="arg">text</i> <i class="arg">resultformat</i> <span class="opt">?<i class="arg">options...</i>?</span></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
|
︙ | | |
Changes to embedded/www/tcllib/files/modules/rest/rest.html.
︙ | | |
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
-
+
-
+
|
| <a href="../../../../toc.html">Main Table Of Contents</a>
| <a href="../../../toc.html">Table Of Contents</a>
| <a href="../../../../index.html">Keyword Index</a>
| <a href="../../../../toc0.html">Categories</a>
| <a href="../../../../toc1.html">Modules</a>
| <a href="../../../../toc2.html">Applications</a>
] <hr>
<h1 class="title">rest(n) 1.0.1 tcllib "A framework for RESTful web services"</h1>
<h1 class="title">rest(n) 1.0 tcllib "A framework for RESTful web services"</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>rest - define REST web APIs and call them inline or asychronously</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">INCLUDED</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
<li>package require <b class="pkgname">Tcl 8.5</b></li>
<li>package require <b class="pkgname">rest <span class="opt">?1.0.1?</span></b></li>
<li>package require <b class="pkgname">rest <span class="opt">?1.0?</span></b></li>
</ul>
<ul class="syntax">
<li><a href="#1"><b class="cmd">::rest::simple</b> <i class="arg">url</i> <i class="arg">query</i> <span class="opt">?config?</span> <span class="opt">?body?</span></a></li>
<li><a href="#2"><b class="cmd">::rest::get</b> <i class="arg">url</i> <i class="arg">query</i> <span class="opt">?config?</span> <span class="opt">?body?</span></a></li>
<li><a href="#3"><b class="cmd">::rest::post</b> <i class="arg">url</i> <i class="arg">query</i> <span class="opt">?config?</span> <span class="opt">?body?</span></a></li>
<li><a href="#4"><b class="cmd">::rest::head</b> <i class="arg">url</i> <i class="arg">query</i> <span class="opt">?config?</span> <span class="opt">?body?</span></a></li>
<li><a href="#5"><b class="cmd">::rest::put</b> <i class="arg">url</i> <i class="arg">query</i> <span class="opt">?config?</span> <span class="opt">?body?</span></a></li>
|
︙ | | |
Changes to embedded/www/tcllib/files/modules/struct/struct_list.html.
︙ | | |
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
-
+
|
| <a href="../../../../toc.html">Main Table Of Contents</a>
| <a href="../../../toc.html">Table Of Contents</a>
| <a href="../../../../index.html">Keyword Index</a>
| <a href="../../../../toc0.html">Categories</a>
| <a href="../../../../toc1.html">Modules</a>
| <a href="../../../../toc2.html">Applications</a>
] <hr>
<h1 class="title">struct::list(n) 1.8.3 tcllib "Tcl Data Structures"</h1>
<h1 class="title">struct::list(n) 1.8.2 tcllib "Tcl Data Structures"</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>struct::list - Procedures for manipulating lists</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
|
︙ | | |
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
|
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
|
-
+
|
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
<li>package require <b class="pkgname">Tcl 8.4</b></li>
<li>package require <b class="pkgname">struct::list <span class="opt">?1.8.3?</span></b></li>
<li>package require <b class="pkgname">struct::list <span class="opt">?1.8.2?</span></b></li>
</ul>
<ul class="syntax">
<li><a href="#1"><b class="cmd">::struct::list</b> <b class="method">longestCommonSubsequence</b> <i class="arg">sequence1</i> <i class="arg">sequence2</i> <span class="opt">?<i class="arg">maxOccurs</i>?</span></a></li>
<li><a href="#2"><b class="cmd">::struct::list</b> <b class="method">longestCommonSubsequence2</b> <i class="arg">sequence1 sequence2</i> <span class="opt">?<i class="arg">maxOccurs</i>?</span></a></li>
<li><a href="#3"><b class="cmd">::struct::list</b> <b class="method">lcsInvert</b> <i class="arg">lcsData</i> <i class="arg">len1</i> <i class="arg">len2</i></a></li>
<li><a href="#4"><b class="cmd">::struct::list</b> <b class="method">lcsInvert2</b> <i class="arg">lcs1</i> <i class="arg">lcs2</i> <i class="arg">len1</i> <i class="arg">len2</i></a></li>
<li><a href="#5"><b class="cmd">::struct::list</b> <b class="method">lcsInvertMerge</b> <i class="arg">lcsData</i> <i class="arg">len1</i> <i class="arg">len2</i></a></li>
|
︙ | | |
Changes to embedded/www/tcllib/files/modules/tar/tar.html.
︙ | | |
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
-
+
-
+
|
| <a href="../../../../toc.html">Main Table Of Contents</a>
| <a href="../../../toc.html">Table Of Contents</a>
| <a href="../../../../index.html">Keyword Index</a>
| <a href="../../../../toc0.html">Categories</a>
| <a href="../../../../toc1.html">Modules</a>
| <a href="../../../../toc2.html">Applications</a>
] <hr>
<h1 class="title">tar(n) 0.10 tcllib "Tar file handling"</h1>
<h1 class="title">tar(n) 0.9 tcllib "Tar file handling"</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>tar - Tar file creation, extraction & manipulation</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
<li>package require <b class="pkgname">Tcl 8.4</b></li>
<li>package require <b class="pkgname">tar <span class="opt">?0.10?</span></b></li>
<li>package require <b class="pkgname">tar <span class="opt">?0.9?</span></b></li>
</ul>
<ul class="syntax">
<li><a href="#1"><b class="cmd">::tar::contents</b> <i class="arg">tarball</i> <span class="opt">?<b class="option">-chan</b>?</span></a></li>
<li><a href="#2"><b class="cmd">::tar::stat</b> <i class="arg">tarball</i> <span class="opt">?file?</span> <span class="opt">?<b class="option">-chan</b>?</span></a></li>
<li><a href="#3"><b class="cmd">::tar::untar</b> <i class="arg">tarball</i> <i class="arg">args</i></a></li>
<li><a href="#4"><b class="cmd">::tar::get</b> <i class="arg">tarball</i> <i class="arg">fileName</i> <span class="opt">?<b class="option">-chan</b>?</span></a></li>
<li><a href="#5"><b class="cmd">::tar::create</b> <i class="arg">tarball</i> <i class="arg">files</i> <i class="arg">args</i></a></li>
|
︙ | | |
Changes to embedded/www/tcllib/files/modules/term/ansi_cctrl.html.
︙ | | |
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
-
+
|
| <a href="../../../../toc.html">Main Table Of Contents</a>
| <a href="../../../toc.html">Table Of Contents</a>
| <a href="../../../../index.html">Keyword Index</a>
| <a href="../../../../toc0.html">Categories</a>
| <a href="../../../../toc1.html">Modules</a>
| <a href="../../../../toc2.html">Applications</a>
] <hr>
<h1 class="title">term::ansi::code::ctrl(n) 0.2 tcllib "Terminal control"</h1>
<h1 class="title">term::ansi::code::ctrl(n) 0.1 tcllib "Terminal control"</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>term::ansi::code::ctrl - ANSI control sequences</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
|
︙ | | |
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
|
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
|
-
-
+
+
|
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
<li>package require <b class="pkgname">Tcl 8.4</b></li>
<li>package require <b class="pkgname">term::ansi::code <span class="opt">?0.2?</span></b></li>
<li>package require <b class="pkgname">term::ansi::code::ctrl <span class="opt">?0.2?</span></b></li>
<li>package require <b class="pkgname">term::ansi::code <span class="opt">?0.1?</span></b></li>
<li>package require <b class="pkgname">term::ansi::code::ctrl <span class="opt">?0.1.1?</span></b></li>
</ul>
<ul class="syntax">
<li><a href="#1"><b class="cmd">::term::ansi::code::ctrl::names</b></a></li>
<li><a href="#2"><b class="cmd">::term::ansi::code::ctrl::import</b> <span class="opt">?<i class="arg">ns</i>?</span> <span class="opt">?<i class="arg">arg</i>...?</span></a></li>
<li><a href="#3"><b class="cmd">::term::ansi::code::ctrl::eeol</b></a></li>
<li><a href="#4"><b class="cmd">::term::ansi::code::ctrl::esol</b></a></li>
<li><a href="#5"><b class="cmd">::term::ansi::code::ctrl::el</b></a></li>
|
︙ | | |
Changes to embedded/www/tcllib/files/modules/term/ansi_code.html.
︙ | | |
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
-
+
-
+
|
| <a href="../../../../toc.html">Main Table Of Contents</a>
| <a href="../../../toc.html">Table Of Contents</a>
| <a href="../../../../index.html">Keyword Index</a>
| <a href="../../../../toc0.html">Categories</a>
| <a href="../../../../toc1.html">Modules</a>
| <a href="../../../../toc2.html">Applications</a>
] <hr>
<h1 class="title">term::ansi::code(n) 0.2 tcllib "Terminal control"</h1>
<h1 class="title">term::ansi::code(n) 0.1 tcllib "Terminal control"</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>term::ansi::code - Helper for control sequences</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
<li>package require <b class="pkgname">Tcl 8.4</b></li>
<li>package require <b class="pkgname">term::ansi::code <span class="opt">?0.2?</span></b></li>
<li>package require <b class="pkgname">term::ansi::code <span class="opt">?0.1?</span></b></li>
</ul>
<ul class="syntax">
<li><a href="#1"><b class="cmd">::term::ansi::code::esc</b> <i class="arg">str</i></a></li>
<li><a href="#2"><b class="cmd">::term::ansi::code::escb</b> <i class="arg">str</i></a></li>
<li><a href="#3"><b class="cmd">::term::ansi::code::define</b> <i class="arg">name</i> <i class="arg">escape</i> <i class="arg">code</i></a></li>
<li><a href="#4"><b class="cmd">::term::ansi::code::const</b> <i class="arg">name</i> <i class="arg">code</i></a></li>
</ul>
|
︙ | | |
Changes to embedded/www/tcllib/files/modules/term/ansi_send.html.
︙ | | |
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
-
+
-
+
|
| <a href="../../../../toc.html">Main Table Of Contents</a>
| <a href="../../../toc.html">Table Of Contents</a>
| <a href="../../../../index.html">Keyword Index</a>
| <a href="../../../../toc0.html">Categories</a>
| <a href="../../../../toc1.html">Modules</a>
| <a href="../../../../toc2.html">Applications</a>
] <hr>
<h1 class="title">term::ansi::send(n) 0.2 tcllib "Terminal control"</h1>
<h1 class="title">term::ansi::send(n) 0.1 tcllib "Terminal control"</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>term::ansi::send - Output of ANSI control sequences to terminals</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
<li>package require <b class="pkgname">Tcl 8.4</b></li>
<li>package require <b class="pkgname">term::ansi::send <span class="opt">?0.2?</span></b></li>
<li>package require <b class="pkgname">term::ansi::send <span class="opt">?0.1?</span></b></li>
</ul>
<ul class="syntax">
<li><a href="#1"><b class="cmd">::term::ansi::send::import</b> <span class="opt">?<i class="arg">ns</i>?</span> <i class="arg">...</i></a></li>
<li><a href="#2"><b class="cmd">::term::ansi::send::eeol</b></a></li>
<li><a href="#3"><b class="cmd">::term::ansi::send::esol</b></a></li>
<li><a href="#4"><b class="cmd">::term::ansi::send::el</b></a></li>
<li><a href="#5"><b class="cmd">::term::ansi::send::ed</b></a></li>
|
︙ | | |
Changes to embedded/www/tcllib/files/modules/textutil/textutil.html.
︙ | | |
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
-
+
-
+
|
| <a href="../../../../toc.html">Main Table Of Contents</a>
| <a href="../../../toc.html">Table Of Contents</a>
| <a href="../../../../index.html">Keyword Index</a>
| <a href="../../../../toc0.html">Categories</a>
| <a href="../../../../toc1.html">Modules</a>
| <a href="../../../../toc2.html">Applications</a>
] <hr>
<h1 class="title">textutil(n) 0.8 tcllib "Text and string utilities, macro processing"</h1>
<h1 class="title">textutil(n) 0.7.1 tcllib "Text and string utilities, macro processing"</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>textutil - Procedures to manipulate texts and strings.</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
<li>package require <b class="pkgname">Tcl 8.2</b></li>
<li>package require <b class="pkgname">textutil <span class="opt">?0.8?</span></b></li>
<li>package require <b class="pkgname">textutil <span class="opt">?0.7.1?</span></b></li>
</ul>
<ul class="syntax">
<li><a href="#1"><b class="cmd">::textutil::adjust</b> <i class="arg">string args</i></a></li>
<li><a href="#2"><b class="cmd">::textutil::adjust::readPatterns</b> <i class="arg">filename</i></a></li>
<li><a href="#3"><b class="cmd">::textutil::adjust::listPredefined</b></a></li>
<li><a href="#4"><b class="cmd">::textutil::adjust::getPredefined</b> <i class="arg">filename</i></a></li>
<li><a href="#5"><b class="cmd">::textutil::indent</b> <i class="arg">string</i> <i class="arg">prefix</i> <span class="opt">?<i class="arg">skip</i>?</span></a></li>
|
︙ | | |
Changes to embedded/www/tcllib/files/modules/textutil/textutil_string.html.
1
2
3
4
5
6
7
8
|
1
2
3
4
5
6
7
|
-
|
<html><head>
<title>textutil::string - Text and string utilities, macro processing</title>
<style type="text/css"><!--
HTML {
background: #FFFFFF;
color: black;
}
|
︙ | | |
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
|
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
|
-
+
-
+
-
-
-
-
+
+
+
-
-
-
-
-
+
-
+
-
+
|
| <a href="../../../../toc.html">Main Table Of Contents</a>
| <a href="../../../toc.html">Table Of Contents</a>
| <a href="../../../../index.html">Keyword Index</a>
| <a href="../../../../toc0.html">Categories</a>
| <a href="../../../../toc1.html">Modules</a>
| <a href="../../../../toc2.html">Applications</a>
] <hr>
<h1 class="title">textutil::string(n) 0.8 tcllib "Text and string utilities, macro processing"</h1>
<h1 class="title">textutil::string(n) 0.7 tcllib "Text and string utilities, macro processing"</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>textutil::string - Procedures to manipulate texts and strings.</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#see-also">See Also</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#category">Category</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
<li>package require <b class="pkgname">Tcl 8.2</b></li>
<li>package require <b class="pkgname">textutil::string <span class="opt">?0.8?</span></b></li>
<li>package require <b class="pkgname">textutil::string <span class="opt">?0.7?</span></b></li>
</ul>
<ul class="syntax">
<li><a href="#1"><b class="cmd">::textutil::string::chop</b> <i class="arg">string</i></a></li>
<li><a href="#2"><b class="cmd">::textutil::string::tail</b> <i class="arg">string</i></a></li>
<li><a href="#3"><b class="cmd">::textutil::string::cap</b> <i class="arg">string</i></a></li>
<li><a href="#4"><b class="cmd">::textutil::string::capEachWord</b> <i class="arg">string</i></a></li>
<li><a href="#5"><b class="cmd">::textutil::string::uncap</b> <i class="arg">string</i></a></li>
<li><a href="#6"><b class="cmd">::textutil::string::longestCommonPrefixList</b> <i class="arg">list</i></a></li>
<li><a href="#7"><b class="cmd">::textutil::string::longestCommonPrefix</b> <span class="opt">?<i class="arg">string</i>...?</span></a></li>
<li><a href="#4"><b class="cmd">::textutil::string::uncap</b> <i class="arg">string</i></a></li>
<li><a href="#5"><b class="cmd">::textutil::string::longestCommonPrefixList</b> <i class="arg">list</i></a></li>
<li><a href="#6"><b class="cmd">::textutil::string::longestCommonPrefix</b> <span class="opt">?<i class="arg">string</i>...?</span></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>The package <b class="package">textutil::string</b> provides miscellaneous string
manipulation commands.</p>
<p>The complete set of procedures is described below.</p>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::textutil::string::chop</b> <i class="arg">string</i></a></dt>
<dd><p>A convenience command. Removes the last character of <i class="arg">string</i> and
returns the shortened string.</p></dd>
<dt><a name="2"><b class="cmd">::textutil::string::tail</b> <i class="arg">string</i></a></dt>
<dd><p>A convenience command. Removes the first character of <i class="arg">string</i> and
returns the shortened string.</p></dd>
<dt><a name="3"><b class="cmd">::textutil::string::cap</b> <i class="arg">string</i></a></dt>
<dd><p>Capitalizes the first character of <i class="arg">string</i> and returns the
modified string.</p></dd>
<dt><a name="4"><b class="cmd">::textutil::string::capEachWord</b> <i class="arg">string</i></a></dt>
<dd><p>Capitalizes the first character of word of the <i class="arg">string</i> and
returns the modified string. Words quoted with either backslash or
dollar-sign are left untouched.</p></dd>
<dt><a name="5"><b class="cmd">::textutil::string::uncap</b> <i class="arg">string</i></a></dt>
<dt><a name="4"><b class="cmd">::textutil::string::uncap</b> <i class="arg">string</i></a></dt>
<dd><p>The complementary operation to <b class="cmd">::textutil::string::cap</b>. Forces
the first character of <i class="arg">string</i> to lower case and returns the
modified string.</p></dd>
<dt><a name="6"><b class="cmd">::textutil::string::longestCommonPrefixList</b> <i class="arg">list</i></a></dt>
<dt><a name="5"><b class="cmd">::textutil::string::longestCommonPrefixList</b> <i class="arg">list</i></a></dt>
<dd></dd>
<dt><a name="7"><b class="cmd">::textutil::string::longestCommonPrefix</b> <span class="opt">?<i class="arg">string</i>...?</span></a></dt>
<dt><a name="6"><b class="cmd">::textutil::string::longestCommonPrefix</b> <span class="opt">?<i class="arg">string</i>...?</span></a></dt>
<dd><p>Computes the longest common prefix for either the <i class="arg">string</i>s given
to the command, or the strings specified in the single <i class="arg">list</i>, and
returns it as the result of the command.</p>
<p>If no strings were specified the result is the empty string. If only
one string was specified, the string itself is returned, as it is its
own longest common prefix.</p></dd>
</dl>
|
︙ | | |
Changes to embedded/www/tcllib/files/modules/zip/decode.html.
1
2
3
4
5
6
7
8
9
10
|
1
2
3
4
5
6
7
8
9
10
|
-
+
|
<html><head>
<title>zipfile::decode - Zip archive handling</title>
<title>zipfile::encode - Zip archive handling</title>
<style type="text/css"><!--
HTML {
background: #FFFFFF;
color: black;
}
BODY {
background: #FFFFFF;
|
︙ | | |
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
-
+
-
+
-
+
-
+
|
margin-bottom: 1em;
border-bottom: 1px solid black;
}
--></style>
</head>
<! -- Generated from file 'decode.man' by tcllib/doctools with format 'html'
-->
<! -- Copyright © 2008-2014 Andreas Kupries
<! -- Copyright © 2008-2012 Andreas Kupries
-->
<! -- CVS: $Id$ zipfile::decode.n
<! -- CVS: $Id$ zipfile::encode.n
-->
<body><div class="doctools">
<hr> [
<a href="../../../../../../../../home">Tcllib Home</a>
| <a href="../../../../toc.html">Main Table Of Contents</a>
| <a href="../../../toc.html">Table Of Contents</a>
| <a href="../../../../index.html">Keyword Index</a>
| <a href="../../../../toc0.html">Categories</a>
| <a href="../../../../toc1.html">Modules</a>
| <a href="../../../../toc2.html">Applications</a>
] <hr>
<h1 class="title">zipfile::decode(n) 0.5 tcllib "Zip archive handling"</h1>
<h1 class="title">zipfile::encode(n) 0.3 tcllib "Zip archive handling"</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>zipfile::decode - Access to zip archives</p>
<p>zipfile::encode - Access to zip archives</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
|
︙ | | |
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
-
+
|
<div class="synopsis">
<ul class="requirements">
<li>package require <b class="pkgname">Tcl 8.4</b></li>
<li>package require <b class="pkgname">fileutil::magic::mimetype</b></li>
<li>package require <b class="pkgname">fileutil::decode 0.2</b></li>
<li>package require <b class="pkgname">Trf</b></li>
<li>package require <b class="pkgname">zlibtcl</b></li>
<li>package require <b class="pkgname">zipfile::decode <span class="opt">?0.5?</span></b></li>
<li>package require <b class="pkgname">zipfile::decode <span class="opt">?0.4?</span></b></li>
</ul>
<ul class="syntax">
<li><a href="#1"><b class="cmd">::zipfile::decode::archive</b></a></li>
<li><a href="#2"><b class="cmd">::zipfile::decode::close</b></a></li>
<li><a href="#3"><b class="cmd">::zipfile::decode::comment</b> <i class="arg">adict</i></a></li>
<li><a href="#4"><b class="cmd">::zipfile::decode::content</b> <i class="arg">archive</i></a></li>
<li><a href="#5"><b class="cmd">::zipfile::decode::copyfile</b> <i class="arg">adict</i> <i class="arg">path</i> <i class="arg">dst</i></a></li>
|
︙ | | |
224
225
226
227
228
229
230
231
232
233
|
224
225
226
227
228
229
230
231
232
233
|
-
+
|
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../../../index.html#key43">decompression</a>, <a href="../../../../index.html#key42">zip</a></p>
</div>
<div id="category" class="section"><h2><a name="category">Category</a></h2>
<p>File</p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright © 2008-2014 Andreas Kupries</p>
<p>Copyright © 2008-2012 Andreas Kupries</p>
</div>
</div></body></html>
|
Changes to embedded/www/tcllib/toc.html.
︙ | | |
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
|
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
|
-
+
|
<td class="#tocright">YAML Format Encoder/Decoder</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/base64/yencode.html">yencode</a></td>
<td class="#tocright">Y-encode/decode binary data</td>
</tr>
<tr class="#tocodd" >
<td class="#tocleft" ><a href="files/modules/zip/decode.html">zipfile::decode</a></td>
<td class="#tocleft" ><a href="files/modules/zip/decode.html">zipfile::encode</a></td>
<td class="#tocright">Access to zip archives</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/modules/zip/encode.html">zipfile::encode</a></td>
<td class="#tocright">Generation of zip archives</td>
</tr>
</table>
|
︙ | | |
Changes to embedded/www/toc.html.
︙ | | |
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
|
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
|
-
+
|
<td class="#tocleft" ><a href="tcllib/files/modules/textutil/expander.html">textutil::expander</a></td>
<td class="#tocright">Procedures to process templates and expand text.</td>
</tr>
</table></dl>
<dl><dt>File<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/zip/decode.html">zipfile::decode</a></td>
<td class="#tocleft" ><a href="tcllib/files/modules/zip/decode.html">zipfile::encode</a></td>
<td class="#tocright">Access to zip archives</td>
</tr>
<tr class="#tocodd" >
<td class="#tocleft" ><a href="tcllib/files/modules/zip/encode.html">zipfile::encode</a></td>
<td class="#tocright">Generation of zip archives</td>
</tr>
</table></dl>
|
︙ | | |
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
|
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
|
-
+
|
<td class="#tocleft" ><a href="tcllib/files/modules/yaml/yaml.html">yaml</a></td>
<td class="#tocright">YAML Format Encoder/Decoder</td>
</tr>
</table></dl>
<dl><dt>zip<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/zip/decode.html">zipfile::decode</a></td>
<td class="#tocleft" ><a href="tcllib/files/modules/zip/decode.html">zipfile::encode</a></td>
<td class="#tocright">Access to zip archives</td>
</tr>
<tr class="#tocodd" >
<td class="#tocleft" ><a href="tcllib/files/modules/zip/encode.html">zipfile::encode</a></td>
<td class="#tocright">Generation of zip archives</td>
</tr>
</table></dl></table></dl></table></dl>
</dl><hr></body></html>
|
Changes to embedded/www/toc0.html.
︙ | | |
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
|
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
|
-
+
|
<td class="#tocleft" ><a href="tcllib/files/modules/textutil/expander.html">textutil::expander</a></td>
<td class="#tocright">Procedures to process templates and expand text.</td>
</tr>
</table></dl>
<dl><dt>File<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/zip/decode.html">zipfile::decode</a></td>
<td class="#tocleft" ><a href="tcllib/files/modules/zip/decode.html">zipfile::encode</a></td>
<td class="#tocright">Access to zip archives</td>
</tr>
<tr class="#tocodd" >
<td class="#tocleft" ><a href="tcllib/files/modules/zip/encode.html">zipfile::encode</a></td>
<td class="#tocright">Generation of zip archives</td>
</tr>
</table></dl>
|
︙ | | |
Changes to embedded/www/toc1.html.
︙ | | |
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
|
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
|
-
+
|
<td class="#tocleft" ><a href="tcllib/files/modules/yaml/yaml.html">yaml</a></td>
<td class="#tocright">YAML Format Encoder/Decoder</td>
</tr>
</table></dl>
<dl><dt>zip<dd>
<table class="#toc">
<tr class="#toceven" >
<td class="#tocleft" ><a href="tcllib/files/modules/zip/decode.html">zipfile::decode</a></td>
<td class="#tocleft" ><a href="tcllib/files/modules/zip/decode.html">zipfile::encode</a></td>
<td class="#tocright">Access to zip archives</td>
</tr>
<tr class="#tocodd" >
<td class="#tocleft" ><a href="tcllib/files/modules/zip/encode.html">zipfile::encode</a></td>
<td class="#tocright">Generation of zip archives</td>
</tr>
</table></dl></table></dl>
|
︙ | | |
Changes to modules/comm/comm.man.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
-
-
+
-
+
|
[vset COMM_VERSION 4.6.3]
[manpage_begin comm n [vset COMM_VERSION]]
[manpage_begin comm n 4.6.2]
[see_also send(n)]
[keywords comm]
[keywords communication]
[keywords ipc]
[keywords message]
[keywords {remote communication}]
[keywords {remote execution}]
[keywords rpc]
[keywords secure]
[keywords send]
[keywords socket]
[keywords ssl]
[keywords tls]
[copyright {1995-1998 The Open Group. All Rights Reserved.}]
[copyright {2003-2004 ActiveState Corporation.}]
[copyright {2006-2009 Andreas Kupries <[email protected]>}]
[moddesc {Remote communication}]
[titledesc {A remote communication facility for Tcl (8.3 and later)}]
[category {Programming tools}]
[require Tcl 8.3]
[require comm [opt [vset COMM_VERSION]]]
[require comm [opt 4.6.2]]
[description]
[para]
The [package comm] command provides an inter-interpreter remote
execution facility much like Tk's [cmd send(n)], except that it uses
sockets rather than the X server for the communication path. As a
|
︙ | | |
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
|
877
878
879
880
881
882
883
884
885
886
887
888
889
890
|
-
-
-
-
-
|
Note that requiring no version (or a specific version) can also be done.
[para]
The revision history of [package comm] includes these releases:
[list_begin definitions]
[def 4.6.3]
Fixed ticket [lb]ced0d60fc9[rb]. Added proper detection of eof on a
socket, properly closing it.
[def 4.6.2]
Fixed bugs 2972571 and 3066872, the first a misdetection of quoted
brace after double backslash, the other a blocking gets making for an
obvious (hinsight) DoS attack on comm channels.
[def 4.6.1]
|
︙ | | |
Changes to modules/comm/comm.tcl.
︙ | | |
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
|
925
926
927
928
929
930
931
932
933
934
935
936
937
938
|
-
-
-
-
-
-
-
|
}
proc ::comm::commIncomingOffered {chan fid addr remport} {
variable comm
# Check if we have a complete line.
if {[gets $fid protoline] < 0} {
#commDebug {puts stderr "commIncomingOffered: no data"}
if {[eof $fid]} {
commDebug {puts stderr "commIncomingOffered: eof on fid=$fid"}
catch {
close $fid
}
}
return
}
# Protocol version line has been received, disable event handling
# again.
fileevent $fid readable {}
fconfigure $fid -blocking 1
|
︙ | | |
1811
1812
1813
1814
1815
1816
1817
1818
|
1804
1805
1806
1807
1808
1809
1810
1811
|
-
+
|
::comm::comm config -local 1
} else {
::comm::comm new ::comm::comm -port 0 -local 1 -listen 1
}
}
#eof
package provide comm 4.6.3.1
package provide comm 4.6.2
|
Changes to modules/comm/pkgIndex.tcl.
1
2
|
1
2
|
-
+
|
if {![package vsatisfies [package provide Tcl] 8.3]} {return}
package ifneeded comm 4.6.3.1 [list source [file join $dir comm.tcl]]
package ifneeded comm 4.6.2 [list source [file join $dir comm.tcl]]
|
Changes to modules/coroutine/coro_auto.man.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
-
-
+
-
+
-
+
|
[comment {-*- tcl -*- doctools manpage}]
[vset CORO_AUTO_VERSION 1.1.2]
[manpage_begin coroutine::auto n [vset CORO_AUTO_VERSION]]
[manpage_begin coroutine::auto n 1]
[keywords after]
[keywords channel]
[keywords coroutine]
[keywords events]
[keywords exit]
[keywords gets]
[keywords global]
[keywords {green threads}]
[keywords read]
[keywords threads]
[keywords update]
[keywords vwait]
[copyright {2010-2014 Andreas Kupries <[email protected]>}]
[copyright {2010-2011 Andreas Kupries <[email protected]>}]
[moddesc {Coroutine utilities}]
[category Coroutine]
[titledesc {Automatic event and IO coroutine awareness}]
[require Tcl 8.6]
[require coroutine::auto [vset CORO_AUTO_VERSION]]
[require coroutine::auto 1.1.1]
[require coroutine 1.1]
[description]
The [package coroutine::auto] package provides no commands or other
directly visible functionality.
Built on top of the package [package coroutine], it intercepts various
|
︙ | | |
Changes to modules/coroutine/coro_auto.tcl.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
-
+
-
+
|
## -- Tcl Module -- -*- tcl -*-
# # ## ### ##### ######## #############
# @@ Meta Begin
# Package coroutine::auto 1.1.2
# Package coroutine::auto 1.1
# Meta platform tcl
# Meta require {Tcl 8.6}
# Meta require {coroutine 1.1}
# Meta license BSD
# Meta as::author {Andreas Kupries}
# Meta as::origin http://wiki.tcl.tk/21555
# Meta summary Coroutine Event and Channel Support
# Meta description Built on top of coroutine, this
# Meta description package intercepts various builtin
# Meta description commands to make the code using them
# Meta description coroutine-oblivious, i.e. able to run
# Meta description inside and outside of a coroutine
# Meta description without changes.
# @@ Meta End
# Copyright (c) 2009-2014 Andreas Kupries
# Copyright (c) 2009-2011 Andreas Kupries
## $Id: coro_auto.tcl,v 1.3 2011/11/17 08:00:45 andreas_kupries Exp $
# # ## ### ##### ######## #############
## Requisites, and ensemble setup.
package require Tcl 8.6
package require coroutine
|
︙ | | |
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
-
+
|
# where necessary. During
while {1} {
set blocking [::chan configure $chan -blocking]
::chan configure $chan -blocking 0
try {
set result [::coroutine::auto::core_gets $chan line]
::coroutine::auto::core_gets $chan line
} on error {result opts} {
::chan configure $chan -blocking $blocking
return -code $result -options $opts
}
if {[::chan blocked $chan]} {
::chan event $chan readable [list [info coroutine]]
|
︙ | | |
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
|
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
|
-
+
-
+
|
# Loop until eof.
while {1} {
set blocking [::chan configure $chan -blocking]
::chan configure $chan -blocking 0
try {
set result [::coroutine::auto::core_read $chan]
::coroutine::auto::core_read $chan
} on error {result opts} {
::chan configure $chan -blocking $blocking
return -code $result -options $opts
}
if {[::chan blocked $chan]} {
if {[fblocked $chan]} {
::chan event $chan readable [list [info coroutine]]
yield
::chan event $chan readable {}
} else {
::chan configure $chan -blocking $blocking
append buf $result
|
︙ | | |
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
|
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
|
-
+
|
set left $total
while {1} {
set blocking [::chan configure $chan -blocking]
::chan configure $chan -blocking 0
try {
set result [::coroutine::auto::core_read $chan $left]
::coroutine::auto::core_read $chan $left
} on error {result opts} {
::chan configure $chan -blocking $blocking
return -code $result -options $opts
}
if {[::chan blocked $chan]} {
::chan event $chan readable [list [info coroutine]]
|
︙ | | |
306
307
308
309
310
311
312
313
314
|
306
307
308
309
310
311
312
313
314
|
-
+
|
return
} ::coroutine::auto}
# # ## ### ##### ######## #############
## Ready
package provide coroutine::auto 1.1.2
package provide coroutine::auto 1.1.1
return
|
Changes to modules/coroutine/coroutine.tcl.
1
2
3
4
5
6
7
8
9
10
11
12
|
1
2
3
4
5
6
7
8
9
10
11
12
|
-
+
|
## -- Tcl Module -- -*- tcl -*-
# # ## ### ##### ######## #############
# @@ Meta Begin
# Package coroutine 1.1.1
# Package coroutine 1
# Meta platform tcl
# Meta require {Tcl 8.6}
# Meta license BSD
# Meta as::author {Andreas Kupries}
# Meta as::author {Colin Macleod}
# Meta as::author {Colin McCormack}
# Meta as::author {Donal Fellows}
|
︙ | | |
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
-
+
|
# Meta description coroutine::auto, which intercepts
# Meta description the relevant builtin commands and changes
# Meta description their implementation dependending on the
# Meta description context they are run in, i.e. inside or
# Meta description outside of a coroutine.
# @@ Meta End
# Copyright (c) 2009,2014 Andreas Kupries
# Copyright (c) 2009 Andreas Kupries
# Copyright (c) 2009 Colin Macleod
# Copyright (c) 2009 Colin McCormack
# Copyright (c) 2009 Donal Fellows
# Copyright (c) 2009 Kevin Kenny
# Copyright (c) 2009 Neil Madden
# Copyright (c) 2009 Peter Spjuth
|
︙ | | |
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
|
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
|
-
+
|
# where necessary. During
while {1} {
set blocking [::chan configure $chan -blocking]
::chan configure $chan -blocking 0
try {
set result [::chan gets $chan line]
::chan gets $chan line
} on error {result opts} {
::chan configure $chan -blocking $blocking
return -code $result -options $opts
}
if {[::chan blocked $chan]} {
::chan event $chan readable [list [info coroutine]]
|
︙ | | |
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
|
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
|
-
+
-
+
|
# Loop until eof.
while {1} {
set blocking [::chan configure $chan -blocking]
::chan configure $chan -blocking 0
try {
set result [::chan read $chan]
::chan read $chan
} on error {result opts} {
::chan configure $chan -blocking $blocking
return -code $result -options $opts
}
if {[::chan blocked $chan]} {
if {[fblocked $chan]} {
::chan event $chan readable [list [info coroutine]]
yield
::chan event $chan readable {}
} else {
::chan configure $chan -blocking $blocking
append buf $result
|
︙ | | |
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
|
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
|
-
+
|
set left $total
while {1} {
set blocking [::chan configure $chan -blocking]
::chan configure $chan -blocking 0
try {
set result [::chan read $chan $left]
::chan read $chan $left
} on error {result opts} {
::chan configure $chan -blocking $blocking
return -code $result -options $opts
}
if {[::chan blocked $chan]} {
::chan event $chan readable [list [info coroutine]]
|
︙ | | |
369
370
371
372
373
374
375
376
377
|
369
370
371
372
373
374
375
376
377
|
-
+
|
namespace eval ::coroutine::util {
#checker exclude warnShadowVar
variable counter 0
}
# # ## ### ##### ######## #############
## Ready
package provide coroutine 1.1.1
package provide coroutine 1.1
return
|
Changes to modules/coroutine/pkgIndex.tcl.
1
2
3
|
1
2
3
|
-
+
|
if {![package vsatisfies [package provide Tcl] 8.6]} {return}
package ifneeded coroutine 1.1.1 [list source [file join $dir coroutine.tcl]]
package ifneeded coroutine 1.1 [list source [file join $dir coroutine.tcl]]
package ifneeded coroutine::auto 1.1.1 [list source [file join $dir coro_auto.tcl]]
|
Changes to modules/coroutine/tcllib_coroutine.man.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
-
-
+
-
+
-
+
|
[comment {-*- tcl -*- doctools manpage}]
[vset CORO_VERSION 1.1.1]
[manpage_begin coroutine n [vset CORO_VERSION]]
[manpage_begin coroutine n 1]
[keywords after]
[keywords channel]
[keywords coroutine]
[keywords events]
[keywords exit]
[keywords gets]
[keywords global]
[keywords {green threads}]
[keywords read]
[keywords threads]
[keywords update]
[keywords vwait]
[copyright {2010-2014 Andreas Kupries <[email protected]>}]
[copyright {2010-2011 Andreas Kupries <[email protected]>}]
[moddesc {Coroutine utilities}]
[category Coroutine]
[titledesc {Coroutine based event and IO handling}]
[require Tcl 8.6]
[require coroutine [vset CORO_VERSION]]
[require coroutine 1.1]
[description]
The [package coroutine] package provides coroutine-aware
implementations of various event- and channel related commands. It can
be in multiple modes:
[list_begin enumerated]
|
︙ | | |
Changes to modules/crc/cksum.man.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
-
-
+
-
+
|
[vset CKSUM_VERSION 1.1.4]
[manpage_begin cksum n [vset CKSUM_VERSION]]
[manpage_begin cksum n 1.1.3]
[see_also crc32(n)]
[see_also sum(n)]
[keywords checksum]
[keywords cksum]
[keywords crc]
[keywords crc32]
[keywords {cyclic redundancy check}]
[keywords {data integrity}]
[keywords security]
[copyright {2002, Pat Thoyts}]
[moddesc {Cyclic Redundancy Checks}]
[titledesc {Calculate a cksum(1) compatible checksum}]
[category {Hashes, checksums, and encryption}]
[require Tcl 8.2]
[require cksum [opt [vset CKSUM_VERSION]]]
[require cksum [opt 1.1.3]]
[description]
[para]
This package provides a Tcl implementation of the cksum(1) algorithm
based upon information provided at in the GNU implementation of this
program as part of the GNU Textutils 2.0 package.
|
︙ | | |
Changes to modules/crc/cksum.tcl.
︙ | | |
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
-
+
|
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
# -------------------------------------------------------------------------
# $Id: cksum.tcl,v 1.11 2009/04/21 20:06:19 andreas_kupries Exp $
package require Tcl 8.2; # tcl minimum version
namespace eval ::crc {
variable cksum_version 1.1.4
variable cksum_version 1.1.3
namespace export cksum
variable cksum_tbl [list 0x0 \
0x04C11DB7 0x09823B6E 0x0D4326D9 0x130476DC 0x17C56B6B \
0x1A864DB2 0x1E475005 0x2608EDB8 0x22C9F00F 0x2F8AD6D6 \
0x2B4BCB61 0x350C9B64 0x31CD86D3 0x3C8EA00A 0x384FBDBD \
|
︙ | | |
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
-
-
+
|
0xCC2B1D17 0xC8EA00A0 0xD6AD50A5 0xD26C4D12 0xDF2F6BCB \
0xDBEE767C 0xE3A1CBC1 0xE760D676 0xEA23F0AF 0xEEE2ED18 \
0xF0A5BD1D 0xF464A0AA 0xF9278673 0xFDE69BC4 0x89B8FD09 \
0x8D79E0BE 0x803AC667 0x84FBDBD0 0x9ABC8BD5 0x9E7D9662 \
0x933EB0BB 0x97FFAD0C 0xAFB010B1 0xAB710D06 0xA6322BDF \
0xA2F33668 0xBCB4666D 0xB8757BDA 0xB5365D03 0xB1F740B4 ]
variable uid
if {![info exists uid]} {set uid 0}
variable uid ; if {![info exists uid]} {set uid 0}
}
# crc::CksumInit --
#
# Create and initialize a cksum context. This is cleaned up when we
# call CksumFinal to obtain the result.
#
|
︙ | | |
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
-
+
-
-
-
-
-
-
-
+
+
+
+
+
+
-
+
-
|
proc ::crc::CksumUpdate {token data} {
variable cksum_tbl
upvar #0 $token state
set t $state(t)
binary scan $data c* r
foreach {n} $r {
set index [expr { (($t >> 24) ^ ($n & 0xFF)) & 0xFF }]
set t [expr {($t << 8)
# Since the introduction of built-in bigInt support with Tcl
# 8.5, bit-shifting $t to the left no longer overflows,
# keeping it 32 bits long. The value grows bigger and bigger
# instead - a severe hit on performance. For this reason we
# do a bitwise AND against 0xFFFFFFFF at each step to keep the
# value within limits.
set t [expr {0xFFFFFFFF & (($t << 8) ^ [lindex $cksum_tbl $index])}]
^ [lindex $cksum_tbl [expr {
(($t >> 24) \
^ ($n & 0xFF)) & 0xFF
}]]}]
incr state(l)
}
set state(t) $t
return
}
proc ::crc::CksumFinal {token} {
variable cksum_tbl
upvar #0 $token state
set t $state(t)
for {set i $state(l)} {$i > 0} {set i [expr {$i>>8}]} {
set t [expr {($t << 8) \
^ [lindex $cksum_tbl \
set index [expr {(($t >> 24) ^ $i) & 0xFF}]
[expr {(($t >> 24) ^ $i) & 0xFF}]]}]
set t [expr {0xFFFFFFFF & (($t << 8) ^ [lindex $cksum_tbl $index])}]
}
unset state
return [expr {~$t & 0xFFFFFFFF}]
}
# crc::Pop --
#
|
︙ | | |
Changes to modules/crc/pkgIndex.tcl.
1
2
3
4
5
|
1
2
3
4
5
|
-
+
-
+
|
if {![package vsatisfies [package provide Tcl] 8.2]} {return}
package ifneeded cksum 1.1.4 [list source [file join $dir cksum.tcl]]
package ifneeded cksum 1.1.3 [list source [file join $dir cksum.tcl]]
package ifneeded crc16 1.1.2 [list source [file join $dir crc16.tcl]]
package ifneeded crc32 1.3.1 [list source [file join $dir crc32.tcl]]
package ifneeded sum 1.1.1 [list source [file join $dir sum.tcl]]
package ifneeded sum 1.1.0 [list source [file join $dir sum.tcl]]
|
Changes to modules/crc/sum.man.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
-
-
+
-
+
|
[vset SUM_VERSION 1.1.1]
[manpage_begin sum n [vset SUM_VERSION]]
[manpage_begin sum n 1.1.0]
[see_also cksum(n)]
[see_also crc32(n)]
[see_also sum(1)]
[keywords checksum]
[keywords cksum]
[keywords crc]
[keywords crc32]
[keywords {cyclic redundancy check}]
[keywords {data integrity}]
[keywords security]
[keywords sum]
[copyright {2002, Pat Thoyts <[email protected]>}]
[moddesc {Cyclic Redundancy Checks}]
[titledesc {Calculate a sum(1) compatible checksum}]
[category {Hashes, checksums, and encryption}]
[require Tcl 8.2]
[require sum [opt [vset SUM_VERSION]]]
[require sum [opt 1.1.0]]
[description]
[para]
This package provides a Tcl-only implementation of the sum(1) command
which calculates a 16 bit checksum value from the input data. The BSD
sum algorithm is used by default but the SysV algorithm is also
available.
|
︙ | | |
Changes to modules/crc/sum.tcl.
︙ | | |
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
-
+
|
package require Tcl 8.2; # tcl minimum version
catch {package require tcllibc}; # critcl enhancements to tcllib
#catch {package require crcc}; # critcl enhanced crc module
namespace eval ::crc {
variable sum_version 1.1.1
variable sum_version 1.1.0
namespace export sum
variable uid
if {![info exists uid]} {
set uid 0
}
}
|
︙ | | |
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
-
+
|
#
proc ::crc::SumSysV {s {seed 0}} {
set t $seed
binary scan $s c* r
foreach n $r {
incr t [expr {$n & 0xFF}]
}
return [expr {$t & 0xFFFF}]
return [expr {$t % 0xFFFF}]
}
# -------------------------------------------------------------------------
# Description:
# This algorithm is similar to the SysV version but includes a bit rotation
# step which provides a dependency on the order of the data values.
#
|
︙ | | |
Changes to modules/crc/sum.test.
︙ | | |
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
-
-
+
+
-
-
-
+
+
+
+
-
-
-
+
+
+
+
|
# -------------------------------------------------------------------------
source [file join \
[file dirname [file dirname [file join [pwd] [info script]]]] \
devtools testutilities.tcl]
testsNeedTcl 8.4
testsNeedTcltest 2.0
testsNeedTcl 8.2
testsNeedTcltest 1.0
testing {
useLocal sum.tcl sum ::crc
}
# -------------------------------------------------------------------------
if {[info command ::crc::SumBsd_c] == {}} {
puts "> pure tcl"
} else {
puts "> critcl based"
}
# -------------------------------------------------------------------------
test sum-1.0 {sum with no parameters} -body {
::crc::sum
} -returnCodes error -result {wrong # args: should be "sum ?-bsd|-sysv? ?-format string? ?-chunksize size? ?-timeout ms? -file name | -channel chan | data"}
test sum-1.0 {sum with no parameters } {
list [catch {::crc::sum} result] \
[string match "wrong \# args: *" $result]
} {1 1}
test sum-1.1 {sum with incorrect parameters} -body {
::crc::sum -zxcv
} -returnCodes error -result {bad option -zxcv: must be one of -bsd, -channel, -chunksize, -filename, -format, -sysv, -timeout}
test sum-1.1 {sum with incorrect parameters } {
list [catch {::crc::sum -zxcv} result] \
[string match "bad option -zxcv: *" $result]
} {1 1}
# -------------------------------------------------------------------------
foreach {n msg expected} {
1 ""
"0"
2 "a"
|
︙ | | |
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
-
+
-
+
|
7 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
"25587"
8 "12345678901234567890123456789012345678901234567890123456789012345678901234567890"
"21845"
9 "\uFFFE\u0000\u0001\u0002"
"16418"
} {
test sum-2.$n {sum using BSD algorithm and unsigned integer} -body {
test sum-2.$n {sum using BSD algorithm and unsigned integer} {
::crc::sum -bsd $msg
} -result $expected
} $expected
}
# -------------------------------------------------------------------------
foreach {n msg expected} {
1 ""
"0"
2 "a"
|
︙ | | |
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
|
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
|
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
|
7 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
"5387"
8 "12345678901234567890123456789012345678901234567890123456789012345678901234567890"
"4200"
9 "\uFFFE\u0000\u0001\u0002"
"257"
} {
test sum-3.$n {sum using SysV algorithm and unsigned integer} -body {
test sum-3.$n {sum using SysV algorithm and unsigned integer} {
::crc::sum -sysv $msg
} -result $expected
} $expected
}
# -------------------------------------------------------------------------
set crc::testfile [info script]
proc ::crc::loaddata {filename} {
set f [open $filename r]
fconfigure $f -translation binary
set data [read $f]
close $f
return $data
}
test sum-4.0 {sum file option (BSD)} -body {
test sum-4.0 {sum file option (BSD)} {
set r1 [::crc::sum -bsd -file $::crc::testfile]
set r2 [::crc::sum -bsd [::crc::loaddata $::crc::testfile]]
if {$r1 != $r2} {
set r "differing results: $r1 != $r2"
} else {
set r ok
}
} -result ok
} {ok}
test sum-4.1 {sum file option (SysV)} -body {
test sum-4.1 {sum file option (SysV)} {
set r1 [::crc::sum -sysv -file $::crc::testfile]
set r2 [::crc::sum -sysv [::crc::loaddata $crc::testfile]]
if {$r1 != $r2} {
set r "differing results: $r1 != $r2"
} else {
set r ok
}
} -result ok
} {ok}
test sum-4.2 {sum -channel option (BSD)} -body {
test sum-4.2 {sum -channel option (BSD)} {
set r1 [::crc::sum -bsd [::crc::loaddata $::crc::testfile]]
set f [open $::crc::testfile r]
fconfigure $f -translation binary
set r2 [::crc::sum -bsd -channel $f]
close $f
if {$r1 != $r2} {
set r "differing results: $r1 != $r2"
} else {
set r ok
}
} -result ok
} {ok}
test sum-4.3 {sum -channel option (SysV)} -body {
test sum-4.3 {sum -channel option (SysV)} {
set r1 [::crc::sum -sysv -file $::crc::testfile]
set f [open $::crc::testfile r]
fconfigure $f -translation binary
set r2 [::crc::sum -sysv -channel $f]
close $f
if {$r1 != $r2} {
set r "differing results: $r1 != $r2"
} else {
set r ok
}
} -result ok
} {ok}
# -------------------------------------------------------------------------
test sum-5.0 {sum format option (BSD)} -body {
test sum-5.0 {sum format option (BSD)} {
::crc::sum -bsd -format 0x%X [string repeat x 200]
} -result 0xF8EE
} {0xF8EE}
test sum-5.1 {sum format option (SysV)} -body {
test sum-5.1 {sum format option (SysV)} {
::crc::sum -sysv -format 0x%X [string repeat x 200]
} -result 0x5DC0
# -------------------------------------------------------------------------
# ticket a80e60deb1 vectors - data over 1 KB length.
foreach {n expected base count} {
0 58624 a 1280
1 11008 fx 640
2 62976 \xfe 1280
} {
} {0x5DC0}
test sum-6.$n {sum (sysv) over 1 K} -body {
crc::sum -sysv -- [string repeat $base $count]
} -result $expected
}
# -------------------------------------------------------------------------
catch {unset ::crc::testfile}
testsuiteCleanup
# Local Variables:
# mode: tcl
# indent-tabs-mode: nil
# End:
|
Changes to modules/debug/debug.man.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
-
+
-
+
-
+
|
[comment {-*- tcl -*- doctools manpage}]
[vset PACKAGE_VERSION 1.0.5]
[vset PACKAGE_VERSION 1.0.2]
[manpage_begin debug n [vset PACKAGE_VERSION]]
[keywords debug]
[keywords log]
[keywords narrative]
[keywords trace]
[copyright {200?, Colin McCormack, Wub Server Utilities}]
[copyright {2012-2014, Andreas Kupries <[email protected]>}]
[copyright {2012, Andreas Kupries <[email protected]>}]
[moddesc {debug narrative}]
[titledesc {debug narrative - core}]
[category {debugging, tracing, and logging}]
[require Tcl 8.5]
[require debug [opt [vset PACKAGE_VERSION]]]
[description]
Debugging areas of interest are represented by 'tags' which have
independently settable levels of interest (an integer, higher is more
detailed).
[section API]
[list_begin definitions]
[comment {= = == === ===== ======== ============= =====================}]
[call [cmd debug.[var tag]] [arg message] [opt [arg level]]]
For each known tag the package creates a command with this signature
For each known tag the package creates a command with this signatur
the user can then use to provide the debug narrative of the tag.
The narrative [arg message] is provided as a Tcl script whose value is
[cmd subst]ed in the caller's scope if and only if the current level of
interest for the [arg tag] matches or exceeds the call's [arg level]
of detail. This is useful, as one can place arbitrarily complex
narrative in code without unnecessarily evaluating it.
|
︙ | | |
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
|
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
|
This is a convenience method formatting the dictionary similarly to
how the builtin command [cmd parray] does for array, and returns the
resulting string.
[para] This makes it suitable for use in debug messages.
[comment {= = == === ===== ======== ============= =====================}]
[call [cmd debug] [method hexl] [arg data] [opt [arg prefix]]]
This is a convenience method formatting arbitrary data into a hex-dump
and returns the resulting string.
[para] This makes it suitable for use in debug messages.
[para] Each line of the dump is prefixed with [arg prefix]. This prefix
defaults to the empty string.
[comment {= = == === ===== ======== ============= =====================}]
[call [cmd debug] [method nl]]
This is a convenience method to insert a linefeed character (ASCII 0x0a)
into a debug message.
[comment {= = == === ===== ======== ============= =====================}]
[call [cmd debug] [method tab]]
This is a convenience method to insert a TAB character (ASCII 0x09)
into a debug message.
[comment {= = == === ===== ======== ============= =====================}]
[call [cmd debug] [method prefix] [arg tag] [opt [arg text]]]
This method is similar to the method [method header] above, in that it
defines [cmd subst]able Tcl script which provides more text for debug
messages.
|
︙ | | |
Changes to modules/debug/debug.tcl.
︙ | | |
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
-
+
-
|
## Requisites
package require Tcl 8.5
namespace eval ::debug {
namespace export -clear \
define on off prefix suffix header trailer \
names 2array level setting parray pdict \
names 2array level setting parray pdict
nl tab hexl
namespace ensemble create -subcommands {}
}
# # ## ### ##### ######## ############# #####################
## API & Implementation
proc ::debug::noop {args} {}
|
︙ | | |
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
|
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
|
-
+
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
|
interp alias {} debug.$tag {} ::debug::noop
}
}
return
}
# # ## ### ##### ######## ############# #####################
## Convenience commands.
## Convenience command. Format an array as multi-line message.
# Format arrays and dicts as multi-line message.
# Insert newlines and tabs.
proc ::debug::nl {} { return \n }
proc ::debug::tab {} { return \t }
proc ::debug::parray {a {pattern *}} {
upvar 1 $a array
if {![array exists array]} {
error "\"$a\" isn't an array"
}
pdict [array get array] $pattern
}
proc ::debug::pdict {dict {pattern *}} {
set maxl 0
set names [lsort -dict [dict keys $dict $pattern]]
foreach name $names {
if {[string length $name] > $maxl} {
set maxl [string length $name]
}
}
set maxl [expr {$maxl + 2}]
set lines {}
foreach name $names {
set nameString [format (%s) $name]
set nameString [format %s(%s) $name]
lappend lines [format "%-*s = %s" \
$maxl $nameString \
[dict get $dict $name]]
}
return [join $lines \n]
}
proc ::debug::hexl {data {prefix {}}} {
set r {}
# Convert the data to hex and to characters.
binary scan $data H*@0a* hexa asciia
# Replace non-printing characters in the data with dots.
regsub -all -- {[^[:graph:] ]} $asciia {.} asciia
# Pad with spaces to a full multiple of 32/16.
set n [expr {[string length $hexa] % 32}]
if {$n < 32} { append hexa [string repeat { } [expr {32-$n}]] }
#puts "pad H [expr {32-$n}]"
set n [expr {[string length $asciia] % 32}]
if {$n < 16} { append asciia [string repeat { } [expr {16-$n}]] }
#puts "pad A [expr {32-$n}]"
# Reassemble formatted, in groups of 16 bytes/characters.
# The hex part is handled in groups of 32 nibbles.
set addr 0
while {[string length $hexa]} {
# Get front group of 16 bytes each.
set hex [string range $hexa 0 31]
set ascii [string range $asciia 0 15]
# Prep for next iteration
set hexa [string range $hexa 32 end]
set asciia [string range $asciia 16 end]
# Convert the hex to pairs of hex digits
regsub -all -- {..} $hex {& } hex
# Add the hex and latin-1 data to the result buffer
append r $prefix [format %04x $addr] { | } $hex { |} $ascii |\n
incr addr 16
}
# And done
return $r
}
# # ## ### ##### ######## ############# #####################
namespace eval debug {
variable detail ; # map: TAG -> level of interest
variable prefix ; # map: TAG -> message prefix to use
variable suffix ; # map: TAG -> message suffix to use
variable fds ; # map: TAG -> handle of open channel to log to.
variable header {} ; # per-line heading, subst'ed
variable trailer {} ; # per-line ending, subst'ed
# Notes:
# - The tag '::' is reserved. "prefix" and "suffix" use it to store
# the global message prefix / suffix.
# - prefix and suffix are applied per message.
# - header and trailer are per line. And should not generate multiple lines!
}
# # ## ### ##### ######## ############# #####################
## Ready
package provide debug 1.0.5
package provide debug 1.0.2
return
|
Changes to modules/debug/pkgIndex.tcl.
1
2
3
4
5
|
1
2
3
4
5
|
-
+
|
if {![package vsatisfies [package require Tcl] 8.5]} return
package ifneeded debug 1.0.5 [list source [file join $dir debug.tcl]]
package ifneeded debug 1.0.2 [list source [file join $dir debug.tcl]]
package ifneeded debug::heartbeat 1 [list source [file join $dir heartbeat.tcl]]
package ifneeded debug::timestamp 1 [list source [file join $dir timestamp.tcl]]
package ifneeded debug::caller 1 [list source [file join $dir caller.tcl]]
|
Changes to modules/dns/dns.tcl.
︙ | | |
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
-
+
|
package require Tcl 8.2; # tcl minimum version
package require logger; # tcllib 1.3
package require uri; # tcllib 1.1
package require uri::urn; # tcllib 1.2
package require ip; # tcllib 1.7
namespace eval ::dns {
variable version 1.3.4
variable version 1.3.3
variable rcsid {$Id: dns.tcl,v 1.36 2008/11/22 12:28:54 mic42 Exp $}
namespace export configure resolve name address cname \
status reset wait cleanup errorcode
variable options
if {![info exists options]} {
|
︙ | | |
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
|
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
|
-
-
-
+
+
+
-
+
-
+
-
-
+
+
-
+
|
# dns://nameserver/target?type=A
#
# URI quoting to be accounted for.
#
catch {
uri::register {dns} {
variable escape [set [namespace parent [namespace current]]::basic::escape]
variable host [set [namespace parent [namespace current]]::basic::host]
variable hostOrPort [set [namespace parent [namespace current]]::basic::hostOrPort]
set escape [set [namespace parent [namespace current]]::basic::escape]
set host [set [namespace parent [namespace current]]::basic::host]
set hostOrPort [set [namespace parent [namespace current]]::basic::hostOrPort]
variable class [string map {* \\\\*} \
set class [string map {* \\\\*} \
"class=([join [array names ::dns::classes] {|}])"]
variable type [string map {* \\\\*} \
set type [string map {* \\\\*} \
"type=([join [array names ::dns::types] {|}])"]
variable classOrType "(?:${class}|${type})"
variable classOrTypeSpec "(?:${class}|${type})(?:;(?:${class}|${type}))?"
set classOrType "(?:${class}|${type})"
set classOrTypeSpec "(?:${class}|${type})(?:;(?:${class}|${type}))?"
variable query "${host}(${classOrTypeSpec})?"
set query "${host}(${classOrTypeSpec})?"
variable schemepart "(//${hostOrPort}/)?(${query})"
variable url "dns:$schemepart"
}
}
namespace eval ::uri {} ;# needed for pkg_mkIndex.
|
︙ | | |
Changes to modules/dns/ip.tcl.
︙ | | |
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
-
+
|
# $Id: ip.tcl,v 1.14 2010/08/16 17:35:18 andreas_kupries Exp $
# @mdgen EXCLUDE: ipMoreC.tcl
package require Tcl 8.2; # tcl minimum version
namespace eval ip {
variable version 1.2.2
variable version 1.2.1
variable rcsid {$Id: ip.tcl,v 1.14 2010/08/16 17:35:18 andreas_kupries Exp $}
namespace export is version normalize equal type contract mask collapse subtract
#catch {namespace ensemble create}
variable IPv4Ranges
if {![info exists IPv4Ranges]} {
|
︙ | | |
Changes to modules/dns/ip.test.
︙ | | |
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
|
223
224
225
226
227
228
229
230
231
232
233
234
235
236
|
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
|
3 255.0.0.0 8 8 0xff000000 8
4 0.0.0.0 0 9 0x00000000 0
} {
test ip-11.$i "maskToLength, $m" {
ip::maskToLength $m
} $e
}
# -------------------------------------------------------------------------
foreach {i ip e} {
0 0.0.0.0 0
1 0.0.0.1 1
2 0.0.1.0 256
3 0.1.0.0 65536
4 1.0.0.0 16777216
5 0.0.0.255 255
6 0.0.255.0 65280
7 0.255.0.0 16711680
8 255.0.0.0 4278190080
9 255.255.255.255 4294967295
} {
test ip-12.$i "toInteger $ip" {
ip::toInteger $ip
} $e
}
# -------------------------------------------------------------------------
foreach {i pma e} {
0 {1.1.1.1 24} 1.1.2.1/0
1 {1.1.1.1 24 0} 1.1.1.1/0
2 {1.1.1.1 24 1} 1.1.2.1/0
3 {1.1.1.1 24 2} 1.1.3.1/0
} {
test ip-13.$i "nextNet $pma" {
ip::nativeToPrefix [eval ip::nextNet $pma]
} $e
}
# -------------------------------------------------------------------------
testsuiteCleanup
# Local Variables:
# mode: tcl
|
︙ | | |
Changes to modules/dns/ipMore.tcl.
︙ | | |
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
|
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
|
-
+
|
#
# See Also:
#
# End of Header
proc ::ip::toInteger {ip} {
binary scan [ip::Normalize4 $ip] I out
return [format %u [expr {$out & 0xffffffff}]]
return $out
}
##Procedure Header
# Copyright (c) 2004 Cisco Systems, Inc.
#
# Name:
# ::ip::toHex
|
︙ | | |
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
|
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
|
-
-
+
+
+
|
}
}
if {![string is integer -strict $prefix]} {
set prefix [toInteger $prefix]
}
if {![string is integer -strict $mask] || ($mask < 33 && $mask > 0)} {
set mask [maskToInt $mask]
}
set prefix [expr {$prefix + ((($mask ^ 0xFFffFFff) + 1) * $count) }]
}
set prefix [expr $prefix + ($mask ^ 0xFFffFFff) + $count ]
return [format "0x%08x" $prefix]
}
##Procedure Header
# Copyright (c) 2004 Cisco Systems, Inc.
#
|
︙ | | |
Changes to modules/dns/pkgIndex.tcl.
1
2
3
4
5
6
7
8
9
|
1
2
3
4
5
6
7
8
9
|
-
+
-
+
|
# pkgIndex.tcl -
#
# $Id: pkgIndex.tcl,v 1.21 2010/08/16 17:35:18 andreas_kupries Exp $
if {![package vsatisfies [package provide Tcl] 8.2]} {return}
package ifneeded dns 1.3.4 [list source [file join $dir dns.tcl]]
package ifneeded dns 1.3.3 [list source [file join $dir dns.tcl]]
package ifneeded resolv 1.0.3 [list source [file join $dir resolv.tcl]]
package ifneeded ip 1.2.2 [list source [file join $dir ip.tcl]]
package ifneeded ip 1.2.1 [list source [file join $dir ip.tcl]]
package ifneeded spf 1.1.1 [list source [file join $dir spf.tcl]]
|
Changes to modules/dns/tcllib_dns.man.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
-
-
+
-
+
|
[vset DNS_VERSION 1.3.4]
[manpage_begin dns n [vset DNS_VERSION]]
[manpage_begin dns n 1.3.3]
[see_also resolver(5)]
[keywords DNS]
[keywords {domain name service}]
[keywords resolver]
[keywords {rfc 1034}]
[keywords {rfc 1035}]
[keywords {rfc 1886}]
[copyright {2002, Pat Thoyts}]
[moddesc {Domain Name Service}]
[titledesc {Tcl Domain Name Service Client}]
[category Networking]
[require Tcl 8.2]
[require dns [opt [vset DNS_VERSION]]]
[require dns [opt 1.3.3]]
[description]
[para]
The dns package provides a Tcl only Domain Name Service client. You
should refer to (1) and (2) for information about the DNS protocol or
read resolver(3) to find out how the C library resolves domain names.
|
︙ | | |
Changes to modules/dns/tcllib_ip.man.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
-
-
+
-
+
|
[vset IP_VERSION 1.2.2]
[manpage_begin tcllib_ip n [vset IP_VERSION]]
[manpage_begin tcllib_ip n 1.2.1]
[see_also inet(3)]
[see_also ip(7)]
[see_also ipv6(7)]
[keywords {internet address}]
[keywords ip]
[keywords ipv4]
[keywords ipv6]
[keywords {rfc 3513}]
[copyright {2004, Pat Thoyts}]
[copyright {2005 Aamer Akhter <[email protected]>}]
[moddesc {Domain Name Service}]
[titledesc {IPv4 and IPv6 address manipulation}]
[category Networking]
[require Tcl 8.2]
[require ip [opt [vset IP_VERSION]]]
[require ip [opt 1.2.1]]
[description]
[para]
This package provides a set of commands to help in parsing, displaying
and comparing internet addresses. The package can handle both IPv4 (1)
and IPv6 (2) address types.
|
︙ | | |
Changes to modules/doctools/checker.tcl.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
-
+
|
# -*- tcl -*-
# checker.tcl
#
# Code used inside of a checker interpreter to ensure correct usage of
# doctools formatting commands.
#
# Copyright (c) 2003-2014 Andreas Kupries <[email protected]>
# Copyright (c) 2003-2010 Andreas Kupries <[email protected]>
# L10N
package require msgcat
proc ::msgcat::mcunknown {locale code} {
return "unknown error code \"$code\" (for locale $locale)"
|
︙ | | |
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
|
248
249
250
251
252
253
254
255
256
257
258
259
260
261
|
-
-
-
|
# Variable handling ...
proc vset {var args} {
switch -exact -- [llength $args] {
0 {
# Retrieve contents of variable VAR
upvar #0 __$var data
if {![info exists data]} {
return -code error "can't read doc variable \"$var\": not set"
}
return $data
}
1 {
# Set contents of variable VAR
global __$var
set __$var [lindex $args 0]
return "" ; # Empty string ! Nothing for output.
|
︙ | | |
Changes to modules/doctools/doctools.man.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
-
-
+
-
+
-
+
|
[comment {-*- tcl -*- doctools manpage}]
[vset PACKAGE_VERSION 1.4.18]
[manpage_begin doctools n [vset PACKAGE_VERSION]]
[manpage_begin doctools n 1.4.16]
[see_also doctools_intro]
[see_also doctools_lang_cmdref]
[see_also doctools_lang_intro]
[see_also doctools_lang_syntax]
[see_also doctools_plugin_apiref]
[keywords conversion]
[keywords documentation]
[keywords HTML]
[keywords manpage]
[keywords markup]
[keywords nroff]
[keywords TMML]
[copyright {2003-2014 Andreas Kupries <[email protected]>}]
[copyright {2003-2013 Andreas Kupries <[email protected]>}]
[moddesc {Documentation tools}]
[titledesc {doctools - Processing documents}]
[category {Documentation tools}]
[require Tcl 8.2]
[require doctools [opt [vset PACKAGE_VERSION]]]
[require doctools [opt 1.4.16]]
[description]
This package provides a class for the creation of objects able to
process and convert text written in the [term doctools] markup
language into any output format X for which a
[term {formatting engine}] is available.
|
︙ | | |
Changes to modules/doctools/doctools.tcl.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
-
+
+
+
|
# doctools.tcl --
#
# Implementation of doctools objects for Tcl.
#
# Copyright (c) 2003-2014 Andreas Kupries <[email protected]>
# Copyright (c) 2003-2013 Andreas Kupries <[email protected]>
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
# RCS: @(#) $Id: doctools.tcl,v 1.45 2011/02/23 22:11:59 andreas_kupries Exp $
package require Tcl 8.2
package require textutil::expander
# @mdgen OWNER: api.tcl
# @mdgen OWNER: checker.tcl
# @mdgen OWNER: mpformats/*.tcl
|
︙ | | |
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
|
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
|
-
-
+
-
-
+
-
+
-
-
-
+
-
-
-
+
-
-
+
-
-
+
|
if {!$ex_ok} {SetupExpander $name}
if {$chk_ip == ""} {SetupChecker $name}
# assert (format_ip != "")
set warnings [list]
if {[catch {$format_ip eval fmt_initialize}]} {
return -code error -errorcode {DOCTOOLS ENGINE} \
"Could not initialize engine"
return -code error "Could not initialize engine"
}
set result ""
for {
set p $passes ; set n 1
} {
$p > 0
} {
incr p -1 ; incr n
} {
if {[catch {$format_ip eval [list fmt_setup $n]}]} {
catch {$format_ip eval fmt_shutdown}
return -code error -errorcode {DOCTOOLS ENGINE} \
"Could not initialize pass $n of engine"
return -code error "Could not initialize pass $n of engine"
}
$chk_ip eval ck_initialize $n
if {[catch {set result [$expander expand $text]} msg]} {
catch {$format_ip eval fmt_shutdown}
# Filter for checker errors and reduce them to the essential message.
if {![regexp {^Error in} $msg]} {
if {![regexp {^Error in} $msg]} {return -code error $msg}
return -code error -errorcode {DOCTOOLS INPUT} $msg
}
#set msg [join [lrange [split $msg \n] 2 end]]
if {![regexp {^--> \(FmtError\) } $msg]} {
if {![regexp {^--> \(FmtError\) } $msg]} {return -code error "Doctools $msg"}
return -code error -errorcode {DOCTOOLS INPUT} "Doctools $msg"
}
set msg [lindex [split $msg \n] 0]
regsub {^--> \(FmtError\) } $msg {} msg
return -code error -errorcode {DOCTOOLS INPUT} $msg
return -code error $msg
}
$chk_ip eval ck_complete
}
if {[catch {set result [$format_ip eval [list fmt_postprocess $result]]}]} {
return -code error -errorcode {DOCTOOLS ENGINE} \
"Unable to post process final result"
return -code error "Unable to post process final result"
}
if {[catch {$format_ip eval fmt_shutdown}]} {
return -code error -errorcode {DOCTOOLS ENGINE} \
"Could not shut engine down"
return -code error "Could not shut engine down"
}
return $result
}
# ::doctools::_search --
#
|
︙ | | |
1352
1353
1354
1355
1356
1357
1358
1359
|
1346
1347
1348
1349
1350
1351
1352
1353
|
-
+
|
# => FOO/mpformats
#catch {search [file join $here lib doctools mpformats]}
#catch {search [file join [file dirname $here] lib doctools mpformats]}
catch {search [file join $here mpformats]}
}
package provide doctools 1.4.18
package provide doctools 1.4.17
|
Changes to modules/doctools/pkgIndex.tcl.
1
2
3
4
5
6
|
1
2
3
4
5
6
|
-
+
|
if {![package vsatisfies [package provide Tcl] 8.2]} {return}
package ifneeded doctools 1.4.18 [list source [file join $dir doctools.tcl]]
package ifneeded doctools 1.4.17 [list source [file join $dir doctools.tcl]]
package ifneeded doctools::toc 1.1.3 [list source [file join $dir doctoc.tcl]]
package ifneeded doctools::idx 1.0.4 [list source [file join $dir docidx.tcl]]
package ifneeded doctools::cvs 1 [list source [file join $dir cvs.tcl]]
package ifneeded doctools::changelog 1.1 [list source [file join $dir changelog.tcl]]
|
Changes to modules/dtplite/dtplite.tcl.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
-
+
-
+
|
# -*- tcl -*- \
# @@ Meta Begin
# Application dtplite 1.2
# Application dtplite 1.1
# Meta platform tcl
# Meta summary Lightweight DocTools Processor
# Meta description This application is a simple processor
# Meta description for documents written in the doctools
# Meta description markup language. It covers the most
# Meta description common use cases, but is not as
# Meta description configurable as its big brother dtp.
# Meta category Processing doctools documents
# Meta subject doctools doctoc docidx
# Meta require {doctools 1}
# Meta require {doctools::idx 1}
# Meta require {doctools::toc 1}
# Meta require fileutil
# Meta require textutil::repeat
# Meta author Andreas Kupries
# Meta license BSD
# @@ Meta End
package provide dtplite 1.2
package provide dtplite 1.1
# dtp lite - Lightweight DocTools Processor
# ======== = ==============================
#
# Use cases
# ---------
#
|
︙ | | |
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
|
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
|
-
+
-
+
|
proc ::dtplite::Usage {} {
global argv0
Print stderr "$argv0 wrong#args, expected:\
-o outputpath ?-merge? ?-ext ext?\
?-style file? ?-header file?\
?-footer file? ?-nav label url?...\
format inputpath"
return -code error -errorcode {DTPLITE STOP} {}
return -code error -errorcode STOP {}
}
proc ::dtplite::ArgError {text} {
global argv0
Print stderr "$argv0: $text"
return -code error -errorcode {DTPLITE STOP} {}
return -code error -errorcode STOP {}
}
proc ::dtplite::Print {args} {
variable print
set cmd [concat $print $args]
return [uplevel 1 $cmd]
}
|
︙ | | |
Changes to modules/dtplite/pkgIndex.tcl.
1
2
3
4
5
|
1
2
3
4
5
|
-
+
|
if {![package vsatisfies [package provide Tcl] 8.2]} {
# PRAGMA: returnok
return
}
package ifneeded dtplite 1.2 [list source [file join $dir dtplite.tcl]]
package ifneeded dtplite 1.1 [list source [file join $dir dtplite.tcl]]
|
Changes to modules/dtplite/pkg_dtplite.man.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
-
-
+
-
|
[comment {-*- tcl -*- doctools manpage}]
[vset PACKAGE_VERSION 1.2]
[manpage_begin dtplite n [vset PACKAGE_VERSION]]
[manpage_begin dtplite n 1.1]
[see_also {docidx introduction}]
[see_also {doctoc introduction}]
[see_also {doctools introduction}]
[keywords conversion]
[keywords docidx]
[keywords doctoc]
[keywords doctools]
[keywords HTML]
[keywords manpage]
[keywords markup]
[keywords nroff]
[keywords TMML]
[copyright {2004-2013 Andreas Kupries <[email protected]>}]
[titledesc {Lightweight DocTools Markup Processor}]
[moddesc {Documentation toolbox}]
[category {Documentation tools}]
[require dtplite [opt [vset PACKAGE_VERSION]]]
[description]
[para]
The application described by this document, [syscmd dtplite], is the
successor to the extremely simple [syscmd mpexpand]. Influenced in its
functionality by the [syscmd dtp] doctools processor it is much more
powerful than [syscmd mpexpand], yet still as easy to use; definitely
|
︙ | | |
Changes to modules/ftp/ftp.man.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
-
-
+
-
+
|
[comment {-*- tcl -*- doctools manpage}]
[vset PACKAGE_VERSION 2.4.13]
[manpage_begin ftp n [vset PACKAGE_VERSION]]
[manpage_begin ftp n 2.4.11]
[see_also ftpd]
[see_also mime]
[see_also pop3]
[see_also smtp]
[keywords ftp]
[keywords internet]
[keywords net]
[keywords {rfc 959}]
[moddesc {ftp client}]
[titledesc {Client-side tcl implementation of the ftp protocol}]
[category Networking]
[require Tcl 8.2]
[require ftp [opt [vset PACKAGE_VERSION]]]
[require ftp [opt 2.4.11]]
[description]
[para]
The ftp package provides the client side of the ftp protocol as
specified in RFC 959 ([uri http://www.rfc-editor.org/rfc/rfc959.txt]).
The package implements both active (default) and passive ftp sessions.
|
︙ | | |
Changes to modules/ftp/ftp.tcl.
︙ | | |
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
-
-
-
|
# Handle timeouts
#
# Arguments:
# -
#
proc ::ftp::Timeout {s} {
upvar ::ftp::ftp$s ftp
variable VERBOSE
if {$VERBOSE} { DisplayMsg $s Waiting|Timeout! }
after cancel $ftp(Wait)
set ftp(state.control) 1
DisplayMsg "" "Timeout of control connection after $ftp(Timeout) sec.!" error
Command $ftp(Command) timeout
return
|
︙ | | |
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
|
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
|
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
|
#
# Arguments:
# -
#
proc ::ftp::WaitOrTimeout {s} {
upvar ::ftp::ftp$s ftp
variable VERBOSE
set retvar 1
if { ![string length $ftp(Command)] && [info exists ftp(state.control)] } {
if {$VERBOSE} { DisplayMsg $s Waiting|$ftp(Timeout)|\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\# }
set ftp(Wait) [after [expr {$ftp(Timeout) * 1000}] [list [namespace current]::Timeout $s]]
vwait ::ftp::ftp${s}(state.control)
set retvar $ftp(state.control)
if {$VERBOSE} { DisplayMsg $s Waiting|Done|\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\# }
}
if {$ftp(Error) != ""} {
set errmsg $ftp(Error)
set ftp(Error) ""
DisplayMsg $s $errmsg error
}
if {$VERBOSE} { DisplayMsg $s Waiting|OK|$retvar }
return $retvar
}
#############################################################################
#
# WaitComplete --
#
# Transaction completed.
# Cancel execution of the delayed command declared in procedure WaitOrTimeout.
#
# Arguments:
# value - result of the transaction
# 0 ... Error
# 1 ... OK
#
proc ::ftp::WaitComplete {s value} {
variable VERBOSE
upvar ::ftp::ftp$s ftp
if {$VERBOSE} { DisplayMsg $s Waiting|Complete|$s|$value|\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\# }
if {![info exists ftp(Command)]} {
set ftp(state.control) $value
if {$VERBOSE} { DisplayMsg $s Waiting|Complete|Done/Command|$value|\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\# }
return $value
}
if { ![string length $ftp(Command)] && [info exists ftp(state.data)] } {
if {$VERBOSE} { DisplayMsg $s Waiting|State|\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\# }
vwait ::ftp::ftp${s}(state.data)
if {$VERBOSE} { DisplayMsg $s Waiting|State|Done|\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\# }
}
catch {after cancel $ftp(Wait)}
set ftp(state.control) $value
if {$VERBOSE} { DisplayMsg $s Waiting|OK|$ftp(state.control)|\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\# }
return $ftp(state.control)
}
#############################################################################
#
# PutsCtrlSocket --
#
|
︙ | | |
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
|
231
232
233
234
235
236
237
238
239
240
241
242
243
244
|
-
-
|
# the socket channel identifier.
proc ::ftp::StateHandler {s {sock ""}} {
upvar ::ftp::ftp$s ftp
variable DEBUG
variable VERBOSE
if {$VERBOSE} { DisplayMsg $s StateHandler/$s/$sock/================================================ }
# disable fileevent on control socket, enable it at the and of the state machine
# fileevent $ftp(CtrlSock) readable {}
# there is no socket (and no channel to get) if called from a procedure
set rc " "
set msgtext {}
|
︙ | | |
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
|
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
|
-
-
-
-
+
-
-
+
-
-
|
if {![string equal $ftp(State) "quit_sent"]} {
set ftp(Error) "Service not available!"
}
CloseDataConn $s
WaitComplete $s 0
Command $ftp(Command) terminated
catch {unset ftp(State)}
if {$VERBOSE} { DisplayMsg $s EOF/Control }
return
} else {
# Fix SF bug #466746: Incomplete line, do nothing.
if {$VERBOSE} { DisplayMsg $s Incomplete/Line }
return
}
}
if { $DEBUG } {
DisplayMsg $s "-> rc=\"$rc\" -> msgtext=\"$msgtext\" -> state=\"$ftp(State)\""
DisplayMsg $s "-> rc=\"$rc\"\n-> msgtext=\"$msgtext\"\n-> state=\"$ftp(State)\""
}
# In asynchronous mode, should we move on to the next state?
set nextState 0
# system status replay
if { [string equal $rc "211"] } {
if {$VERBOSE} { DisplayMsg $s Ignore/211 }
return
}
# use only the first digit
regexp -- "^\[0-9\]?" $rc rc
if {$VERBOSE} { DisplayMsg $s StateBegin////////($ftp(State)) }
switch -exact -- $ftp(State) {
user {
switch -exact -- $rc {
2 {
PutsCtrlSock $s "USER $ftp(User)"
set ftp(State) passwd
Command $ftp(Command) user
|
︙ | | |
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
|
534
535
536
537
538
539
540
541
542
543
544
545
546
547
|
-
-
-
-
|
}
}
}
list_close {
switch -exact -- $rc {
1 {}
2 {
# Sync control sequencer to active data connection
# before stepping out
WaitDataConn $s
set nextState 1
if {[info exists ftp(NextState)] && ![llength $ftp(NextState)]} {
Command $ftp(Command) list [ListPostProcess $ftp(List)]
} else {
set complete_with 1
}
}
|
︙ | | |
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
|
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
|
-
-
-
-
-
|
}
}
}
put_close {
switch -exact -- $rc {
1 {
# Keep going
if {$VERBOSE} { DisplayMsg $s put_close/1--continue }
return
}
2 {
# Sync control sequencer to active data connection
# before stepping out
WaitDataConn $s
set complete_with 1
set nextState 1
Command $ftp(Command) put $ftp(RemoteFilename)
}
default {
DisplayMsg $s "rc = $rc msgtext = \"$msgtext\""
set errmsg "Error storing file \"$ftp(RemoteFilename)\" due to \"$msgtext\""
|
︙ | | |
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
|
852
853
854
855
856
857
858
859
860
861
862
863
864
865
|
-
-
-
-
|
Command $ftp(Command) error $errmsg
}
}
}
append_close {
switch -exact -- $rc {
2 {
# Sync control sequencer to active data connection
# before stepping out
WaitDataConn $s
set complete_with 1
set nextState 1
Command $ftp(Command) append $ftp(RemoteFilename)
}
default {
set errmsg "Error storing file \"$ftp(RemoteFilename)\"!"
set complete_with 0
|
︙ | | |
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
|
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
|
-
+
|
set ftp(State) reget_sent
}
default {
if { [string equal $ftp(Mode) "passive"] } {
set errmsg "Error setting PASSIVE mode!"
} else {
set errmsg "Error setting port!"
}
}
set complete_with 0
Command $ftp(Command) error $errmsg
}
}
}
reget_sent {
switch -exact -- $rc {
|
︙ | | |
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
|
938
939
940
941
942
943
944
945
946
947
948
949
950
951
|
-
-
-
-
|
Command $ftp(Command) error $errmsg
}
}
}
reget_close {
switch -exact -- $rc {
2 {
# Sync control sequencer to active data connection
# before stepping out
WaitDataConn $s
set complete_with 1
set nextState 1
Command $ftp(Command) get $ftp(RemoteFilename):$ftp(From):$ftp(To)
unset ftp(From) ftp(To)
}
default {
set errmsg "Error retrieving file \"$ftp(RemoteFilename)\"!"
|
︙ | | |
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
|
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
|
-
-
-
-
|
Command $ftp(Command) error $errmsg
}
}
}
get_close {
switch -exact -- $rc {
2 {
# Sync control sequencer to active data connection
# before stepping out
WaitDataConn $s
set complete_with 1
set nextState 1
if {$ftp(inline)} {
upvar #0 $ftp(get:varname) returnData
set returnData $ftp(GetData)
Command $ftp(Command) get $ftp(GetData)
} else {
|
︙ | | |
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
|
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
|
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
|
}
}
default {
error "Unknown state \"$ftp(State)\""
}
}
if {$VERBOSE} { DisplayMsg $s ////////StateDone==>$ftp(State) }
# finish waiting
if { [info exists complete_with] } {
if {$VERBOSE} { DisplayMsg $s WaitBegin////////($complete_with) }
WaitComplete $s $complete_with
if {$VERBOSE} { DisplayMsg $s ////////WaitDone }
}
# display control channel message
if { [info exists buffer] } {
if { $VERBOSE } {
foreach line [split $buffer \n] {
DisplayMsg $s "C: $line" control
}
}
}
# Rather than throwing an error in the event loop, set the ftp(Error)
# variable to hold the message so that it can later be thrown after the
# the StateHandler has completed.
if { [info exists errmsg] } {
set ftp(Error) $errmsg
}
# If operating asynchronously, commence next state
if {$VERBOSE} {
DisplayMsg $s "ns=$nextState, NS=[info exists ftp(NextState)], NSlen=[expr {[info exists ftp(NextState)] && [llength $ftp(NextState)]}]"
}
if {$nextState && [info exists ftp(NextState)] && [llength $ftp(NextState)]} {
# Pop the head of the NextState queue
if {$VERBOSE} { DisplayMsg $s Sequence=($ftp(NextState)) }
set ftp(State) [lindex $ftp(NextState) 0]
set ftp(State) [lindex $ftp(NextState) 0]
set ftp(NextState) [lreplace $ftp(NextState) 0 0]
if {$VERBOSE} { DisplayMsg $s Recurse/StateHandler }
StateHandler $s
}
# enable fileevent on control socket again
#fileevent $ftp(CtrlSock) readable [list ::ftp::StateHandler $ftp(CtrlSock)]
if {$VERBOSE} { DisplayMsg $s ======/HandlerDone }
return
}
#############################################################################
#
# Type --
#
# REPRESENTATION TYPE - Sets the file transfer type to ascii or binary.
|
︙ | | |
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
|
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
|
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
|
# Arguments:
# dir - directory to list
#
# Returns:
# sorted list of files or {} if listing fails
proc ::ftp::NList {s { dir ""}} {
variable VERBOSE
upvar ::ftp::ftp$s ftp
if {$VERBOSE} { DisplayMsg $s NList($s)($dir)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ }
if { ![info exists ftp(State)] } {
if { ![string is digit -strict $s] } {
DisplayMsg $s "Bad connection name \"$s\"" error
} else {
DisplayMsg $s "Not connected!" error
}
return {}
}
set ftp(List) {}
if { $dir == "" } {
set ftp(Dir) ""
} else {
set ftp(Dir) " $dir"
}
# save current type and force ascii mode
set old_type $ftp(Type)
if { $ftp(Type) != "ascii" } {
if {$VERBOSE} { DisplayMsg $s NList/ForceAscii }
if {[string length $ftp(Command)]} {
set ftp(NextState) [list nlist_$ftp(Mode) type_change list_last]
set ftp(type:changeto) $old_type
Type $s ascii
return {}
}
Type $s ascii
}
set ftp(State) nlist_$ftp(Mode)
if {$VERBOSE} { DisplayMsg $s NList/Process~~~~~~~~~~~~~~~~~~~ }
StateHandler $s
if {$VERBOSE} { DisplayMsg $s NList/Processed~~~~~~~~~~~~~~~~~ }
# wait for synchronization
set rc [WaitOrTimeout $s]
# restore old type
if {$VERBOSE} { DisplayMsg $s NList/RestoreType~~~~~~~~~~~~~~~~~~~~~ }
if { [Type $s] != $old_type } {
Type $s $old_type
}
unset ftp(Dir)
if { $rc } {
if {$VERBOSE} { DisplayMsg $s NList/ReturnData~~~~~~~~~~~~~~~~~~~~~~~ }
return [lsort [split [string trim $ftp(List) \n] \n]]
} else {
if {$VERBOSE} { DisplayMsg $s NList/CDC~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ }
CloseDataConn $s
return {}
}
if {$VERBOSE} { DisplayMsg $s ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~NList/Done }
}
#############################################################################
#
# List --
#
# LIST - This command causes a list to be sent from the server
|
︙ | | |
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
|
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
|
-
|
# from the caller. Closing it is not our responsibility.
if {[info exists ftp(get:channel)]} {
catch {unset ftp(get:channel)}
catch {unset ftp(DestCI)}
}
catch { unset ftp(AC) }
catch {after cancel $ftp(Wait)}
catch {fileevent $ftp(DataSock) readable {}}
catch {close $ftp(DataSock); unset ftp(DataSock)}
catch {close $ftp(DestCI); unset ftp(DestCI)}
catch {close $ftp(SourceCI); unset ftp(SourceCI)}
catch {close $ftp(DummySock); unset ftp(DummySock)}
return
|
︙ | | |
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
|
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
|
-
-
-
-
-
|
# of the client's host,
# port - the client's port number
proc ::ftp::InitDataConn {s sock addr port} {
upvar ::ftp::ftp$s ftp
variable VERBOSE
if { $VERBOSE } {
DisplayMsg $s "D: New Connection from $addr:$port" data
DisplayMsg $s "D: Sequencer state $ftp(State)" data
}
# If the new channel is accepted, the dummy channel will be closed
catch {close $ftp(DummySock); unset ftp(DummySock)}
set ftp(state.data) 0
# Configure translation and blocking modes
|
︙ | | |
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
|
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
|
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
|
}
default {
error "Unknown state \"$ftp(State)\""
}
}
if { $VERBOSE } {
DisplayMsg $s "D: ... Connection from $addr:$port ... initialized" data
DisplayMsg $s "D: Connection from $addr:$port" data
}
# Marker for WaitDataConn
set ftp(AC) 1
return
}
#############################################################################
#
# WaitDataConn --
# Arguments: The ftp connection handle
# Returns: None
#
# Synchronizes the control sequencer to the data connection (active
# mode). This must be placed at the end of all state sequences,
# i.e. the last state of each sequence, dealing with a data
# connection. Without the sync the control sequencer may step to the
# next command causing a very late-coming data connection to encounter
# an unknown state, and failing to establish what to do.
#
# Sync is achieved through the state field AC, in cooperation with the
# procedures OpenActiveConn and InitDataConn.
#
# Missing field => Not an active connection - Ignore
# AC == 0 => OAC has run, IDC not - Wait for IDC, then cleanup
# AC == 1 => OAC has run, IDC as well - No waiting, just cleanup.
proc ::ftp::WaitDataConn {s} {
variable VERBOSE
upvar ::ftp::ftp$s ftp
if {$VERBOSE} { DisplayMsg $s WDC|$s|Begin|@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ }
# Passive connection, nothing to do
if {![info exists ftp(AC)]} {
if {$VERBOSE} { DisplayMsg $s WDC|$s|Passive|@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ }
return
}
# InitDataConn has not run yet. Wait!
if {!$ftp(AC)} {
if {$VERBOSE} { DisplayMsg $s WDC|$s|Sync|@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ }
vwait ::ftp::ftp${s}(AC)
# assert ftp(AC) == 1
if {$VERBOSE} { DisplayMsg $s WDC|$s|Synced|@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ }
} ; # else: Was run already
if {$VERBOSE} { DisplayMsg $s WDC|$s|Cleanup|@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ }
# InitDataConn has run, clean up and continue
unset ftp(AC)
return
}
#############################################################################
#
# OpenActiveConn --
#
|
︙ | | |
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
|
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
|
-
-
|
set p [lindex [fconfigure $ftp(DummySock) -sockname] 2]
if { $VERBOSE } {
DisplayMsg $s "D: Port is $p" data
}
set ftp(DataPort) "[expr {$p / 256}],[expr {$p % 256}]"
# Marker for WaitDataConn
set ftp(AC) 0
return 1
}
#############################################################################
#
# OpenPassiveConn --
#
|
︙ | | |
3152
3153
3154
3155
3156
3157
3158
3159
|
3013
3014
3015
3016
3017
3018
3019
3020
|
-
+
|
set ::ftp::VERBOSE 1
set ::ftp::DEBUG 0
}
# ==================================================================
# At last, everything is fine, we can provide the package.
package provide ftp [lindex {Revision: 2.4.13} 1]
package provide ftp [lindex {Revision: 2.4.12} 1]
|
Changes to modules/ftp/pkgIndex.tcl.
1
2
3
|
1
2
3
|
-
+
|
if {![package vsatisfies [package provide Tcl] 8.2]} {return}
package ifneeded ftp 2.4.13 [list source [file join $dir ftp.tcl]]
package ifneeded ftp 2.4.12 [list source [file join $dir ftp.tcl]]
package ifneeded ftp::geturl 0.2.1 [list source [file join $dir ftp_geturl.tcl]]
|
Changes to modules/html/html.man.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
-
-
+
-
+
|
[comment {-*- tcl -*- doctools manpage}]
[vset HTML_VERSION 1.4.3]
[manpage_begin html n [vset HTML_VERSION]]
[manpage_begin html n 1.4]
[see_also htmlparse]
[see_also ncgi]
[keywords checkbox]
[keywords checkbutton]
[keywords form]
[keywords html]
[keywords radiobutton]
[keywords table]
[moddesc {HTML Generation}]
[titledesc {Procedures to generate HTML structures}]
[category {CGI programming}]
[require Tcl 8.2]
[require html [opt [vset HTML_VERSION]]]
[require html [opt 1.4]]
[description]
[para]
The package [package html] provides commands that generate HTML.
These commands typically return an HTML string as their result. In
particular, they do not output their result to [const stdout].
|
︙ | | |
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
-
+
|
[arg list] should contain an alternating list of labels and values.
This uses [cmd ::html::checkbox]. All the [term checkbox] buttons share the
same [arg key] for their name. The [arg sep] is text used to separate
the elements.
[call [cmd ::html::checkValue] [arg name] [opt [arg value]]]
Generate the "name=[arg name] value=[arg value]" for a [term checkbox] form
Generate the "name=[arg name] value=[arg value] for a [term checkbox] form
element. If the CGI variable [arg name] has the value [arg value],
then SELECTED is added to the return value. [arg value] defaults to
"1".
[call [cmd ::html::closeTag]]
Pop a tag off the stack created by [cmd ::html::openTag] and generate
|
︙ | | |
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
|
241
242
243
244
245
246
247
248
249
250
251
252
253
254
|
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
|
[emph {Side effect only}]. Call this before [cmd ::html::head] to
define a [term meta] tag for the page. The [arg args] is a Tcl-style name,
value list that is used for the name= and value= parameters for the
[term meta] tag. The [term meta] tag is included in the result of
[cmd ::html::head].
[call [cmd ::html::css] [arg href]]
[emph {Side effect only}]. Call this before [cmd ::html::head] to
define a [term link] tag for a linked CSS document. The [arg href]
value is a HTTP URL to a CSS document. The [term link] tag is included
in the result of [cmd ::html::head].
[para]
Multiple calls of this command are allowed, enabling the use of
multiple CSS document references. In other words, the arguments
of multiple calls are accumulated, and do not overwrite each other.
[call [cmd ::html::css-clear]]
[emph {Side effect only}]. Call this before [cmd ::html::head] to
clear all links to CSS documents.
[para]
Multiple calls of this command are allowed, doing nothing after the
first of a sequence with no intervening [cmd ::html::css].
[call [cmd ::html::js] [arg href]]
[emph {Side effect only}]. Call this before [cmd ::html::head] to
define a [term script] tag for a linked JavaScript document. The
[arg href] is a HTTP URL to a JavaScript document. The [term script]
tag is included in the result of [cmd ::html::head].
[para]
Multiple calls of this command are allowed, enabling the use of
multiple JavaScript document references. In other words, the arguments
of multiple calls are accumulated, and do not overwrite each other.
[call [cmd ::html::js-clear]]
[emph {Side effect only}]. Call this before [cmd ::html::head] to
clear all links to JavaScript documents.
[para]
Multiple calls of this command are allowed, doing nothing after the
first of a sequence with no intervening [cmd ::html::js].
[call [cmd ::html::minorList] [arg list] [opt [arg ordered]]]
Generate an ordered or unordered list of links. The [arg list] is a
Tcl-style name, value list of labels and urls for the links.
[arg ordered] is a boolean used to choose between an ordered or
unordered list. It defaults to [const false].
|
︙ | | |
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
|
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
|
-
+
|
Generate a set of [term input] tags of type [term radio] and an associated text
label. All the radio buttons share the same [arg key] for their name.
The [arg sep] is text used to separate the elements. The [arg list]
is a Tcl-style label, value list.
[call [cmd ::html::radioValue] [arg {name value}]]
Generate the "name=[arg name] value=[arg value]" for a [term radio] form
Generate the "name=[arg name] value=[arg value] for a [term radio] form
element. If the CGI variable [arg name] has the value [arg value],
then SELECTED is added to the return value.
[call [cmd ::html::refresh] [arg {seconds url}]]
Set up a refresh [term meta] tag. Call this before [cmd ::html::head] and the
HEAD section will contain a [term meta] tag that causes the document to
|
︙ | | |
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
|
397
398
399
400
401
402
403
404
405
406
407
408
|
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
|
[call [cmd ::html::while] [arg {test body}]]
This procedure is similar to the built-in Tcl [cmd while] control
structure. Rather than evaluating the body, it returns the subst'ed
[arg body]. Each iteration of the loop causes another string to be
concatenated to the result value.
[call [cmd ::html::doctype] [arg id]]
This procedure can be used to build the standard DOCTYPE
declaration string. It will return the standard declaration
string for the id, or throw an error if the id is not known.
The following id's are defined:
[list_begin enumerated]
[enum] HTML32
[enum] HTML40
[enum] HTML40T
[enum] HTML40F
[enum] HTML401
[enum] HTML401T
[enum] HTML401F
[enum] XHTML10S
[enum] XHTML10T
[enum] XHTML10F
[enum] XHTML11
[enum] XHTMLB
[list_end]
[list_end]
[vset CATEGORY html]
[include ../doctools2base/include/feedback.inc]
[manpage_end]
|
Changes to modules/html/html.tcl.
︙ | | |
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
-
+
|
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
# Originally by Brent Welch, with help from Dan Kuchler and Melissa Chawla
package require Tcl 8.2
package require ncgi
package provide html 1.4.3
package provide html 1.4
namespace eval ::html {
# State about the current page
variable page
|
︙ | | |
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
|
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
|
-
+
|
proc ::html::refresh {content {url {}}} {
variable page
::set html "<meta http-equiv=\"Refresh\" content=\"$content"
::if {[string length $url]} {
append html "; url=$url"
}
append html "\">"
append html "\">\n"
lappend page(meta) $html
return ""
}
# ::html::headTag
#
# Embed a tag into the HEAD section
|
︙ | | |
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
|
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
|
-
+
-
-
+
+
-
-
+
|
# Arguments:
# s The near-HTML text
#
# Results:
# The text with <br> in place of line-endings.
proc ::html::nl2br {s} {
return [string map [list \n\r <br> \r\n <br> \n <br> \r <br>] $s]
return [string map [list \n\r <br> \n <br> \r <br>] $s]
}
# ::html::doctype
# Create the DOCTYPE tag and tuck it away for usage
#
# Arguments:
# arg The DOCTYPE you want to declare
#
# Results:
# HTML for the doctype section
proc ::html::doctype {arg} {
variable doctypes
::set code [string toupper $arg]
::if {![info exists doctypes($code)]} {
set code [string toupper $arg]
if {![info exists doctypes($code)]} {
return -code error -errorcode {HTML DOCTYPE BAD} \
"Unknown doctype \"$arg\""
return -code error "Unknown doctype \"$arg\""
}
return $doctypes($code)
}
namespace eval ::html {
variable doctypes
array set doctypes {
|
︙ | | |
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
|
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
|
-
+
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
|
# ::html::css
# Create the text/css tag and tuck it away for usage
#
# Arguments:
# href The location of the css file to include the filename and path
#
# Results:
# None.
# HTML for the section
proc ::html::css {href} {
variable page
set page(css) \
lappend page(css) "<link rel=\"stylesheet\" type=\"text/css\" href=\"[quoteFormValue $href]\">"
"<link rel=\"stylesheet\" type=\"text/css\" href=\"[quoteFormValue $href]\">\n"
return
}
# ::html::css-clear
# Drop all text/css references.
#
# Arguments:
# None.
#
# Results:
# None.
proc ::html::css-clear {} {
variable page
catch { unset page(css) }
return
}
# ::html::js
# Create the text/javascript tag and tuck it away for usage
#
# Arguments:
# href The location of the javascript file to include the filename and path
#
# Results:
# None.
# HTML for the section
proc ::html::js {href} {
variable page
set page(js) \
lappend page(js) "<script language=\"javascript\" type=\"text/javascript\" src=\"[quoteFormValue $href]\"></script>"
"<script language=\"javascript\" type=\"text/javascript\" src=\"[quoteFormValue $href]\"></script>\n"
return
}
# ::html::js-clear
# Drop all text/javascript references.
#
# Arguments:
# None.
#
# Results:
# None.
proc ::html::js-clear {} {
variable page
catch { unset page(js) }
return
}
|
Changes to modules/html/html.test.
︙ | | |
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
-
-
+
+
-
+
-
-
-
-
-
+
+
+
+
-
+
-
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
+
-
+
-
+
-
+
-
-
-
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
|
# -------------------------------------------------------------------------
source [file join \
[file dirname [file dirname [file join [pwd] [info script]]]] \
devtools testutilities.tcl]
testsNeedTcl 8.4
testsNeedTcltest 2.0
testsNeedTcl 8.2
testsNeedTcltest 1.0
testing {
useLocal html.tcl html
}
# -------------------------------------------------------------------------
test html-1.1 {html::init} -body {
test html-1.1 {html::init} {
html::init
list \
[array exists html::defaults] \
[array size html::defaults] \
[info exists html::page]
} -result {1 0 0}
list [array exists html::defaults] \
[array size html::defaults] \
[info exists html::page]
} {1 0 0}
test html-1.2 {html::init} -body {
test html-1.2 {html::init} {
html::init {
font.face arial
body.bgcolor white
body.text black
}
lsort [array names html::defaults]
} -result {body.bgcolor body.text font.face}
} {body.bgcolor body.text font.face}
test html-1.3 {html::init, too many args} -body {
html::init wrong num args
} -returnCodes error -result {wrong # args: should be "html::init ?nvlist?"}
test html-1.3 {html::init} {
catch {html::init wrong num args}
} 1
test html-1.4 {html::init, bad arg, odd-length list} -body {
html::init {wrong num args}
} -returnCodes error -result {list must have an even number of elements}
test html-1.4 {html::init} {
catch {html::init {wrong num args}}
} 1
test html-2.1 {html::head, not enough args} -body {
html::head
} -returnCodes error -result {wrong # args: should be "html::head title"}
test html-2.1 {html::head} {
catch {html::head}
} 1
test html-2.2 {html::head} -body {
test html-2.2 {html::head} {
html::head "The Title"
} -result "<html><head>\n\t<title>The Title</title>\n</head>\n"
} "<html><head>\n\t<title>The Title</title>\n</head>\n"
test html-2.3 {html::head} -body {
test html-2.3 {html::head} {
html::description "The Description"
html::keywords key word
html::author "Cathy Coder"
html::meta metakey metavalue
html::head "The Title"
} -result {<html><head>
} {<html><head>
<title>The Title</title>
<!-- Cathy Coder -->
<meta name="description" content="The Description">
<meta name="keywords" content="key, word">
<meta name="metakey" content="metavalue">
</head>
}
test html-3.1 {html::title, not enough args} -body {
html::title
} -returnCodes error -result {wrong # args: should be "html::title title"}
test html-3.1 {html::title} {
catch html::title
} 1
test html-3.2 {html::title} -body {
test html-3.2 {html::title} {
html::title "blah blah"
} -result "<title>blah blah</title>\n"
} "<title>blah blah</title>\n"
test html-4.1 {html::getTitle} -body {
test html-4.1 {html::getTitle} {
html::init
html::getTitle
} -result ""
} ""
test html-4.2 {html::getTitle} -body {
test html-4.2 {html::getTitle} {
html::init
html::title "blah blah"
html::getTitle
} -result {blah blah}
} {blah blah}
test html-5.1 {html::meta} {
html::init
html::meta one two
} {}
test html-5.2 {html::meta} {
|
︙ | | |
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
|
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
|
+
+
|
test html-26.4 {html::refresh} {
html::init
html::refresh 4
html::head title
} {<html><head>
<title>title</title>
<meta http-equiv="Refresh" content="4">
</head>
}
test html-26.5 {html::refresh} {
html::init
html::refresh 9 http://www.scriptics.com
html::head title
} {<html><head>
<title>title</title>
<meta http-equiv="Refresh" content="9; url=http://www.scriptics.com">
</head>
}
test html-27.1 {html::foreach--1 var, 1 iteration} {
html::foreach x {a} {<td>$x</td>}
} {<td>a</td>}
|
︙ | | |
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
|
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
|
-
-
-
-
-
-
+
+
+
+
+
-
-
-
+
+
-
-
+
-
-
-
-
+
-
-
-
-
+
-
-
-
-
+
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
+
-
-
-
-
+
-
-
+
-
-
-
-
+
-
-
-
-
-
-
-
|
} {{} 1}
test html-32.1 {single argument} {
set x 0
set result [html::eval {set x [format 22]}]
list $result $x
} {{} 22}
test html-32.2 {multiple arguments} {
set a {$b}
set b xyzzy
set x 0
set result [html::eval {set x [eval format $a]}]
list $result $x
} {{} xyzzy}
test html-32.3 {single argument} {
set x [list]
set y 1
set result [html::eval lappend x a b c d {$y} e f g]
list $result $x
} {{} {a b c d 1 e f g}}
test html-32.4 {error: not enough arguments} -body {
html::eval
} -returnCodes error -result {wrong # args: should be "uplevel ?level? command ?arg ...?"}
test html-32.4 {error: not enough arguments} {catch html::eval} 1
test html-32.5 {error: not enough arguments} {
catch html::eval msg
set msg
} {wrong # args: should be "uplevel ?level? command ?arg ...?"}
test html-32.6 {error in eval'ed command} -body {
html::eval {error "test error"}
test html-32.6 {error in eval'ed command} {
catch {html::eval {error "test error"}}
} -returnCodes error -result {test error}
} 1
test html-33.0 {html::font} -body {
html::font
} -result {}
test html-32.7 {error in eval'ed command} {
test html-33.1 {html::font} -body {
html::font size=18
} -result {<font size=18>}
catch {html::eval {error "test error"}} msg
test html-34.0 {html::nl2br} -body {
html::nl2br "a\n\rb\nc\rd"
} -result {a<br>b<br>c<br>d}
set msg
test html-34.1 {html::nl2br, ticket 1742078} -body {
html::nl2br "a\r\nb"
} -result {a<br>b}
} {test error}
# -------------------------------------------------------------------------
test html-tkt3439702-35.0 {html::css, not enough arguments} -body {
html::css
} -returnCodes error -result {wrong # args: should be "html::css href"}
test html-tkt3439702-35.1 {html::css, too many arguments} -body {
html::css REF X
} -returnCodes error -result {wrong # args: should be "html::css href"}
test html-tkt3439702-35.2 {html::css, single ref} -setup {
html::css-clear
} -body {
html::css "http://test.css"
string trim [html::head T]
} -cleanup {
html::css-clear
} -result "<html><head>\n\t<title>T</title>\n\t<meta http-equiv=\"Refresh\" content=\"9; url=http://www.scriptics.com\">\n\t<link rel=\"stylesheet\" type=\"text/css\" href=\"http://test.css\">\n</head>"
test html-tkt3439702-35.3 {html::css, multiple ref} -setup {
html::css-clear
} -body {
html::css "http://test1.css"
html::css "http://test2.css"
string trim [html::head T]
} -cleanup {
html::css-clear
} -result {<html><head>
<title>T</title>
<meta http-equiv="Refresh" content="9; url=http://www.scriptics.com">
<link rel="stylesheet" type="text/css" href="http://test1.css">
<link rel="stylesheet" type="text/css" href="http://test2.css">
</head>}
# -------------------------------------------------------------------------
test html-tkt3439702-36.0 {html::js, not enough arguments} -body {
html::js
} -returnCodes error -result {wrong # args: should be "html::js href"}
test html-tkt3439702-36.1 {html::js, too many arguments} -body {
html::js REF X
} -returnCodes error -result {wrong # args: should be "html::js href"}
test html-tkt3439702-36.2 {html::js, single ref} -setup {
html::js-clear
} -body {
html::js "http://test.js"
string trim [html::head T]
} -cleanup {
html::js-clear
} -result {<html><head>
<title>T</title>
<meta http-equiv="Refresh" content="9; url=http://www.scriptics.com">
<script language="javascript" type="text/javascript" src="http://test.js"></script>
</head>}
test html-33.0 {html::font} {
test html-tkt3439702-36.3 {html::js, multiple ref} -setup {
html::js-clear
} -body {
html::font
} {}
html::js "http://test1.js"
html::js "http://test2.js"
string trim [html::head T]
} -cleanup {
html::js-clear
} -result {<html><head>
<title>T</title>
<meta http-equiv="Refresh" content="9; url=http://www.scriptics.com">
<script language="javascript" type="text/javascript" src="http://test1.js"></script>
<script language="javascript" type="text/javascript" src="http://test2.js"></script>
</head>}
test html-tkt3439702-37.0 {html::js, html::css, mixed} -setup {
html::css-clear
html::js-clear
test html-33.1 {html::font} {
} -body {
html::css "http://test.css"
html::js "http://test.js"
string trim [html::head T]
} -cleanup {
html::js-clear
html::font size=18
html::css-clear
} -result {<html><head>
<title>T</title>
<meta http-equiv="Refresh" content="9; url=http://www.scriptics.com">
<link rel="stylesheet" type="text/css" href="http://test.css">
<script language="javascript" type="text/javascript" src="http://test.js"></script>
</head>}
} {<font size=18>}
# -------------------------------------------------------------------------
# TODO: html::css-clear, html::js-clear
test html-tktafe4366e2e-38.0 {html::doctype, not enough args} -body {
html::doctype
test html-34.0 {html::nl2br} {
} -returnCodes error -result {wrong # args: should be "html::doctype arg"}
html::nl2br "a\n\rb\nc\rd"
test html-tktafe4366e2e-38.1 {html::doctype, too many args} -body {
html::doctype HTML401T X
} -returnCodes error -result {wrong # args: should be "html::doctype arg"}
} {a<br>b<br>c<br>d}
test html-tktafe4366e2e-38.2 {html::doctype, unknown type} -body {
html::doctype HTML401TXXX
} -returnCodes error -result {Unknown doctype "HTML401TXXX"}
test html-tktafe4366e2e-38.3 {html::doctype} -body {
html::doctype HTML401T
} -result {<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">}
# -------------------------------------------------------------------------
testsuiteCleanup
|
Changes to modules/html/pkgIndex.tcl.
1
2
|
1
2
|
-
+
|
if {![package vsatisfies [package provide Tcl] 8.2]} {return}
package ifneeded html 1.4.3 [list source [file join $dir html.tcl]]
package ifneeded html 1.4 [list source [file join $dir html.tcl]]
|
Changes to modules/json/json.bench.
︙ | | |
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
-
+
-
+
|
bench_puts "=== === === === === ==="
bench_puts "=== === === $impl ==="
bench_puts "=== === === === === ==="
bench_puts {=== test-data =========}
foreach f [glob -nocomplain -directory $self/tests *.json] {
foreach f [glob -nocomplain -directory $self/test-data *.json] {
set in [cat $f]
bench -desc "parse [file rootname [file tail $f]] ($impl)" -body {
json::json2dict $in
}
bench -desc "validate [file rootname [file tail $f]] ($impl)" -body {
json::validate $in
}
}
foreach f [glob -nocomplain -directory $self/tests *.bench] {
foreach f [glob -nocomplain -directory $self/test-data *.bench] {
set in [cat $f]
bench -desc "parse [file rootname [file tail $f]] ($impl)" -body {
json::json2dict $in
}
bench -desc "validate [file rootname [file tail $f]] ($impl)" -body {
|
︙ | | |
Changes to modules/json/json.test.
︙ | | |
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
-
+
|
[file dirname [file dirname [file join [pwd] [info script]]]] \
devtools testutilities.tcl]
testsNeedTcl [expr {[catch {package require dict}] ? "8.5" : "8.4"}]
testsNeedTcltest 2.0
support {
useLocalFile tests/support.tcl
useLocalFile test_support.tcl
}
testing {
useAccel [useTcllibC] json/json.tcl json
TestAccelInit json
}
|
︙ | | |
Changes to modules/json/json_write.man.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
-
-
+
-
+
|
[comment {-*- tcl -*- doctools manpage}]
[vset PACKAGE_VERSION 1.0.3]
[manpage_begin json::write n [vset PACKAGE_VERSION]]
[manpage_begin json::write n 1.0.2]
[keywords {data exchange}]
[keywords {exchange format}]
[keywords javascript]
[keywords json]
[copyright {2009-2013 Andreas Kupries <[email protected]>}]
[moddesc {JSON}]
[titledesc {JSON generation}]
[category {CGI programming}]
[require Tcl 8.5]
[require json::write [opt [vset PACKAGE_VERSION]]]
[require json::write [opt 1.0.2]]
[description]
[para]
The [package json::write] package provides a simple Tcl-only library
for generation of text in the JSON [uri http://www.json.org/] data
exchange format as specified in
RFC 4627 [uri http://www.ietf.org/rfc/rfc4627.txt].
|
︙ | | |
Changes to modules/json/json_write.tcl.
︙ | | |
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
|
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
|
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
|
# 1 1 | Indented + vertically aligned keys
# - - + ---------------------
variable indented 1
variable aligned 1
variable quotes \
[list "\"" "\\\"" \\ \\\\ \b \\b \f \\f \n \\n \r \\r \t \\t \
[list "\"" "\\\"" \\ \\\\ \b \\b \f \\f \n \\n \r \\r \t \\t]
\x00 \\u0000 \x01 \\u0001 \x02 \\u0002 \x03 \\u0003 \
\x04 \\u0004 \x05 \\u0005 \x06 \\u0006 \x07 \\u0007 \
\x0b \\u000b \x0e \\u000e \x0f \\u000f \x10 \\u0010 \
\x11 \\u0011 \x12 \\u0012 \x13 \\u0013 \x14 \\u0014 \
\x15 \\u0015 \x16 \\u0016 \x17 \\u0017 \x18 \\u0018 \
\x19 \\u0019 \x1a \\u001a \x1b \\u001b \x1c \\u001c \
\x1d \\u001d \x1e \\u001e \x1f \\u001f \x7f \\u007f \
\x80 \\u0080 \x81 \\u0081 \x82 \\u0082 \x83 \\u0083 \
\x84 \\u0084 \x85 \\u0085 \x86 \\u0086 \x87 \\u0087 \
\x88 \\u0088 \x89 \\u0089 \x8a \\u008a \x8b \\u008b \
\x8c \\u008c \x8d \\u008d \x8e \\u008e \x8f \\u008f \
\x90 \\u0090 \x91 \\u0091 \x92 \\u0092 \x93 \\u0093 \
\x94 \\u0094 \x95 \\u0095 \x96 \\u0096 \x97 \\u0097 \
\x98 \\u0098 \x99 \\u0099 \x9a \\u009a \x9b \\u009b \
\x9c \\u009c \x9d \\u009d \x9e \\u009e \x9f \\u009f ]
}
# ### ### ### ######### ######### #########
## Ready
package provide json::write 1.0.3
package provide json::write 1.0.2
return
|
Changes to modules/json/json_write.test.
︙ | | |
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
-
+
-
|
test json-write-2.4 {argument errors} -body {
json::write object A
} -returnCodes 1 -result {wrong # args, expected an even number of arguments}
# -------------------------------------------------------------------------
test json-write-3.0 {indented, aligned} -setup {
test json-write-3.0 {indented, aligned} -body {
json::write indented 1
json::write aligned 1
} -body {
gen $data
} -result {{
"grammar" : {
"rules" : {
"A" : {
"is" : "/ {t +} {t -}",
"mode" : "value"
|
︙ | | |
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
|
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
|
-
+
-
|
"mode" : "value"
}
},
"start" : "n Expression"
}
}}
test json-write-3.1 {indented, !aligned} -setup {
test json-write-3.1 {indented, !aligned} -body {
json::write indented 1
json::write aligned 0
} -body {
gen $data
} -result {{
"grammar" : {
"rules" : {
"A" : {
"is" : "/ {t +} {t -}",
"mode" : "value"
|
︙ | | |
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
|
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
|
-
+
-
-
-
-
-
-
-
-
|
"mode" : "value"
}
},
"start" : "n Expression"
}
}}
test json-write-3.1 {!indented, !aligned} -setup {
test json-write-3.1 {!indented, !aligned} -body {
json::write indented 0
json::write aligned 0
} -body {
gen $data
} -result {{"grammar":{"rules":{"A":{"is":"/ {t +} {t -}","mode":"value"},"D":{"is":"/ {t 0} {t 1} ","mode":"value"},"E":{"is":"/ {x {t (} {n E} {t )}} {x {n F} {* {x {n M} {n F}}}}","mode":"value"},"F":{"is":"x {n T} {* {x {n A} {n T}}}","mode":"value"},"M":{"is":"/ {t *} {t /}","mode":"value"},"N":{"is":"x {? {n S}} {+ {n D}}","mode":"value"},"S":{"is":"/ {t +} {t -}","mode":"value"},"T":{"is":"n N","mode":"value"}},"start":"n Expression"}}}
# -------------------------------------------------------------------------
test json-write-4.0 {string quoting} -body {
json::write string "a\"b\\c\bd\fe\nf\rg\th\0i\1j\2k\3l\177m"
} -result "\"a\\\"b\\\\c\\bd\\fe\\nf\\rg\\th\\u0000i\\u0001j\\u0002k\\u0003l\\u007fm\""
# -------------------------------------------------------------------------
unset data
rename gen {}
testsuiteCleanup
# Local Variables:
# mode: tcl
# indent-tabs-mode: nil
# End:
|
Changes to modules/json/pkgIndex.tcl.
1
2
3
4
5
6
7
|
1
2
3
4
5
6
7
|
-
+
|
# Tcl package index file, version 1.1
if {![package vsatisfies [package provide Tcl] 8.4]} {return}
package ifneeded json 1.3.2 [list source [file join $dir json.tcl]]
if {![package vsatisfies [package provide Tcl] 8.5]} {return}
package ifneeded json::write 1.0.3 [list source [file join $dir json_write.tcl]]
package ifneeded json::write 1.0.2 [list source [file join $dir json_write.tcl]]
|
Added modules/json/test-data/array.json.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
|
[
{
"precision": "zip",
"Latitude": 37.7668,
"Longitude": -122.3959,
"Address": "",
"City": "SAN FRANCISCO",
"State": "CA",
"Zip": "94107",
"Country": "US"
},
{
"precision": "zip",
"Latitude": 37.371991,
"Longitude": -122.026020,
"Address": "",
"City": "SUNNYVALE",
"State": "CA",
"Zip": "94085",
"Country": "US"
}
]
|
| | | | | | | | | | | | | | | | | | | | |
Added modules/json/test-data/array.result.
|
1
|
+
|
{precision zip Latitude 37.7668 Longitude -122.3959 Address {} City {SAN FRANCISCO} State CA Zip 94107 Country US} {precision zip Latitude 37.371991 Longitude -122.026020 Address {} City SUNNYVALE State CA Zip 94085 Country US}
|
Added modules/json/test-data/array.sort.
Added modules/json/test-data/glossary.json.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
|
{
"glossary": {
"title": "example glossary",
"mixlist": ["a \"\" str", -0.09, null, "", {"member":true}],
"GlossDiv": {
"title": "S",
"GlossList": [{
"ID": "SGML",
"GlossTerm": "Standard \\\" Language",
"Acronym": "SGML\\",
"Abbrev": "ISO 8879:1986",
"GlossDef":
"A meta-markup language, used ...",
"GlossSeeAlso": ["GML", "XML", "markup"]}]}}
}
|
| | | | | | | | | | | | | |
Added modules/json/test-data/glossary.result.
|
1
|
+
|
glossary {title {example glossary} mixlist {{a "" str} -0.09 null {} {member true}} GlossDiv {title S GlossList {{ID SGML GlossTerm {Standard \" Language} Acronym SGML\\ Abbrev {ISO 8879:1986} GlossDef {A meta-markup language, used ...} GlossSeeAlso {GML XML markup}}}}}
|
Added modules/json/test-data/glossary.sort.
|
1
|
+
|
dict * {dict GlossDiv {dict GlossList {list dict}}}
|
Added modules/json/test-data/menu.json.
|
1
2
3
4
5
6
7
8
9
10
11
12
|
+
+
+
+
+
+
+
+
+
+
+
+
|
{"menu": {
"id": "file",
"value": "File:",
"unival": "\u6021:",
"popup": {
"menuitem": [
{"value": "Open", "onclick": "OpenDoc()"},
{"value": "Close", "onclick": "CloseDoc()"}
]
}
}
}
|
| | | | | | | | | | |
Added modules/json/test-data/menu.result.
|
1
|
+
|
menu {id file value File: unival @@@: popup {menuitem {{value Open onclick OpenDoc()} {value Close onclick CloseDoc()}}}}
|
Added modules/json/test-data/menu.sort.
|
1
|
+
|
dict * {dict popup {dict * {list dict}}}
|
Added modules/json/test-data/menu2.json.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
+
+
+
+
+
+
+
+
+
+
+
+
+
+
|
{"menu": {
"header": "Viewer",
"items": [
{"id": "Open"},
{"id": "OpenNew", "label": "Open New"},
null,
{"id": "ZoomIn", "label": "Zoom In"},
{"id": "ZoomOut", "label": "Zoom Out"},
null,
{"id": "Help"},
{"id": "About", "label": "About Viewer..."}
]
}
}
|
| | | | | | | | | | | | |
Added modules/json/test-data/menu2.result.
|
1
|
+
|
menu {header Viewer items {{id Open} {id OpenNew label {Open New}} null {id ZoomIn label {Zoom In}} {id ZoomOut label {Zoom Out}} null {id Help} {id About label {About Viewer...}}}}
|
Added modules/json/test-data/menu2.sort.
|
1
|
+
|
dict * {dict items {list 0 dict 1 dict 3 dict 4 dict 6 dict 7 dict}}
|
Added modules/json/test-data/widget.json.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
|
{"widget": {
"debug": "on",
"window": {
"title":"Sample Widget",
"name": "main_window",
"width": 500,
"height": 500},
"text": {
"data": "Click Here",
"size": 36,
"style": "bold",
"name": null,
"hOffset":250,
"vOffset": 100,
"alignment": "center",
"onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
}
}
}
|
| | | | | | | | | | | | | | | | | |
Added modules/json/test-data/widget.result.
|
1
|
+
|
widget {debug on window {title {Sample Widget} name main_window width 500 height 500} text {data {Click Here} size 36 style bold name null hOffset 250 vOffset 100 alignment center onMouseUp {sun1.opacity = (sun1.opacity / 100) * 90;}}}
|
Added modules/json/test-data/widget.sort.
|
1
|
+
|
dict * {dict text dict window dict}
|
Added modules/json/test_support.tcl.