File: modpython.tcl

package info (click to toggle)
moodss 14.0-3
  • links: PTS
  • area: main
  • in suites: woody
  • size: 2,536 kB
  • ctags: 1,003
  • sloc: tcl: 25,371; ansic: 132; perl: 72; python: 64; sh: 63; makefile: 50
file content (82 lines) | stat: -rw-r--r-- 3,663 bytes parent folder | download
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
# copyright (C) 1997-2001 Jean-Luc Fontaine (mailto:jfontain@free.fr)
# this program is free software: please read the COPYRIGHT file enclosed in this package or use the Help Copyright menu

set rcsId {$Id: modpython.tcl,v 1.2 2001/02/28 20:33:23 jfontain Exp $}


namespace eval module::python {                       ;# indentation removed in some places since Python is quite sensitive about it

variable utilityFunctions {

def columnstring(dictionary, index):
    "return a Tcl array compatible initialization list for column data"
    string = ''
    for (key, value) in dictionary.items():
        string = string + ' {' + str(index) + ',' + str(key) + '} {' + str(value) + '}'
    return string

def liststring(list):
    "return a Tcl list from a python list"
    string = ''
    for index in range(len(list)):
        string = string + ' {' + str(list[index]) + '}'
    return string

def viewsstring(list):
    "return a Tcl array compatible initialization list for views data"
    string = ''
    for index in range(len(list)):
        string = string + ' {'
        for (key, value) in list[index].items():
            string = string + ' {' + str(key) + '}'
            if key == 'swap':                                                                                       # simple boolean
                string = string + ' {' + str(value) + '}'
            elif key == 'sort':
                for (column, direction) in value.items():
                    string = string + ' {{' + str(column) + '} {' + str(direction) + '}}'
                    break                                                                                    # keep first entry only
            else:                                                                                                     # indices list
                string = string + ' {' + liststring(value) + '}'
        string = string + '}'
    return string

def dictionarystring(dictionary):
    "return a Tcl array compatible initialization list from a python dictionary"
    string = ''
    for (key, value) in dictionary.items():
        string = string + ' {' + str(key) + '} {' + str(value) + '}'
    return string

def formstring(dictionary):
    "return a Tcl array compatible initialization list from module form dictionary"
    string = ''
    for (key, value) in dictionary.items():
        if key == 'columns':
            for index in range(len(value)):
                string = string + columnstring(value[index], index)
        elif re.match('^(indexColumns|indices|pollTimes)$', key):
            string = string + ' ' + key + ' {' + liststring(value) + '}'
        elif key == 'sort':
            for (column, direction) in value.items():
                string = string + ' sort {{' + str(column) + '} {' + str(direction) + '}}'
                break                                                                                        # keep first entry only
        elif key == 'switches':
            string = string + ' ' + key + ' {' + dictionarystring(value) + '}'
        elif key == 'views':
            string = string + ' ' + key + ' {' + viewsstring(value) + '}'
        else:
            string = string + ' {' + str(key) + '} {' + str(value) + '}'
    return string

def datastring(list):
    "return a Tcl array compatible initialization list from module data list of lists"
    string = ''
    for row in range(len(list)):
        # empty rows ar handled properly since their length is zero:
        for column in range(len(list[row])):
            string = string + ' ' + str(row) + ',' + str(column) + ' {' + str(list[row][column]) + '}'
    return string

}

}