Changeset 26
- Timestamp:
- 19/08/04 12:59:29 (4 years ago)
- Files:
-
- trunk/airspeed.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/airspeed.py
r25 r26 511 511 512 512 class ForeachDirective(_Element): 513 START = re.compile(r'#foreach\s*\(\s*\$([a-z_][a-z0-9_]*)\s*in\s*(.*)$', re.S + re.I) 514 END = re.compile(r'\s*\)(.*)$', re.S) 513 START = re.compile(r'#foreach\b(.*)$', re.S + re.I) 514 OPEN_PAREN = re.compile(r'[ \t]*\(\s*(.*)$', re.S) 515 IN = re.compile(r'[ \t]+in[ \t]+(.*)$', re.S) 516 LOOP_VAR_NAME = re.compile(r'\$([a-z_][a-z0-9_]*)(.*)$', re.S + re.I) 517 CLOSE_PAREN = re.compile(r'[ \t]*\)(.*)$', re.S) 515 518 516 519 def parse(self): 517 520 ## Could be cleaner b/c syntax error if no '(' 518 self.loop_var_name, = self.identity_match(self.START) 521 self.identity_match(self.START) 522 self.require_match(self.OPEN_PAREN, '(') 523 self.loop_var_name, = self.require_match(self.LOOP_VAR_NAME, 'loop var name') 524 self.require_match(self.IN, 'in') 519 525 self.value = self.next_element(Value) 520 self.require_match(self. END, ')')526 self.require_match(self.CLOSE_PAREN, ')') 521 527 self.block = self.next_element(Block) 522 528 self.require_next_element(End, '#end')
