org.apache.velocity.runtime.directive
Class Macro

java.lang.Object
  extended by org.apache.velocity.runtime.directive.Directive
      extended by org.apache.velocity.runtime.directive.Macro
All Implemented Interfaces:
Cloneable, DirectiveConstants

public class Macro
extends Directive

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 752614 2009-03-11 21:03:52Z nbubna $
Author:
Geir Magnusson Jr., Henning P. Schmiedehausen

Nested Class Summary
static class Macro.MacroArg
          MacroArgs holds the information for a single argument in a macro definition.
 
Field Summary
 
Fields inherited from class org.apache.velocity.runtime.directive.Directive
rsvc
 
Fields inherited from interface org.apache.velocity.runtime.directive.DirectiveConstants
BLOCK, LINE
 
Constructor Summary
Macro()
           
 
Method Summary
 void checkArgs(ArrayList<Integer> argtypes, Token t, String templateName)
          Check the argument types of a macro call, called by the parser to do validation
 String 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 isScopeProvided()
          Since this class does no processing of content, there is never a need for an internal scope.
static StringBuffer macroToString(StringBuffer buf, List<Macro.MacroArg> macroArgs)
          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
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Macro

public Macro()
Method Detail

getName

public String getName()
Return name of this directive.

Specified by:
getName in class Directive
Returns:
The name of this directive.

getType

public int getType()
Return type of this directive.

Specified by:
getType in class Directive
Returns:
The 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 class Directive
Returns:
true if there will be a scope control injected into the context when rendering this directive.

render

public boolean render(InternalContextAdapter context,
                      Writer writer,
                      Node node)
               throws IOException
render() doesn't do anything in the final output rendering. There is no output from a #macro() directive.

Specified by:
render in class Directive
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 class Directive
Throws:
TemplateInitException
See Also:
Directive.init(org.apache.velocity.runtime.RuntimeServices, org.apache.velocity.context.InternalContextAdapter, org.apache.velocity.runtime.parser.node.Node)

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 class Directive
Parameters:
argtypes - type, Array of argument types of each argument to the directive for example ParserTreeConstants.JJTWORD
t - token of directive
templateName - the name of the template this directive is referenced in.
Throws:
ParseException

macroToString

public static final StringBuffer macroToString(StringBuffer buf,
                                               List<Macro.MacroArg> macroArgs)
For debugging purposes. Formats the arguments from argArray and appends them to buf.

Parameters:
buf - A StringBuffer. If null, a new StringBuffer is allocated.
macroArgs - Array of macro arguments, containing the #macro() arguments and default values. the 0th is the name.
Returns:
A StringBuffer containing the formatted arguments. If a StringBuffer has passed in as buf, this method returns it.
Since:
1.5


Copyright © 2000-2012 The Apache Software Foundation. All Rights Reserved.