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: Macro.java 746438 2009-02-21 05:41:24Z nbubna $
-
Field Summary
FieldsFields inherited from interface org.apache.velocity.runtime.directive.DirectiveConstants
BLOCK, LINE
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic void
checkArgs
(RuntimeServices rs, Token t, Node node, String sourceTemplate) Used by Parser.java to do further parameter checking for macro arguments.private static String[]
getArgArray
(Node node, RuntimeServices rsvc) Creates an array containing the literal text from the macro arguement(s) (including the macro's name as the first arg).getName()
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 final StringBuffer
macroToString
(StringBuffer buf, String[] argArray) 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, getTemplateName, makeScope, postRender, preRender, setLocation, setLocation
-
Field Details
-
debugMode
private static boolean debugMode
-
-
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. -
checkArgs
public static void checkArgs(RuntimeServices rs, Token t, Node node, String sourceTemplate) throws IOException, ParseException Used by Parser.java to do further parameter checking for macro arguments.- Throws:
IOException
ParseException
-
getArgArray
Creates an array containing the literal text from the macro arguement(s) (including the macro's name as the first arg).- Parameters:
node
- The parse node from which to grok the argument list. It's expected to include the block node tree (for the macro body).rsvc
- For debugging purposes only.- Returns:
- array of arguments
-
macroToString
For debugging purposes. Formats the arguments fromargArray
and appends them tobuf
.- Parameters:
buf
- A StringBuffer. If null, a new StringBuffer is allocated.argArray
- The Macro arguments to format- Returns:
- A StringBuffer containing the formatted arguments. If a StringBuffer has passed in as buf, this method returns it.
- Since:
- 1.5
-