Package org.apache.velocity.runtime

# Class VelocimacroFactory

java.lang.Object
org.apache.velocity.runtime.VelocimacroFactory

public class VelocimacroFactory extends Object
VelocimacroFactory.java manages the set of VMs in a running Velocity engine.

Version:
  $Id$
Author:
  Geir Magnusson Jr.

## Constructor Summary

Constructors
Constructor
Description
`VelocimacroFactory(RuntimeServices rsvc)`
C'tor for the VelociMacro factory.

## Method Summary

Modifier and Type
Method
Description
`boolean`
`addVelocimacro(String name, Node macroBody, List<Macro.MacroArg> macroArgs, Template definingTemplate)`
Adds a macro to the factory.
`Directive`
`getVelocimacro(String vmName, Template renderingTemplate, Template sourceTemplate)`
actual factory: creates a Directive that will behave correctly wrt getting the framework to dig out the correct # of args
`void`
`initVelocimacro()`
initialize the factory - setup all permissions load all global libraries.
`boolean`
`isVelocimacro(String vm, Template template)`
Tells the world if a given directive string is a Velocimacro

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

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

## Constructor Details

### VelocimacroFactory

public VelocimacroFactory(RuntimeServices rsvc)
C'tor for the VelociMacro factory.

Parameters:
  `rsvc` - Reference to a runtime services object.

## Method Details

### initVelocimacro

public void initVelocimacro()
initialize the factory - setup all permissions load all global libraries.

### addVelocimacro

public boolean addVelocimacro(String name, Node macroBody, List<Macro.MacroArg> macroArgs, Template definingTemplate)
Adds a macro to the factory.

Parameters:
  `name` - Name of the Macro to add.
  `macroBody` - root node of the parsed macro AST
  `macroArgs` - Array of macro arguments, containing the #macro() arguments and default values. the 0th is the name.
  `definingTemplate` - template containing the macro definition
Returns:
  true if Macro was registered successfully.
Since:
  1.6

### isVelocimacro

public boolean isVelocimacro(String vm, Template template)
Tells the world if a given directive string is a Velocimacro

Parameters:
  `vm` - Name of the Macro.
  `template` - Source template from which the macro should be loaded.
Returns:
  True if the given name is a macro.

### getVelocimacro

public Directive getVelocimacro(String vmName, Template renderingTemplate, Template sourceTemplate)
actual factory: creates a Directive that will behave correctly wrt getting the framework to dig out the correct # of args

Parameters:
  `vmName` - Name of the Macro.
  `renderingTemplate` - destination template
  `sourceTemplate` - Source template from which the macro should be loaded.
Returns:
  A directive representing the Macro.