File: term_bind.man

package info (click to toggle)
tcllib 1.20%2Bdfsg-1
  • links: PTS
  • area: main
  • in suites: bullseye
  • size: 68,064 kB
  • sloc: tcl: 216,842; ansic: 14,250; sh: 2,846; xml: 1,766; yacc: 1,145; pascal: 881; makefile: 107; perl: 84; f90: 84; python: 33; ruby: 13; php: 11
file content (124 lines) | stat: -rw-r--r-- 3,672 bytes parent folder | download | duplicates (2)
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
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin term::receive::bind n 0.1]
[keywords {character input}]
[keywords control]
[keywords dispatcher]
[keywords listener]
[keywords receiver]
[keywords terminal]
[copyright {2006 Andreas Kupries <andreas_kupries@users.sourceforge.net>}]
[moddesc   {Terminal control}]
[titledesc {Keyboard dispatch from terminals}]
[category  {Terminal control}]
[require Tcl 8.4]
[require term::receive::bind [opt 0.1]]
[description]

This package provides a class for the creation of simple dispatchers
from character sequences to actions. Internally each dispatcher is in
essence a deterministic finite automaton with tree structure.

[section {Class API}]

The package exports a single command, the
class command, enabling the creation of
dispatcher instances. Its API
is:

[list_begin definitions]

[call [cmd term::receive::bind] [arg object] [opt [arg map]]]

This command creates a new dispatcher object with the name
[arg object], initializes it, and returns the fully qualified name of
the object command as its result.

[para]

The argument is a dictionary mapping from strings, i.e. character
sequences to the command prefices to invoke when the sequence is found
in the input stream.

[list_end]

[section {Object API}]

The objects created by the class command provide the methods listed
below:

[list_begin definitions]
[call [arg object] [method map] [arg str] [arg cmd]]

This method adds an additional mapping from the string [arg str] to
the action [arg cmd]. The mapping will take effect immediately
should the processor be in a prefix of [arg str], or at the next
reset operation. The action is a command prefix and will be invoked
with one argument appended to it, the character sequence causing
the invokation. It is executed in the global namespace.

[call [arg object] [method default] [arg cmd]]

This method defines a default action [arg cmd] which will be invoked
whenever an unknown character sequence is encountered. The command
prefix is handled in the same as the regular action defined via
method [method map].

[call [arg object] [method listen] [opt [arg chan]]]

This methods sets up a filevent listener for the channel with handle
[arg chan] and invokes the dispatcher object whenever characters have
been received, or EOF was reached.

[para]

If not specified [arg chan] defaults to [const stdin].

[call [arg object] [method unlisten] [opt [arg chan]]]

This methods removes the filevent listener for the channel with handle
[arg chan].

[para]

If not specified [arg chan] defaults to [const stdin].

[call [arg object] [method reset]]

This method resets the character processor
to the beginning of the tree.

[call [arg object] [method next] [arg char]]

This method causes the character processor to process the character
[arg c]. This may simply advance the internal state, or invoke an
associated action for a recognized sequence.

[call [arg object] [method process] [arg str]]

This method causes the character processor to process the character
sequence [arg str], advancing the internal state and invoking action
as necessary. This is a callback for [method listen].

[call [arg object] [method eof]]

This method causes the character processor to handle EOF on the
input. This is currently no-op.

This is a callback for [method listen].

[list_end]

[section Notes]

The simplicity of the DFA means that it is not possible to recognize a
character sequence with has a another recognized character sequence as
its prefix.

[para]

In other words, the set of recognized strings has to form a
[term {prefix code}].

[vset CATEGORY term]
[include ../common-text/feedback.inc]
[manpage_end]