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;
 
 
An instruction to visit the children of a node.
 
 final class RecurseNode extends TemplateElement {
     
     
     RecurseNode(Expression targetNodeExpression namespaces) {
         this. = targetNode;
         this. = namespaces;
     }
 
     void accept(Environment envthrows IOExceptionTemplateException {
         TemplateModel node =  == null ? null : .eval(env);
         if (node != null && !(node instanceof TemplateNodeModel)) {
             throw new NonNodeException(node"node"env);
         }
         
         TemplateModel nss =  == null ? null : .eval(env);
         if ( instanceof StringLiteral) {
             nss = env.importLib(((TemplateScalarModelnss).getAsString(), null);
         }
         else if ( instanceof ListLiteral) {
             nss = ((ListLiteral).evaluateStringsToNamespaces(env);
         }
         if (nss != null) {
             if (nss instanceof TemplateHashModel) {
                 SimpleSequence ss = new SimpleSequence(1);
                 ss.add(nss);
                 nss = ss;
             }
             else if (!(nss instanceof TemplateSequenceModel)) {
                 if ( != null) {
                     throw new NonSequenceException(nssenv);
                 } else {
                     // Should not occur
                     throw new _MiscTemplateException(env"Expecting a sequence of namespaces after \"using\"");
                 }
             }
         }
         
         env.recurse((TemplateNodeModelnode, (TemplateSequenceModelnss);
     }
 
     protected String dump(boolean canonical) {
         StringBuffer sb = new StringBuffer();
         if (canonicalsb.append('<');
         sb.append(getNodeTypeSymbol());
         if ( != null) {
             sb.append(' ');
             sb.append(.getCanonicalForm());
         }
         if ( != null) {
             sb.append(" using ");
             sb.append(.getCanonicalForm());
         }
         if (canonicalsb.append("/>");
         return sb.toString();
     }
 
     String getNodeTypeSymbol() {
         return "#recurse";
     }
 
     int getParameterCount() {
         return 2;
     }
 
     Object getParameterValue(int idx) {
         switch (idx) {
        case 0: return ;
        case 1: return ;
        defaultthrow new IndexOutOfBoundsException();
        }
    }
    ParameterRole getParameterRole(int idx) {
        switch (idx) {
        case 0: return .;
        case 1: return .;
        defaultthrow new IndexOutOfBoundsException();
        }
    }
    boolean isNestedBlockRepeater() {
        return false;
    }
    
New to GrepCode? Check out our FAQ X