Revision 47734 trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/programming/WhileFunction.java

View differences:

WhileFunction.java
7 7
import org.gvsig.expressionevaluator.Formatter;
8 8
import org.gvsig.expressionevaluator.Function;
9 9
import org.gvsig.expressionevaluator.Interpreter;
10
import org.gvsig.expressionevaluator.PrettyFormatter;
10 11
import org.gvsig.expressionevaluator.impl.function.programming.BreakFunction.BreakException;
11 12
import org.gvsig.expressionevaluator.impl.function.programming.ReturnFunction.ReturnException;
12 13
import org.gvsig.expressionevaluator.spi.AbstractFunction;
......
79 80

  
80 81
    @Override
81 82
    public String toString(Codes args, Formatter<Code> formatter) {
82
        StringBuilder builder = new StringBuilder();
83
        builder.append("WHILE \"");
84
        builder.append(args.get(0).toString(formatter));
85
        builder.append(" LOOP ");
86
        builder.append(args.get(1).toString(formatter));
87
        builder.append(" END LOOP");
88
        return builder.toString();
83
        Code codeCondition = args.get(0);
84
        Code codeLoopBody = args.get(1);
85
        PrettyFormatter builder = PrettyFormatter.get(formatter);
86
        try {
87
            builder.push();
88
            builder.append("WHILE ");
89
            builder.append(codeCondition.toString(formatter));
90
            builder.append(" LOOP ");
91
            builder.indent();
92
            builder.nl();
93
            if( Code.isFunction(codeLoopBody,"BLOCK") ) {
94
                Code.Callable block = (Code.Callable)codeLoopBody;
95
                for (Code parameter : block.parameters()) {
96
                    builder.nl();
97
                    builder.append(parameter.toString(formatter));
98
                    builder.append("; ");
99
                }
100
            } else {
101
                builder.nl();
102
                builder.append(codeLoopBody.toString(formatter));
103
                builder.append(" ");
104
            }            
105
            builder.unindent();
106
            builder.nl();
107
            builder.append("END LOOP ");
108
            return builder.build();
109
        } finally {
110
            builder.pop();
111
        }
89 112
    }
90
    
91
}
113

  
114
}

Also available in: Unified diff