Newer
Older
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
import json
content = json.loads(open('help.json').read())
d = {}
for key in content:
if key in d:
raise ValueError('Duplicated key {}'.format(key))
else:
d[key]=''
item=content[key]
if 'title' not in item:
raise ValueError('Missing key : title in {}'.format(key))
if 'description' not in item:
raise ValueError('Missing key : description in {}'.format(key))
if 'options' in item:
if len(item['options']) < 1:
raise ValueError('Empty options in {}'.format(key))
for option in item['options']:
if option not in content:
raise ValueError('Missing item {} in {}'.format(option, key))
elif 'action' not in item:
raise ValueError('Missing action in {}'.format(key))
# Check cycle
def run(key, content, path):
if key in path:
raise ValueError('Cycling path {}'.format(path))
path.append(key)
item=content[key]
if 'action' in item:
path.append(item['action'])
print(path)
return None
else:
for option in item['options']:
run(option, content, path.copy())
run('root', content, [])