Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2014 Attila Szegedi, Daniel Dekany, Jonathan Revusky
   * 
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   * 
   * http://www.apache.org/licenses/LICENSE-2.0
   * 
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
 package freemarker.core;
 
 import java.io.Writer;
 import java.util.Map;
 
Like [#local x]...[/#local].
 
 final class BlockAssignment extends TemplateElement {
 
     private final String varName;
     private final Expression namespaceExp;
     private final int scope;
 
     BlockAssignment(TemplateElement nestedBlockString varNameint scopeExpression namespaceExp) {
         setNestedBlock(nestedBlock);
         this. = varName;
         this. = namespaceExp;
         this. = scope;
     }
 
     void accept(Environment envthrows TemplateExceptionIOException {
         if (getNestedBlock() != null) {
             env.visitAndTransform(getNestedBlock(), new CaptureOutput(env), null);
         } else {
 			TemplateModel value = new SimpleScalar("");
 			if ( != null) {
 				ns.put(value);
  			} else if ( == .) {
 				env.setVariable(value);
 			} else if ( == .) {
 				env.setGlobalVariable(value);
 			} else if ( == .) {
 				env.setLocalVariable(value);
 			}
 		}
     }
 
     private class CaptureOutput implements TemplateTransformModel {
         private final Environment env;
         private final Environment.Namespace fnsModel;
         
         CaptureOutput(Environment envthrows TemplateException {
             this. = env;
             TemplateModel nsModel = null;
             if( != null) {
                 nsModel = .eval(env);
                 if (!(nsModel instanceof Environment.Namespace)) {
                     throw new NonNamespaceException(nsModelenv);
                 }
             }
              = (Environment.Namespace )nsModel
         }
         
         public Writer getWriter(Writer outMap args) {
             return new StringWriter() {
                 public void close() {
                     SimpleScalar result = new SimpleScalar(toString());
                     switch() {
                         case .: {
                             if( != null) {
                                 .put(result);
                             }
                             else {
                                 .setVariable(result);
                             }
                             break;
                         }
                         case .: {
                             .setLocalVariable(result);
                             break;
                         }
                         case .: {
                             .setGlobalVariable(result);
                             break;
                        }
                    }
                }
            };
        }
    }
    
    protected String dump(boolean canonical) {
        StringBuffer sb = new StringBuffer();
        if (canonicalsb.append("<");
        sb.append(getNodeTypeSymbol());
        sb.append(' ');
        sb.append();
        if ( != null) {
            sb.append(" in ");
            sb.append(.getCanonicalForm());
        }
        if (canonical) {
            sb.append('>');
            sb.append(getNestedBlock() == null ? "" : getNestedBlock().getCanonicalForm());
            sb.append("</");
            sb.append(getNodeTypeSymbol());
            sb.append('>');
        } else {
            sb.append(" = .nested_output");
        }
        return sb.toString();
    }
    
        return Assignment.getDirectiveName();
    }
    
    int getParameterCount() {
        return 3;
    }
    Object getParameterValue(int idx) {
        switch (idx) {
        case 0: return ;
        case 1: return new Integer();
        case 2: return ;
        defaultthrow new IndexOutOfBoundsException();
        }
    }
    ParameterRole getParameterRole(int idx) {
        switch (idx) {
        case 0: return .;
        case 1: return .;
        case 2: return .;
        defaultthrow new IndexOutOfBoundsException();
        }
    }
    boolean isNestedBlockRepeater() {
        return false;
    }
New to GrepCode? Check out our FAQ X