Changeset 361:22ef1ce94194 in livinglogic.java.ul4

Show
Ignore:
Timestamp:
02/14/11 13:02:33 (8 years ago)
Author:
Walter Doerwald <walter@…>
Branch:
default
Message:

Add proper control flow handling for the render opcode.

I.e. return from the iterator whe the sub template has produced output,
but continue with the dispatch loop if the output is empty.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • library/src/com/livinglogic/ul4/InterpretedTemplate.java

    r360 r361  
    15481548                            } 
    15491549                            else 
    1550                                 nextChunk = ((Template)reg[code.r1]).renders((Map)reg[code.r2]); 
    1551                             break; 
     1550                            { 
     1551                                String output = ((Template)reg[code.r1]).renders((Map)reg[code.r2]); 
     1552                                if (output.length() != 0) 
     1553                                { 
     1554                                    nextChunk = output; 
     1555                                    ++pc; 
     1556                                    return; 
     1557                                } 
     1558                                break; 
     1559                            } 
    15521560                        case Opcode.OC_DEF: 
    15531561                            variables.put(code.arg, new InterpretedTemplate(source.substring(code.location.endtag, opcodes.get(code.jump).location.starttag), opcodes, startdelim, enddelim, pc+1, code.jump));