Class Parse

  • All Implemented Interfaces:
    java.lang.Cloneable, DirectiveConstants

    public class Parse
    extends InputBase
    Pluggable directive that handles the #parse() statement in VTL.
     Notes:
     -----
      1) The parsed source material can only come from somewhere in
        the TemplateRoot tree for security reasons. There is no way
        around this.  If you want to include content from elsewhere on
        your disk, use a link from somewhere under Template Root to that
        content.
    
      2) There is a limited parse depth.  It is set as a property
        "directive.parse.max_depth = 10" by default.  This 10 deep
        limit is a safety feature to prevent infinite loops.
     
    Version:
    $Id$
    Author:
    Geir Magnusson Jr., Jason van Zyl, Christoph Reck
    • Field Detail

      • strictRef

        public boolean strictRef
        Indicates if we are running in strict reference mode.
    • Constructor Detail

      • Parse

        public Parse()
    • Method Detail

      • getName

        public java.lang.String getName()
        Return name of this directive.
        Specified by:
        getName in class Directive
        Returns:
        The name of this directive.
      • getScopeName

        public java.lang.String getScopeName()
        Overrides the default to use "template", so that all templates can use the same scope reference, whether rendered via #parse or direct merge.
        Overrides:
        getScopeName in class Directive
        Returns:
        the name to be used when a scope control is provided for this directive.
      • getType

        public int getType()
        Return type of this directive.
        Specified by:
        getType in class Directive
        Returns:
        The type of this directive.
      • checkArgs

        public void checkArgs​(java.util.ArrayList<java.lang.Integer> argtypes,
                              Token t,
                              java.lang.String templateName)
                       throws ParseException
        Called by the parser to validate the argument types
        Overrides:
        checkArgs in class Directive
        Parameters:
        argtypes - type, Array of argument types of each argument to the directive for example StandardParserTreeConstants.JJTWORD
        t - token of directive
        templateName - the name of the template this directive is referenced in.
        Throws:
        ParseException
      • getTemplate

        protected Template getTemplate​(java.lang.String path,
                                       java.lang.String encoding)
                                throws ResourceNotFoundException
        Find the template to render in the appropriate encoding
        Parameters:
        path - template path
        encoding - template encoding
        Returns:
        found template
        Throws:
        ResourceNotFoundException - if template was not found
        Since:
        2.4