Changeset 578 for cly/trunk/cly/parser.py
- Timestamp:
- 07/20/08 22:46:52 (5 months ago)
- Files:
-
- cly/trunk/cly/parser.py (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
cly/trunk/cly/parser.py
r577 r578 30 30 self.node = node 31 31 32 def parse_help(node): 33 help = node.help(context) 34 if isinstance(help, basestring): 35 if node.name == node.pattern: 36 return [(node.name, help)] 37 else: 38 return [('<%s>' % node.name, help)] 39 else: 40 return help 41 32 42 def add_help(node): 33 node_help = sorted( node.help(context))43 node_help = sorted(parse_help(node)) 34 44 for help in node_help: 35 45 self.help.append((node.group, node.order, help[0], help[1])) … … 46 56 >>> from cly.builder import Grammar, Node, Help 47 57 >>> context = Context(None, None) 58 >>> class Test(Node): 59 ... def help(self, context): 60 ... return 'HELP!' 48 61 >>> help = HelpParser(context, Grammar( 49 62 ... one=Node(help='1'), 50 ... two=Node(help=Help.pair('<two>', '2'), group=2))) 63 ... two=Node(help=Help.pair('<two>', '2'), group=2), 64 ... three=Test(help='HELP!'), 65 ... )) 51 66 >>> list(help) 52 [(0, 'one', '1'), ( 2, '<two>', '2')]67 [(0, 'one', '1'), (0, 'three', 'HELP!'), (2, '<two>', '2')] 53 68 """ 54 69 … … 357 372 if where is None: 358 373 assert hasattr(grammar, 'graft'), \ 359 'need either an explicit "where" or a "graft" attribute on ' 374 'need either an explicit "where" or a "graft" attribute on ' \ 360 375 'the <grammar> root' 361 376 where = grammar.graft
