SmartyTask

Extends \Task

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 hans@xmpl.org (SmartyTask)

author

Jason van Zyl jvanzyl@apache.org (TexenTask)

author

Robert Burrell Donkin robertdonkin@mac.com

version

$Id: 37522f25dbc54322646f80bb2dd2048d556c3276 $

package

phing.tasks.ext

Methods

A 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.

cleanup() : void
throws

Problem cleaning up.

Get the path Smarty uses for compiling templates.

getCompilePath() : string

Response

string

Get the path that Smarty uses for looking for config files.

getConfigPath() : string

Response

string

Get the context properties that will be fed into the initial context be the generating process starts.

getContextProperties() : \Properties

Response

\Properties

Get the control template for the generating process.

getControlTemplate() : string

Response

string

Returns the textual description of the task

getDescription() : string
inherited

Response

string

The text description of the task

Get whether Smarty should always recompile template.

getForceCompile() : boolean

Response

boolean

Get Smarty template right delimiter

getLeftDelimiter() : string

Response

string

Returns the location within the buildfile this task occurs. Used by {@link BuildException} to give detailed error messages.

getLocation() : \Location
inherited

Response

\Location

The location object describing the position of this

             task within the buildfile.

Get the output directory.

getOutputDirectory() : string

Response

string

Get the output file for the generation process.

getOutputFile() : string

Response

string

Returns the owning target of this task.

getOwningTarget() : \Target
inherited

Response

\Target

The target object that owns this task

Returns a reference to current project

getProject() : \Project
inherited

Response

\Project

Reference to current porject object

Returns a name

getRegisterSlot(string $slotName) 
inherited

Arguments

$slotName

string

Get Smarty template right delimiter

getRightDelimiter() : string

Response

string

Returns the wrapper object for runtime configuration

getRuntimeConfigurableWrapper() : \RuntimeConfigurable
inherited

Response

\RuntimeConfigurable

The wrapper object used by this task

Returns the name of task, used only for log messages

getTaskName() : string
inherited

Response

string

Name of this task

Returns the name of the task under which it was invoked, usually the XML tagname

getTaskType() : string
inherited

Response

string

The type of this task (XML Tag)

Get the path where Velocity will look for templates using the file template loader.

getTemplatePath() : string

Response

string

Called by the parser to let the task initialize properly.

init() 
inherited

Should throw a BuildException if something goes wrong with the build

This is abstract here, but may not be overloaded by subclasses.

throws

Creates a Smarty object.

initControlContext() : \Smarty
throws

the execute method will catch

    and rethrow as a <code>BuildException</code>

Response

\Smarty

initialized (cleared) Smarty context.

Logs a message with the given priority.

log(string $msg, integer $level = \Project::MSG_INFO) 
inherited

Arguments

$msg

string

The message to be logged.

$level

integer

The message's priority at this message should have

Called by the project to let the task do it's work. This method may be called more than once, if the task is invoked more than once. For example, if target1 and target2 both depend on target3, then running <em>phing target1 target2</em> will run all tasks in target3 twice.

main() 
inherited abstract

Should throw a BuildException if someting goes wrong with the build

This is abstract here. Must be overloaded by real tasks.

Configure this task if it hasn't been done already.

maybeConfigure() 
inherited

Perfrom this task

perform() 
inherited

<p>Place useful objects into the initial context.</p>

populateInitialContext(\Smarty $context) : void

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.

throws

Error while populating context. The {@link

execute()} method will catch and rethrow as a

BuildException.

Arguments

$context

\Smarty

Set the path Smarty uses as a "cache" for compiled templates.

setCompilePath(string $compilePath) 

Arguments

$compilePath

string

Set where Smarty looks for config files.

setConfigPath(string $configPath) : void

Arguments

$configPath

string

Set the context properties that will be fed into the initial context be the generating process starts.

setContextProperties(string $file) : void

Arguments

$file

string

[REQUIRED] Set the control template for the generating process.

setControlTemplate(string $controlTemplate) : void

Arguments

$controlTemplate

string

Sets a textual description of the task

setDescription(string $desc) 
inherited

Arguments

$desc

string

The text describing the task

Set whether Smarty should always recompile tempaltes.

setForceCompile(boolean $force) : void

Arguments

$force

boolean

Set Smarty template left delimiter.

setLeftDelimiter(string $delim) : void

Arguments

$delim

string

Sets the location within the buildfile this task occurs. Called by the parser to set location information.

setLocation(\Location $location) 
inherited

Arguments

$location

\Location

The location object describing the position of this

                      task within the buildfile.

[REQUIRED] Set the output directory. It will be created if it doesn't exist.

setOutputDirectory(\PhingFile $outputDirectory) : void
throws

Arguments

$outputDirectory

\PhingFile

[REQUIRED] Set the output file for the generation process.

setOutputFile( $outputFile) : void

Arguments

$outputFile

Sets the owning target this task belongs to.

setOwningTarget(\Target $target) 
inherited

Arguments

$target

\Target

References the project to the current component.

setProject(\Project $project) 
inherited

Arguments

$project

\Project

The reference to the current project

Set Smarty template right delimiter.

setRightDelimiter(string $delim) : void

Arguments

$delim

string

Sets the wrapper object this task should use for runtime configurable elements.

setRuntimeConfigurableWrapper(\RuntimeConfigurable $wrapper) 
inherited

Arguments

$wrapper

\RuntimeConfigurable

The wrapper object this task should use

Sets the name of this task for log messages

setTaskName(string $name) : string
inherited

Arguments

$name

string

Response

string

A string representing the name of this task for log

Sets the type of the task. Usually this is the name of the XML tag

setTaskType( $name) 
inherited

Arguments

$name

[REQUIRED] Set the path where Velocity will look for templates using the file template loader.

setTemplatePath( $templatePath) : void
throws

Arguments

$templatePath

Properties

Smarty template engine.

context : \Smarty
var

Type(s)

\Smarty

Variables that are assigned to the context on parse/compile.

properties : array
var

Type(s)

array

This is the control template that governs the output.

controlTemplate : string

It may or may not invoke the services of worker templates.

var

Type(s)

string

This is where Velocity will look for templates using the file template loader.

templatePath : string
var

Type(s)

string

This is where texen will place all the output that is a product of the generation process.

outputDirectory : string
var

Type(s)

string

This is the file where the generated text will be placed.

outputFile : string
var

Type(s)

string

<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.

contextProperties : array

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.

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.
var

Type(s)

array

Smarty compiles templates before parsing / replacing tokens in them.

compilePath : string

By default it will try ./templates_c, but you may wish to override this.

var

Type(s)

string

Whether to force Smarty to recompile templates.

forceCompile : boolean

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).

var

Type(s)

boolean

Smarty can use config files.

configPath : string

This tells Smarty where to look for the config files.

var

Type(s)

string

Customize the left delimiter for Smarty tags.

leftDelimiter : string
var

Type(s)

string

Customize the right delimiter for Smarty tags.

rightDelimiter : string
var

Type(s)

string

Owning Target object

target : \Target
inherited
var

Type(s)

\Target

Description of the task

description : string
inherited
var

Type(s)

string

Internal taskname (req)

taskType : string
inherited
var

Type(s)

string

Taskname for logger

taskName : string
inherited
var

Type(s)

string

Stored buildfile location

location : \Location
inherited
var

Type(s)

\Location

Wrapper of the task

wrapper : \RuntimeConfigurable
inherited
var

Type(s)

\RuntimeConfigurable

Holds a reference to the project that a project component (a task, a target, etc.) belongs to

project : \Project
inherited
var

A reference to the current project instance

Type(s)

\Project