3 """Parse event definitions out of comments in source files."""
15 args
= filter(lambda s
: 'A' <= s
[0] <= 'Z', glob
.glob("*.py"))
17 print "No arguments, no [A-Z]*.py files."
19 for line
in fileinput
.input(args
):
22 sublist
.append('file %s' % fileinput
.filename())
23 sublist
.append('line %d' % fileinput
.lineno())
24 sublist
.append(line
[2:-1].strip())
36 words
= line
.split(None, 1)
43 if d
.has_key('event'):
46 print "Multiple event keys in", d
47 print 'File "%s", line %d' % (d
['file'], d
['line'])
50 print "Duplicate event in", d
51 print 'File "%s", line %d' % (d
['file'], d
['line'])
55 print "No event key in", d
56 print 'File "%s", line %d' % (d
['file'], d
['line'])
57 winevents
= getevents(dd
, "win")
58 unixevents
= getevents(dd
, "unix")
60 f
= open("keydefs.py", "w")
63 print "windows_keydefs = \\"
64 pprint
.pprint(winevents
)
66 print "unix_keydefs = \\"
67 pprint
.pprint(unixevents
)
72 def getevents(dd
, key
):
78 if d
.has_key(key
) or d
.has_key("all"):
80 for x
in d
.get(key
, []) + d
.get("all", []):
82 if key
== "unix" and x
[:5] == "<Alt-":
88 if __name__
== '__main__':