Class Macro
java.lang.Object
org.apache.velocity.runtime.directive.Directive
org.apache.velocity.runtime.directive.Macro
- All Implemented Interfaces:
Cloneable
,DirectiveConstants
Macro implements the macro definition directive of VTL.
example:
#macro( isnull $i )
#if( $i )
$i
#end
#end
This object is used at parse time to mainly process and register the
macro. It is used inline in the parser when processing a directive.
- Version:
- $Id$
- Author:
- Geir Magnusson Jr., Henning P. Schmiedehausen
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
MacroArgs holds the information for a single argument in a macro definition. -
Field Summary
Fields inherited from interface org.apache.velocity.runtime.directive.DirectiveConstants
BLOCK, LINE
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
Check the argument types of a macro call, called by the parser to do validationgetName()
Return name of this directive.int
getType()
Return type of this directive.void
init
(RuntimeServices rs, InternalContextAdapter context, Node node) How this directive is to be initialized.boolean
Since this class does no processing of content, there is never a need for an internal scope.static StringBuilder
macroToString
(StringBuilder buf, List<Macro.MacroArg> macroArgs, RuntimeServices rsvc) For debugging purposes.boolean
render
(InternalContextAdapter context, Writer writer, Node node) render() doesn't do anything in the final output rendering.Methods inherited from class org.apache.velocity.runtime.directive.Directive
getColumn, getLine, getScopeName, getTemplate, getTemplateName, makeScope, postRender, preRender, setLocation, setLocation
-
Constructor Details
-
Macro
public Macro()
-
-
Method Details
-
getName
Return name of this directive. -
getType
public int getType()Return type of this directive. -
isScopeProvided
public boolean isScopeProvided()Since this class does no processing of content, there is never a need for an internal scope.- Overrides:
isScopeProvided
in classDirective
- Returns:
- true if there will be a scope control injected into the context when rendering this directive.
-
render
render() doesn't do anything in the final output rendering. There is no output from a #macro() directive.- Specified by:
render
in classDirective
- Parameters:
context
-writer
-node
-- Returns:
- True if the directive rendered successfully.
- Throws:
IOException
-
init
public void init(RuntimeServices rs, InternalContextAdapter context, Node node) throws TemplateInitException Description copied from class:Directive
How this directive is to be initialized.- Overrides:
init
in classDirective
- Parameters:
rs
-context
-node
-- Throws:
TemplateInitException
- See Also:
-
checkArgs
public void checkArgs(ArrayList<Integer> argtypes, Token t, String templateName) throws ParseException Check the argument types of a macro call, called by the parser to do validation- Overrides:
checkArgs
in classDirective
- Parameters:
argtypes
- type, Array of argument types of each argument to the directive for example StandardParserTreeConstants.JJTWORDt
- token of directivetemplateName
- the name of the template this directive is referenced in.- Throws:
ParseException
-
macroToString
public static StringBuilder macroToString(StringBuilder buf, List<Macro.MacroArg> macroArgs, RuntimeServices rsvc) For debugging purposes. Formats the arguments fromargArray
and appends them tobuf
.- Parameters:
buf
- A StringBuilder. If null, a new StringBuilder is allocated.macroArgs
- Array of macro arguments, containing the #macro() arguments and default values. the 0th is the name.- Returns:
- A StringBuilder containing the formatted arguments. If a StringBuilder has passed in as buf, this method returns it.
- Since:
- 1.5
-