Package org.apache.velocity.runtime.directive

# Class Macro

java.lang.Object
org.apache.velocity.runtime.directive.Directive
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$
Author:
  Geir Magnusson Jr., Henning P. Schmiedehausen

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`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

`log, rsvc`

### Fields inherited from interface org.apache.velocity.runtime.directive.DirectiveConstants

`BLOCK, LINE`

## Constructor Summary

Constructors
Constructor
Description
`Macro()`

## Method Summary

Modifier and Type
Method
Description
`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 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`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### Macro

public Macro()

## Method Details

### 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`
Parameters:
  `rs` -
  `context` -
  `node` -
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 StandardParserTreeConstants.JJTWORD
  `t` - token of directive
  `templateName` - 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 from `argArray` and appends them to `buf`.

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