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
|
#!/usr/bin/python
"""
CONFIG CONVERTER
this script converts your custom tag string section from the v.3.1 syntax
to the current format.
>>> tagsections_convert.py -o config.new config.old
will convert your whole alot config safely to the new format.
"""
from configobj import ConfigObj
import argparse
import sys
import re
def get_leaf_value(cfg, path, fallback=''):
if len(path) == 1:
if isinstance(cfg, ConfigObj):
if path[0] not in cfg.scalars:
return fallback
else:
return cfg[path[0]]
else:
if path[0] not in cfg:
return fallback
else:
return cfg[path[0]]
else:
if path[0] in cfg:
scfg = cfg[path[0]]
sp = path[1:]
return get_leaf_value(scfg, sp, fallback)
else:
return None
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='update alot theme files')
parser.add_argument('configfile', type=argparse.FileType('r'),
help='theme file to convert')
parser.add_argument('-o', type=argparse.FileType('w'), dest='out',
help='destination', default=sys.stdout)
args = parser.parse_args()
cfg = ConfigObj(args.configfile)
out = args.out
print args
def is_256(att):
r = r'(g\d{1,3}(?!\d))|(#[0-9A-Fa-f]{3}(?![0-9A-Fa-f]))'
return re.search(r, att)
if 'tags' in cfg:
for tag in cfg['tags'].sections:
sec = cfg['tags'][tag]
att = [''] * 6
if 'fg' in sec:
fg = sec['fg']
if not is_256(fg):
att[2] = fg
att[4] = fg
del(sec['fg'])
if 'bg' in sec:
bg = sec['bg']
if not is_256(bg):
att[3] = bg
att[5] = bg
del(sec['bg'])
sec['normal'] = att
if sec.get('hidden'):
sec['translated'] = ''
cfg.write(out)
|