Lets you wrap a bunch of array data, or object members, into a {@link ViewableData} object.
HTML Helper class
Requirements tracker for JavaScript and CSS.
This is the parser for the SilverStripe template language. It gets called on a string and uses a php-peg parser to match that string against the language structure, building up the PHP code to execute that structure as it parses
Parses a template file with an *.ss file extension.
Defines an extra set of basic methods that can be used in templates that are not defined on sub-classes of {@link ViewableData}.
This extends SSViewer_Scope to mix in data on top of what the item provides. This can be "global" data that is scope-independant (like BaseURL), or type-specific data that is layered on top cross-cut like (like $FirstLast etc).
Special SSViewer that will process a template passed as a string, rather than a filename.
This tracks the current scope for an SSViewer instance. It has three goals: - Handle entering & leaving sub-scopes in loops and withs - Track Up and Top - (As a side effect) Inject data that needs to be available globally (used to live in ViewableData)
A class which builds a manifest of all themes (which is really just a directory called "templates")
Handles finding templates from a stack of template manifest objects.
A ViewableData object is any object that can be rendered into a template/view.
Allows you to render debug information about a {@link ViewableData} object into a template.


Provides an abstract interface for minifying content
Interface that is implemented by any classes that want to expose a method that can be called in any scope in a template.
Interface that is implemented by any classes that want to expose a method that can be called in any scope in a template that returns values dependant on the state of the iterator of the current scope.
This interface needs to be implemented by any template parser that is used in SSViewer
Contains references to any number of themes or theme directories


This is the exception raised when failing to parse a template. Note that we don't currently do any static analysis, so we can't know if the template will run, just if it's malformed. It also won't catch mistakes that still look valid.