Class RuntimeMacro

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

    public class RuntimeMacro
    extends Directive
    This class acts as a proxy for potential macros. When the AST is built this class is inserted as a placeholder for the macro (whether or not the macro is actually defined). At render time we check whether there is a implementation for the macro call. If an implementation cannot be found the literal text is rendered.
    Since:
    1.6
    • Field Detail

      • strictRef

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

      • RuntimeMacro

        public RuntimeMacro​(java.lang.String macroName)
        Create a RuntimeMacro instance. Macro name and source template stored for later use.
        Parameters:
        macroName - name of the macro
    • Method Detail

      • getName

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

        public java.lang.String getScopeName()
        Override to always return "macro". We don't want to use the macro name here, since when writing VTL that uses the scope, we are within a #macro call. The macro name will instead be used as the scope name when defining the body of a BlockMacro.
        Overrides:
        getScopeName in class Directive
      • getType

        public int getType()
        Velocimacros are always LINE type directives.
        Specified by:
        getType in class Directive
        Returns:
        The type of this directive.
      • init

        public void init​(RuntimeServices rs,
                         InternalContextAdapter context,
                         Node node)
        Intialize the Runtime macro. At the init time no implementation so we just save the values to use at the render time.
        Overrides:
        init in class Directive
        Parameters:
        rs - runtime services
        context - InternalContextAdapter
        node - node containing the macro call