Changeset 53
- Timestamp:
- 02/02/06 22:04:52 (2 years ago)
- Files:
-
- trunk/airspeed.py (modified) (2 diffs)
- trunk/airspeed_test.py (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/airspeed.py
r52 r53 27 27 operator.__eq__ = lambda a, b: a == b 28 28 operator.__ne__ = lambda a, b: a != b 29 operator.mod = lambda a, b: a % b 29 30 try: 30 31 basestring … … 450 451 451 452 class BinaryOperator(_Element): 452 BINARY_OP = re.compile(r'\s*(>=|<=|<|==|!=|>| \|\||&&)\s*(.*)$', re.S)453 BINARY_OP = re.compile(r'\s*(>=|<=|<|==|!=|>|%|\|\||&&)\s*(.*)$', re.S) 453 454 OPERATORS = {'>' : operator.__gt__, '>=': operator.__ge__, 454 455 '<' : operator.__lt__, '<=': operator.__le__, 455 456 '==': operator.__eq__, '!=': operator.__ne__, 457 '%' : operator.mod, 456 458 '||': lambda a,b : boolean_value(a) or boolean_value(b), 457 459 '&&': lambda a,b : boolean_value(a) and boolean_value(b)} trunk/airspeed_test.py
r52 r53 531 531 self.assertEquals('works', template.merge({}, loader=Loader())) 532 532 533 def test_modulus_operator(self): 534 template = airspeed.Template('#set( $modulus = ($value % 2) )$modulus') 535 self.assertEquals('1', template.merge({'value': 3})) 536 533 537 534 538 # … … 536 540 # 537 541 # Report locations for template errors in strings 538 # Math expressions 542 # Math expressions (requires operator precedence) 539 543 # Gobbling up whitespace (tricky!) 540 544 # Bind #macro calls at compile time? … … 544 548 # Q. What is scope of #set ($customer.Name = 'john') ??? 545 549 # Scope of #set across if/elseif/else? 546 # Scope of namespace for #parse etc547 550 # 548 551
