Changeset 793:7527b078e77e in livinglogic.java.ul4

Show
Ignore:
Timestamp:
02/05/13 16:03:06 (6 years ago)
Author:
Walter Doerwald <walter@…>
Branch:
default
Message:

Split unpackvariables to have a standalone version again.

Add EvaluationContext?.pushVariables().

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • src/main/java/com/livinglogic/ul4/EvaluationContext.java

    r787 r793  
    119119 
    120120    /** 
    121      * Set a new map containing the template variables in front of the map chain 
    122      * and return the previous one. 
     121     * Set a new map containing the template variables and return the previous one. 
    123122     */ 
    124123    public Map<String, Object> setVariables(Map<String, Object> variables) 
     
    133132 
    134133    /** 
     134     * Replace the map containing the template variables with a new map that 
     135     * deferres non-existant keys to the previous one and return the previous one. 
     136     */ 
     137    public Map<String, Object> pushVariables(Map<String, Object> variables) 
     138    { 
     139        if (variables == null) 
     140            variables = new HashMap<String, Object>(); 
     141        return setVariables(new MapChain<String, Object>(variables, getVariables())); 
     142    } 
     143 
     144 
     145    /** 
    135146     * Return the {@code Writer} object where template output is written to. 
    136147     */ 
     
    184195    } 
    185196 
    186     public void unpackVariable(Object varname, Object item) 
     197    public static void unpackVariable(Map<String, Object> variables, Object varname, Object item) 
    187198    { 
    188199        if (varname instanceof String) 
    189200        { 
    190             put((String)varname, item); 
     201            if ("self".equals(varname)) 
     202                throw new RuntimeException("can't assign to self"); 
     203            variables.put((String)varname, item); 
    191204        } 
    192205        else 
     
    202215                    if (i < varnameCount) 
    203216                    { 
    204                         unpackVariable(varnames.get(i), itemIter.next()); 
     217                        unpackVariable(variables, varnames.get(i), itemIter.next()); 
    205218                    } 
    206219                    else 
     
    222235            } 
    223236        } 
     237    } 
     238 
     239    public void unpackVariable(Object varname, Object item) 
     240    { 
     241        unpackVariable(getVariables(), varname, item); 
    224242    } 
    225243