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 voidcheckArgs(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.intgetType()Return type of this directive.voidinit(RuntimeServices rs, InternalContextAdapter context, Node node) How this directive is to be initialized.booleanSince this class does no processing of content, there is never a need for an internal scope.static final StringBuffermacroToString(StringBuffer buf, String[] argArray) For debugging purposes.booleanrender(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:
isScopeProvidedin 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:
renderin 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:DirectiveHow 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:
IOExceptionParseException
-
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 fromargArrayand 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
-