Changeset 9

Show
Ignore:
Timestamp:
12/08/04 12:38:48 (4 years ago)
Author:
steve
Message:

loop counter variables

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/airspeed.py

    r8 r9  
    160160    def evaluate(self, output_stream, namespace): 
    161161        values = self.eval_expression(self.expression, namespace) 
     162        counter = 1 
    162163        for value in values: 
    163164            local_namespace = BlockEvaluator.LocalNamespace(namespace) 
    164165            local_namespace[self.iter_var] = value 
     166            local_namespace['velocityCount'] = counter 
    165167            BlockEvaluator.evaluate(self, output_stream, local_namespace) 
     168            counter += 1 
    166169 
    167170 
  • trunk/airspeed_test.py

    r8 r9  
    103103        self.assertEquals("Hello to Chris Steve. Goodbye to Chris Steve. ", template.merge(namespace)) 
    104104 
     105    def test_loop_counter_variable_available_in_loops(self): 
     106        template = airspeed.Template("#foreach ($word in $greetings)$velocityCount,#end") 
     107        namespace = {"greetings": ["Hello", "Goodbye"]} 
     108        self.assertEquals("1,2,", template.merge(namespace)) 
     109 
     110    def test_loop_counter_variables_do_not_clash_in_nested_loops(self): 
     111        template = airspeed.Template("#foreach ($word in $greetings)outer $velocityCount#foreach ($word in $names), inner $velocityCount#end. #end") 
     112        namespace = {"greetings": ["Hello", "Goodbye"], "names": ["Chris", "Steve"]} 
     113        self.assertEquals("outer 1, inner 1, inner 2. outer 2, inner 1, inner 2. ", template.merge(namespace)) 
    105114 
    106115