class Haml in Sassy 7
HamlViewRenderer allows you to write view files in {@link Haml http://haml-lang.com/}. @package PHamlP @subpackage Yii
Hierarchy
- class \Haml extends \CViewRenderer
Expanded class hierarchy of Haml
1 string reference to 'Haml'
- HamlParser::getFilter in phamlp/
haml/ HamlParser.php - * Gets a filter. * Filters are loaded on first use. *
File
- phamlp/
Yii/ phamlp/ Haml.php, line 35
View source
class Haml extends CViewRenderer {
/**#@+
* Configurable Options - Renderer
*/
/**
* @var string the extension name of the source file. Defaults to '.haml'.
*/
public $fileExtension = '.haml';
/**
* @var string the extension name of the view file. Defaults to '.php'.
*/
public $viewFileExtension = '.php';
/**
* @var boolean whether to cache parsed files. If false files will be parsed
* every time.
*/
public $cache = true;
/**#@-*/
/**#@+
* Configurable Options - Haml
*/
/**
* @var string DOCTYPE format
* @see doctypes
*/
public $format = 'xhtml';
/**
* @var string custom doctype. If null (default) {@link format} must be
* a key in {@link doctypes}
*/
public $doctype;
/**
* @var boolean whether or not to escape X(HT)ML-sensitive characters in script.
* If this is true, = behaves like &=; otherwise, it behaves like !=.
* Note that if this is set, != should be used for yielding to subtemplates
* and rendering partials. Defaults to false.
*/
public $escapeHtml;
/**
* @var boolean Whether or not attribute hashes and scripts designated by
* = or ~ should be evaluated. If true, the scripts are rendered as empty strings.
* Defaults to false.
*/
public $suppressEval;
/**
* @var string The character that should wrap element attributes. Characters
* of this type within attributes will be escaped (e.g. by replacing them with
* ') if the character is an apostrophe or a quotation mark.
* Defaults to " (an quotation mark).
*/
public $attrWrapper;
/**
* @var string style of output. Can be:
* nested: output is nested according to the indent level in the source
* expanded: block tags have their own lines as does content which is indented
* compact: block tags and their content go on one line
* compressed: all unneccessary whitepaces is removed. If ugly is true this style is used.
*/
public $style;
/**
* @var boolean if true no attempt is made to properly indent or format
* the output. Reduces size of output file but is not very readable.
* Defaults to true.
*/
public $ugly;
/**
* @var boolean if true comments are preserved in ugly mode. If not in
* ugly mode comments are always output. Defaults to false.
*/
public $preserveComments;
/**
* @var integer Initial debug setting:
* no debug, show source, show output, or show all.
* Debug settings can be controlled in the template
* Defaults to DEBUG_NONE.
*/
public $debug;
/**
* @var string Path alias to filters. If specified this will be searched
* first followed by 'haml.filters'. This allows the default filters to be
* overridden.
*/
public $filterPathAlias;
/**
* @var array supported doctypes
* @see format
*/
public $doctypes;
/**
* @var array A list of tag names that should be automatically self-closed
* if they have no content.
*/
public $emptyTags;
/**
* @var array A list of inline tags for which whitespace is not collapsed
* fully when in ugly mode or stripping outer whitespace.
*/
public $inlineTags;
/**
* @var array attributes that are minimised
*/
public $minimizedAttributes;
/**
* @var array A list of tag names that should automatically have their newlines preserved.
*/
public $preserve;
/**
* @var string Path to a file containing user defined Haml helpers.
*/
public $helperFile;
/**#@-*/
/**
* @var HamlParser the Haml parser
*/
private $haml;
/**
* @var array Haml parser option names. These are passed to the parser if set.
*/
private $hamlOptions = array(
'format',
'doctype',
'escapeHtml',
'suppressEval',
'attrWrapper',
'style',
'ugly',
'preserveComments',
'debug',
'filterDir',
'doctypes',
'emptyTags',
'inlineTags',
'minimizedAttributes',
'preserve',
'helperFile',
);
/**
* @var string Path to filters. Derived from filterPathAlias.
*/
private $filterDir;
/**
* Do a sanity check on the options and setup alias to filters
*/
private function _init() {
if (isset($this->filterPathAlias)) {
$this->filterDir = Yii::getPathOfAlias($this->filterPathAlias);
}
if (isset($this->helperFile)) {
$this->helperFile = Yii::getPathOfAlias($this->helperFile) . '.php';
}
$options = array();
foreach ($this->hamlOptions as $option) {
if (isset($this->{$option})) {
$options[$option] = $this->{$option};
}
}
// foreach
Yii::import('ext.phamlp.vendors.phamlp.haml.HamlParser');
$this->haml = new HamlParser($options);
}
/**
* Parses the source view file and saves the results as another file.
* This method is required by the parent class.
* @param string the source view file path
* @param string the resulting view file path
*/
protected function generateViewFile($sourceFile, $viewFile) {
if (substr($sourceFile, strlen($this->fileExtension) * -1) === $this->fileExtension) {
if (empty($this->haml)) {
$this
->_init();
}
$data = $this->haml
->parse($sourceFile);
}
else {
$data = file_get_contents($sourceFile);
}
file_put_contents($viewFile, $data);
}
/**
* Renders a view file.
* This method is required by {@link IViewRenderer}.
* @param CBaseController the controller or widget who is rendering the view file.
* @param string the view file path
* @param mixed the data to be passed to the view
* @param boolean whether the rendering result should be returned
* @return mixed the rendering result, or null if the rendering result is not needed.
*/
public function renderFile($context, $sourceFile, $data, $return) {
$hamlSourceFile = substr($sourceFile, 0, strrpos($sourceFile, '.')) . $this->fileExtension;
if (!is_file($hamlSourceFile) || ($file = realpath($hamlSourceFile)) === false) {
return parent::renderFile($context, $sourceFile, $data, $return);
}
$viewFile = $this
->getViewFile($sourceFile);
$viewFile = str_replace($this->fileExtension . ($this->useRuntimePath ? '' : 'c'), $this->viewFileExtension, $viewFile);
if (!$this->cache || @filemtime($sourceFile) > @filemtime($viewFile)) {
$this
->generateViewFile($sourceFile, $viewFile);
@chmod($viewFile, $this->filePermission);
}
return $context
->renderInternal($viewFile, $data, $return);
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
Haml:: |
public | property | * * of this type within attributes will be escaped (e.g. by replacing them with * ') if the character is an apostrophe or a quotation mark. * Defaults to " (an quotation mark). | |
Haml:: |
public | property | * * every time. | |
Haml:: |
public | property | * * no debug, show source, show output, or show all. * Debug settings can be controlled in the template * Defaults to DEBUG_NONE. | |
Haml:: |
public | property | * * a key in {@link doctypes} | |
Haml:: |
public | property | * * | |
Haml:: |
public | property | * * if they have no content. | |
Haml:: |
public | property | * * If this is true, = behaves like &=; otherwise, it behaves like !=. * Note that if this is set, != should be used for yielding to subtemplates * and rendering partials. Defaults to false. | |
Haml:: |
public | property | * | |
Haml:: |
private | property | * | |
Haml:: |
public | property | * * first followed by 'haml.filters'. This allows the default filters to be * overridden. | |
Haml:: |
public | property | * * | |
Haml:: |
private | property | * | |
Haml:: |
private | property | * | |
Haml:: |
public | property | * | |
Haml:: |
public | property | * * fully when in ugly mode or stripping outer whitespace. | |
Haml:: |
public | property | * | |
Haml:: |
public | property | * | |
Haml:: |
public | property | * * ugly mode comments are always output. Defaults to false. | |
Haml:: |
public | property | * * nested: output is nested according to the indent level in the source * expanded: block tags have their own lines as does content which is indented * compact: block tags and their content go on one line * compressed: all unneccessary… | |
Haml:: |
public | property | = or ~ should be evaluated. If true, the scripts are rendered as empty strings. Defaults to false. | |
Haml:: |
public | property | * * the output. Reduces size of output file but is not very readable. * Defaults to true. | |
Haml:: |
public | property | * | |
Haml:: |
protected | function | * Parses the source view file and saves the results as another file. * This method is required by the parent class. * | |
Haml:: |
public | function | * Renders a view file. * This method is required by {@link IViewRenderer}. * | |
Haml:: |
private | function | * Do a sanity check on the options and setup alias to filters |