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 that gets another template and processes it within the current template.
 
 final class Include extends TemplateElement {
 
     private final String encoding;
     private final Boolean parse;
     private final Boolean ignoreMissingExpPrecalcedValue;

    

Parameters:
template the template that this #include is a part of.
includedTemplatePathExp the path of the template to be included.
encodingExp the encoding to be used or null, if it's the default.
parseExp whether the template should be parsed (or is raw text)
 
     Include(Template template,
             Expression includedTemplatePathExp,
             Expression encodingExpExpression parseExpExpression ignoreMissingExpthrows ParseException {
         this. = includedTemplatePathExp;
         
         this. = encodingExp;
         if (encodingExp == null) {
              = null;
         } else {
             if (encodingExp.isLiteral()) {
                 try {
                     TemplateModel tm = encodingExp.eval(null);
                     if (!(tm instanceof TemplateScalarModel)) {
                         throw new ParseException("Expected a string as the value of the \"encoding\" argument",
                                 encodingExp);
                     }
                      = ((TemplateScalarModeltm).getAsString();
                 } catch (TemplateException e) {
                     // evaluation of literals must not throw a TemplateException
                     throw new BugException(e);
                 }
             } else {
                  = null;
             }
         }
         
         this. = parseExp;
         if (parseExp == null) {
              = .;
         } else {
             if (parseExp.isLiteral()) {
                 try {
                     if (parseExp instanceof StringLiteral) {
                         // Legacy
                          = Boolean.valueOf(StringUtil.getYesNo(parseExp.evalAndCoerceToString(null)));
                     } else {
                         try {
                              = Boolean.valueOf(parseExp.evalToBoolean(template.getConfiguration()));
                         } catch(NonBooleanException e) {
                             throw new ParseException("Expected a boolean or string as the value of the parse attribute",
                                     parseExpe);
                         }
                     }
                 } catch (TemplateException e) {
                     // evaluation of literals must not throw a TemplateException
                     throw new BugException(e);
                 }
             } else {
                  = null;
             }
         }
         
         this. = ignoreMissingExp;
         if (ignoreMissingExp != null && ignoreMissingExp.isLiteral()) {
            try {
                try {
                     = Boolean.valueOf(
                            ignoreMissingExp.evalToBoolean(template.getConfiguration()));
                } catch(NonBooleanException e) {
                    throw new ParseException("Expected a boolean as the value of the \"ignore_missing\" attribute",
                            ignoreMissingExpe);
                }
            } catch (TemplateException e) {
                // evaluation of literals must not throw a TemplateException
                throw new BugException(e);
            }
        } else {
             = null;
        }
    }
    
    void accept(Environment envthrows TemplateExceptionIOException {
        final String includedTemplateName = .evalAndCoerceToString(env);
        final String fullIncludedTemplateName;
        try {
            fullIncludedTemplateName = env.toFullTemplateName(getTemplate().getName(), includedTemplateName);
        } catch (MalformedTemplateNameException e) {
            throw new _MiscTemplateException(eenvnew Object[] {
                    "Malformed template name "new _DelayedJQuote(e.getTemplateName()), ":\n",
                    e.getMalformednessDescription() });
        }
        
        final String encoding = this. != null
                ? this.
                : ( != null
                        ? .evalAndCoerceToString(env)
                        : null);
        
        final boolean parse;
        if (this. != null) {
            parse = this..booleanValue();
        } else {
            TemplateModel tm = .eval(env);
            if (tm instanceof TemplateScalarModel) {
                // Legacy
                parse = getYesNo(, EvalUtil.modelToString((TemplateScalarModeltmenv));
            } else {
                parse = .modelToBoolean(tmenv);
            }
        }
        
        final boolean ignoreMissing;
        if (this. != null) {
            ignoreMissing = this..booleanValue();
        } else if ( != null) {
            ignoreMissing = .evalToBoolean(env);
        } else {
            ignoreMissing = false;
        }
        
        final Template includedTemplate;
        try {
            includedTemplate = env.getTemplateForInclusion(fullIncludedTemplateNameencodingparseignoreMissing);
        } catch (IOException e) {
            throw new _MiscTemplateException(eenvnew Object[] {
                    "Template inclusion failed (for parameter value ",
                    new _DelayedJQuote(includedTemplateName),
                    "):\n"new _DelayedGetMessage(e) });
        }
        
        if (includedTemplate != null) {
            env.include(includedTemplate);
        }
    }
    
    protected String dump(boolean canonical) {
        StringBuffer buf = new StringBuffer();
        if (canonicalbuf.append('<');
        buf.append(getNodeTypeSymbol());
        buf.append(' ');
        if ( != null) {
            buf.append(" encoding=").append(.getCanonicalForm());
        }
        if ( != null) {
            buf.append(" parse=").append(.getCanonicalForm());
        }
        if ( != null) {
            buf.append(" ignore_missing=").append(.getCanonicalForm());
        }
        if (canonicalbuf.append("/>");
        return buf.toString();
    }
        return "#include";
    }
    
    int getParameterCount() {
        return 3;
    }
    Object getParameterValue(int idx) {
        switch (idx) {
        case 0: return ;
        case 1: return ;
        case 2: return ;
        case 3: return ;
        defaultthrow new IndexOutOfBoundsException();
        }
    }
    ParameterRole getParameterRole(int idx) {
        switch (idx) {
        case 0: return .;
        case 1: return .;
        case 2: return .;
        case 3: return .;
        defaultthrow new IndexOutOfBoundsException();
        }
    }
    boolean isNestedBlockRepeater() {
        return false;
    }
    private boolean getYesNo(Expression expString sthrows TemplateException {
        try {
           return StringUtil.getYesNo(s);
        }
        catch (IllegalArgumentException iae) {
            throw new _MiscTemplateException(expnew Object[] {
                     "Value must be boolean (or one of these strings: "
                     + "\"n\", \"no\", \"f\", \"false\", \"y\", \"yes\", \"t\", \"true\"), but it was ",
                     new _DelayedJQuote(s), "." });
        }
    }
/*
    boolean heedsOpeningWhitespace() {
        return true;
    }
    boolean heedsTrailingWhitespace() {
        return true;
    }
*/
New to GrepCode? Check out our FAQ X