-
Notifications
You must be signed in to change notification settings - Fork 1
/
_vocode.py
73 lines (53 loc) · 1.46 KB
/
_vocode.py
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
from dragonfly import *
import logging
from lib import *
from rules import *
from knowledge import *
__VERSION__ = "0.1"
grammars = []
print("")
print(">>> Vocode v%s now starting" % __VERSION__)
logging.getLogger("vimstate").setLevel(logging.INFO)
state = VimState()
normal_rules = VimNormalRules()
normal_rules.parent = state
insert_rules = VimInsertRules()
insert_rules.parent = state
common_rules = VimCommonRules()
python_rules = PythonRules()
# Associate grammars with Vim states
state.grammars['NORMAL'] += [normal_rules, common_rules]
state.grammars['INSERT'] += [insert_rules, python_rules, common_rules]
def register_grammar(name, rules):
gram = Grammar(name)
print("Registering grammar %s" % name)
for r in rules:
print("Adding rule %s" % str(r))
gram.add_rule(r)
gram.load()
global grammars
grammars.append(gram)
class MetaRules(MappingRule):
name = "meta"
mapping = {
'(lock Dragon | deactivate | sleep | shut up)': Playback([(["go", "to", "sleep"], 0.0)])
}
extras = []
defaults = {}
# Create our main grammar with rules
register_grammar("vocode_vim", [normal_rules, insert_rules, common_rules])
register_grammar("vocode_meta", [MetaRules()])
register_grammar("vocode_lang", [python_rules])
# MUST be called last
normal_rules.disable()
insert_rules.disable()
common_rules.disable()
python_rules.disable()
state.init()
def unload():
global grammars
print("Unloading Vocode...")
for g in grammars:
if g: g.unload()
g = None
grammars = []