# 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: 7c13e08dfd78388be8bdd0920677dc855c78c525 $
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) : \RegisterSlot

inherited

### Arguments

#### $slotName

`string`

### Response

`\RegisterSlot`

## 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 Smarty 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 `BuildException`

### Response

`\Smarty`

initialized (cleared) Smarty context.

## Logs a message with the given priority.

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

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

throws |

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

throws |

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

    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) : void

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 Smarty will look for templates using the file template loader.

    setTemplatePath( $templatePath) : void

### 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 Smarty 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`