3 """Parse event definitions out of comments in source files."""
19 args
= filter(lambda s
: 'A' <= s
[0] <= 'Z', glob
.glob("*.py"))
21 print "No arguments, no [A-Z]*.py files."
23 for line
in fileinput
.input(args
):
26 sublist
.append('file %s' % fileinput
.filename())
27 sublist
.append('line %d' % fileinput
.lineno())
28 sublist
.append(string
.strip(line
[2:-1]))
40 words
= string
.split(line
, None, 1)
47 if d
.has_key('event'):
50 print "Multiple event keys in", d
51 print 'File "%s", line %d' % (d
['file'], d
['line'])
54 print "Duplicate event in", d
55 print 'File "%s", line %d' % (d
['file'], d
['line'])
59 print "No event key in", d
60 print 'File "%s", line %d' % (d
['file'], d
['line'])
61 winevents
= getevents(dd
, "win")
62 unixevents
= getevents(dd
, "unix")
64 f
= open("keydefs.py", "w")
67 print "windows_keydefs = \\"
68 pprint
.pprint(winevents
)
70 print "unix_keydefs = \\"
71 pprint
.pprint(unixevents
)
76 def getevents(dd
, key
):
82 if d
.has_key(key
) or d
.has_key("all"):
84 for x
in d
.get(key
, []) + d
.get("all", []):
86 if key
== "unix" and x
[:5] == "<Alt-":
92 if __name__
== '__main__':