File: code.tcl

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 (56 lines) | stat: -rw-r--r-- 1,566 bytes parent folder | download | duplicates (5)
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
# -*- tcl -*-
# ### ### ### ######### ######### #########
## Terminal packages - ANSI
## Generic commands to define commands for code sequences.

# ### ### ### ######### ######### #########
## Requirements

namespace eval ::term::ansi::code {}

# ### ### ### ######### ######### #########
## API. Escape clauses, plain and bracket
##      Used by 'define'd commands.

proc ::term::ansi::code::esc  {str} {return \033$str}
proc ::term::ansi::code::escb {str} {esc    \[$str}

# ### ### ### ######### ######### #########
## API. Define command for named control code, or constant.
##      (Simple definitions without arguments)

proc ::term::ansi::code::define {name escape code} {
    proc [Qualified $name] {} [list ::term::ansi::code::$escape $code]
}

proc ::term::ansi::code::const {name code} {
    proc [Qualified $name] {} [list return $code]
}

# ### ### ### ######### ######### #########
## Internal helper to construct fully-qualified names.

proc ::term::ansi::code::Qualified {name} {
    if {![string match ::* $name]} {
        # Get the caller's namespace; append :: if it is not the
	# global namespace, for separation from the actual name.
        set ns [uplevel 2 [list namespace current]]
        if {$ns ne "::"} {append ns ::}
        set name $ns$name
    }
    return $name
}

# ### ### ### ######### ######### #########

namespace eval ::term::ansi::code {
    namespace export esc escb define const
}

# ### ### ### ######### ######### #########
## Ready

package provide term::ansi::code 0.2

##
# ### ### ### ######### ######### #########