tasks/ext/SmartyTask.php
A phing task for generating output by using Smarty.
This is based on the TexenTask from Apache's Velocity engine. This class was originally proted in order to provide a template compiling system for Torque.
TODO: - Add Path / useClasspath support?
- Author
- Hans Lellelid
(SmartyTask) - Author
- Jason van Zyl
(TexenTask) - Author
- Robert Burrell Donkin
- Package
- phing.tasks.ext
- Version
- $Id: 1fe8b2aa2668db628554e59b3099520c0e1c03e4 $
\SmartyTask
A phing task for generating output by using Smarty.
This is based on the TexenTask from Apache's Velocity engine. This class was originally proted in order to provide a template compiling system for Torque.
TODO: - Add Path / useClasspath support?
- Parent(s)
- \Task < \ProjectComponent
- Author
- Hans Lellelid
(SmartyTask) - Author
- Jason van Zyl
(TexenTask) - Author
- Robert Burrell Donkin
- Copyright
- 2001,2002 THYRELL. All rights reserved
- Version
- $Id: 1fe8b2aa2668db628554e59b3099520c0e1c03e4 $
Properties

string
$compilePath= ''
Smarty compiles templates before parsing / replacing tokens in them.
By default it will try ./templates_c, but you may wish to override this.
- Type
- string

string
$configPath= ''
Smarty can use config files.
This tells Smarty where to look for the config files.
- Type
- string

array
$contextProperties= ''
<p> These are properties that are fed into the initial context from a properties file. This is simply a convenient way to set some values that you wish to make available in the context.
These values are not critical, like the template path or output path, but allow a convenient way to set a value that may be specific to a particular generation task.
<
p> For example, if you are generating scripts to allow user to automatically create a database, then you might want the
$databaseName
to be placed in the initial context so that it is available in a script that might look something like the following:
#!bin/sh
echo y | mysqladmin create $databaseName
The value of
$databaseName
isn't critical to output, and you obviously don't want to change the ant task to simply take a database name. So initial context values can be set with properties file.
- Type
- array

string
$controlTemplate= ''
This is the control template that governs the output.
It may or may not invoke the services of worker templates.
- Type
- string

boolean
$forceCompile= 'false'
Whether to force Smarty to recompile templates.
Smarty does check file modification time, but you can set this to be sure that the template will be compiled (of course it will be slower if you do).
falseDetails- Type
- boolean

string
$outputDirectory= ''
This is where texen will place all the output that is a product of the generation process.
- Type
- string

string
$outputFile= ''
This is the file where the generated text will be placed.
- Type
- string

\Project
$project= 'null'
Holds a reference to the project that a project component (a task, a target, etc.) belongs to
A reference to the current project instanceInherited from: \ProjectComponent::$$project\Task::$$projectnullDetails- Type
- \Project
- Inherited_from
- \ProjectComponent::$$project
- Inherited_from
- \Task::$$project

array
$properties= 'array()'
Variables that are assigned to the context on parse/compile.
array()Details- Type
- array

string
$templatePath= ''
This is where Velocity will look for templates using the file template loader.
- Type
- string
Methods

cleanup(
)
:
voidA hook method called at the end of {@link #execute()} which can be overridden to perform any necessary cleanup activities (such as the release of database connections, etc.). By default, does nothing.
| Exception | Description |
|---|---|
| \Exception | Problem cleaning up. |

getCompilePath(
)
:
stringGet the path Smarty uses for compiling templates.
| Type | Description |
|---|---|
| string |

getConfigPath(
)
:
stringGet the path that Smarty uses for looking for config files.
| Type | Description |
|---|---|
| string |

getContextProperties(
)
:
\PropertiesGet the context properties that will be fed into the initial context be the generating process starts.
| Type | Description |
|---|---|
| \Properties |

getControlTemplate(
)
:
stringGet the control template for the generating process.
| Type | Description |
|---|---|
| string |

getForceCompile(
)
:
booleanGet whether Smarty should always recompile template.
| Type | Description |
|---|---|
| boolean |

getLocation(
)
:
\LocationReturns the location within the buildfile this task occurs. Used by {@link BuildException} to give detailed error messages.
Inherited from: \Task::getLocation()| Type | Description |
|---|---|
| \Location | The location object describing the position of this task within the buildfile. |

getOutputFile(
)
:
stringGet the output file for the generation process.
| Type | Description |
|---|---|
| string |

getProject(
)
:
\ProjectReturns a reference to current project
Inherited from: \ProjectComponent::getProject()\Task::getProject()| Type | Description |
|---|---|
| \Project | Reference to current porject object |

getRuntimeConfigurableWrapper(
)
:
\RuntimeConfigurableReturns the wrapper object for runtime configuration
Inherited from: \Task::getRuntimeConfigurableWrapper()| Type | Description |
|---|---|
| \RuntimeConfigurable | The wrapper object used by this task |

getTaskType(
)
:
stringReturns the name of the task under which it was invoked, usually the XML tagname
Inherited from: \Task::getTaskType()| Type | Description |
|---|---|
| string | The type of this task (XML Tag) |

getTemplatePath(
)
:
stringGet the path where Velocity will look for templates using the file template loader.
| Type | Description |
|---|---|
| string |

init(
)
:
voidCalled by the parser to let the task initialize properly.
Should throw a BuildException if something goes wrong with the build
This is abstract here, but may not be overloaded by subclasses.
| Exception | Description |
|---|---|
| \BuildException |

initControlContext(
)
:
\SmartyCreates a Smarty object.
| Type | Description |
|---|---|
| \Smarty | initialized (cleared) Smarty context. |
| Exception | Description |
|---|---|
| \Exception | the execute method will catch and rethrow as a BuildException |

log(
string $msg, integer $level
=
Project::MSG_INFO
)
:
void
| Name | Type | Description |
|---|---|---|
| $msg | string | The message to log |
| $level | integer | The priority of the message |
- See
- \BuildEvent
- See
- \BuildListener

main(
)
:
voidExecute the input script with Velocity
Should throw a BuildException if someting goes wrong with the build
This is abstract here. Must be overloaded by real tasks.
| Exception | Description |
|---|---|
| \BuildException | BuildExceptions are thrown when required attributes are missing. Exceptions thrown by Velocity are rethrown as BuildExceptions. |

maybeConfigure(
)
:
voidConfigure this task if it hasn't been done already.
Inherited from: \Task::maybeConfigure()
populateInitialContext(
\context $context
)
:
voidPlace useful objects into the initial context.
TexenTask places
Date().toString() into the
context as $now. Subclasses who want to vary the
objects in the context should override this method.
$generator is not put into the context in this
method.| Name | Type | Description |
|---|---|---|
| $context | \context | The context to populate, as retrieved from {@link #initControlContext()}. |
| Exception | Description |
|---|---|
| \Exception | Error while populating context. The {@link #execute()} method will catch and rethrow as a BuildException. |

setCompilePath(
string $compilePath
)
:
voidSet the path Smarty uses as a "cache" for compiled templates.
| Name | Type | Description |
|---|---|---|
| $compilePath | string |

setConfigPath(
string $configPath
)
:
voidSet where Smarty looks for config files.
| Name | Type | Description |
|---|---|---|
| $configPath | string |

setContextProperties(
string $file
)
:
voidSet the context properties that will be fed into the initial context be the generating process starts.
| Name | Type | Description |
|---|---|---|
| $file | string |

setControlTemplate(
string $controlTemplate
)
:
void[REQUIRED] Set the control template for the generating process.
| Name | Type | Description |
|---|---|---|
| $controlTemplate | string |

setDescription(
string $desc
)
:
void
| Name | Type | Description |
|---|---|---|
| $desc | string | The text describing the task |

setForceCompile(
boolean $force
)
:
voidSet whether Smarty should always recompile tempaltes.
| Name | Type | Description |
|---|---|---|
| $force | boolean |

setLeftDelimiter(
string $delim
)
:
voidSet Smarty template left delimiter.
| Name | Type | Description |
|---|---|---|
| $delim | string |

setLocation(
\Location $location
)
:
voidSets the location within the buildfile this task occurs. Called by the parser to set location information.
Inherited from: \Task::setLocation()| Name | Type | Description |
|---|---|---|
| $location | \Location | The location object describing the position of this task within the buildfile. |

setOutputDirectory(
\PhingFile $outputDirectory
)
:
void[REQUIRED] Set the output directory. It will be created if it doesn't exist.
| Name | Type | Description |
|---|---|---|
| $outputDirectory | \PhingFile |
| Exception | Description |
|---|---|
| \Exception |

setOutputFile(
$outputFile
)
:
void[REQUIRED] Set the output file for the generation process.
| Name | Type | Description |
|---|---|---|
| $outputFile |

setOwningTarget(
\Target $target
)
:
void
| Name | Type | Description |
|---|---|---|
| $target | \Target | Reference to owning target |

setProject(
\Project $project
)
:
voidReferences the project to the current component.
Inherited from: \ProjectComponent::setProject()\Task::setProject()| Name | Type | Description |
|---|---|---|
| $project | \Project | The reference to the current project |

setRightDelimiter(
string $delim
)
:
voidSet Smarty template right delimiter.
| Name | Type | Description |
|---|---|---|
| $delim | string |

setRuntimeConfigurableWrapper(
\RuntimeConfigurable $wrapper
)
:
voidSets the wrapper object this task should use for runtime configurable elements.
Inherited from: \Task::setRuntimeConfigurableWrapper()| Name | Type | Description |
|---|---|---|
| $wrapper | \RuntimeConfigurable | The wrapper object this task should use |

setTaskName(
string $name
)
:
string
| Name | Type | Description |
|---|---|---|
| $name | string |
| Type | Description |
|---|---|
| string | A string representing the name of this task for log |

setTaskType(
string $name
)
:
voidSets the type of the task. Usually this is the name of the XML tag
Inherited from: \Task::setTaskType()| Name | Type | Description |
|---|---|---|
| $name | string | The type of this task (XML Tag) |

setTemplatePath(
$templatePath
)
:
void[REQUIRED] Set the path where Velocity will look for templates using the file template loader.
| Name | Type | Description |
|---|---|---|
| $templatePath |
| Exception | Description |
|---|---|
| \Exception |