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.util.Date;
 
A reference to a built-in identifier, such as .root
 
 final class BuiltinVariable extends Expression {
 
     static final String TEMPLATE_NAME_CC = "templateName";
     static final String TEMPLATE_NAME = "template_name";
     static final String MAIN_TEMPLATE_NAME_CC = "mainTemplateName";
     static final String MAIN_TEMPLATE_NAME = "main_template_name";
     static final String CURRENT_TEMPLATE_NAME_CC = "currentTemplateName";
     static final String CURRENT_TEMPLATE_NAME = "current_template_name";
     static final String NAMESPACE = "namespace";
     static final String MAIN = "main";
     static final String GLOBALS = "globals";
     static final String LOCALS = "locals";
     static final String DATA_MODEL_CC = "dataModel";
     static final String DATA_MODEL = "data_model";
     static final String LANG = "lang";
     static final String LOCALE = "locale";
     static final String LOCALE_OBJECT_CC = "localeObject";
     static final String LOCALE_OBJECT = "locale_object";
     static final String CURRENT_NODE_CC = "currentNode";
     static final String CURRENT_NODE = "current_node";
     static final String NODE = "node";
     static final String PASS = "pass";
     static final String VARS = "vars";
     static final String VERSION = "version";
     static final String ERROR = "error";
     static final String OUTPUT_ENCODING_CC = "outputEncoding";
     static final String OUTPUT_ENCODING = "output_encoding";
     static final String URL_ESCAPING_CHARSET_CC = "urlEscapingCharset";
     static final String URL_ESCAPING_CHARSET = "url_escaping_charset";
     static final String NOW = "now";
     
     static final String[] SPEC_VAR_NAMES = new String[] {
         ,
         ,
         ,
         ,
         ,
         ,
         ,
         ,
         ,
         ,
         ,
         ,
         ,
         ,
         ,
         ,
         ,
         ,
         ,
         ,
         ,
         ,
         ,
         ,
         ,
         ,
         ,
         
     };
 
     private final String name;
 
    BuiltinVariable(Token nameTkFMParserTokenManager tokenManagerthrows ParseException {
        String name = nameTk.image;
        if (Arrays.binarySearch(name) < 0) {
            StringBuffer sb = new StringBuffer();
            sb.append("Unknown special variable name: ");
            sb.append(StringUtil.jQuote(name)).append(".");
            
            int shownNamingConvention;
            {
                int namingConvention = tokenManager.namingConvention;
                shownNamingConvention = namingConvention != .
                        ? namingConvention : . /* [2.4] CAMEL_CASE */
            }
            
            sb.append(" The allowed special variable names are: ");
            boolean first = true;
            for (int i = 0; i < .i++) {
                final String correctName = [i];
                int correctNameNamingConvetion = _CoreStringUtils.getIdentifierNamingConvention(correctName);
                if (shownNamingConvention == . 
                        ? correctNameNamingConvetion != .
                        : correctNameNamingConvetion != .) {
                    if (first) {
                        first = false;
                    } else {
                        sb.append(", ");
                    }
                    sb.append(correctName);
                }
            }
            throw new ParseException(sb.toString(), nullnameTk);
        }
        
        this. = name.intern();
    }
        if ( == ) {
            return env.getCurrentNamespace();
        }
        if ( == ) {
            return env.getMainNamespace();
        }
        if ( == ) {
            return env.getGlobalVariables();
        }
        if ( == ) {
            Macro.Context ctx = env.getCurrentMacroContext();
            return ctx == null ? null : ctx.getLocals();
        }
        if ( ==  ||  == ) {
            return env.getDataModel();
        }
        if ( == ) {
            return new VarsHash(env);
        }
        if ( == ) {
            return new SimpleScalar(env.getLocale().toString());
        }
        if ( ==  ||  == ) {
            return env.getObjectWrapper().wrap(env.getLocale());
        }
        if ( == ) {
            return new SimpleScalar(env.getLocale().getLanguage());
        }
        if ( ==  ||  ==  ||  == ) {
            return env.getCurrentVisitorNode();
        }
        if ( ==  ||  == ) {
            // The behavior of env.getTemplate() was changed with IcI 2.3.22, but there was an unintended side effect
            // of changing the behavior of .template_name, which was fixed with IcI 2.3.23. IcI 2.3.22 deliberately
            // remains broken.
                    ? new SimpleScalar(env.getTemplate230().getName())
                    : new SimpleScalar(env.getTemplate().getName());
        }
        if ( ==  ||  == ) {
            return SimpleScalar.newInstanceOrNull(env.getMainTemplate().getName());
        }
        if ( ==  ||  == ) {
            return SimpleScalar.newInstanceOrNull(env.getCurrentTemplate().getName());
        }
        if ( == ) {
            return .;
        }
        if ( == ) {
            return new SimpleScalar(Configuration.getVersionNumber());
        }
        if ( ==  ||  == ) {
            String s = env.getOutputEncoding();
            return SimpleScalar.newInstanceOrNull(s);
        }
        if ( ==  ||  == ) {
            String s = env.getURLEscapingCharset();
            return SimpleScalar.newInstanceOrNull(s);
        }
        if ( == ) {
            return new SimpleScalar(env.getCurrentRecoveredErrorMessage());
        }
        if ( == ) {
            return new SimpleDate(new Date(), .);
        }
        throw new _MiscTemplateException(thisnew Object[] { "Invalid built-in variable: " });
    }
    public String toString() {
        return "." + ;
    }
    public String getCanonicalForm() {
        return "." + ;
    }
    
        return getCanonicalForm();
    }
    boolean isLiteral() {
        return false;
    }
            String replacedIdentifierExpression replacementReplacemenetState replacementState) {
        return this;
    }
    static class VarsHash implements TemplateHashModel {
        
        Environment env;
        
        VarsHash(Environment env) {
            this. = env;
        }
        
        public TemplateModel get(String keythrows TemplateModelException {
            return .getVariable(key);
        }
        
        public boolean isEmpty() {
            return false;
        }
    }
    
    int getParameterCount() {
        return 0;
    }
    Object getParameterValue(int idx) {
        throw new IndexOutOfBoundsException();
    }
    ParameterRole getParameterRole(int idx) {
        throw new IndexOutOfBoundsException();
    }
    
New to GrepCode? Check out our FAQ X