HamlHelpers.php in Sassy 7
File
phamlp/haml/HamlHelpers.phpView source
<?php
/* SVN FILE: $Id$ */
/**
* HamlHelpers class file.
*
* @author Chris Yates <chris.l.yates@gmail.com>
* @copyright Copyright (c) 2010 PBM Web Development
* @license http://phamlp.googlecode.com/files/license.txt
* @package PHamlP
* @subpackage Haml
*/
/**
* HamlHelpers class.
* Contains methods to make it easier to do various tasks.
*
* The class can be extended to provide user defined helper methods. The
* signature for user defined helper methods is ($block, $other, $arguments);
* $block is the string generated by the Haml block being operated on.
*
* Tthe path to the extended class is provided to HamlParser in the config
* array; class name == file name.
*
* HamlHelpers and any extended class are automatically included in the context
* that a Haml template is parsed in, so all the methods are at your disposal
* from within the template.
*
* @package PHamlP
* @subpackage Haml
*/
class HamlHelpers {
const XMLNS = 'http://www.w3.org/1999/xhtml';
/**
* Returns the block with string appended.
* @see succeed
* @param string Haml block
* @param string string to append
* @return string the block with string appended.
*/
public static function append($block, $string) {
return $block . $string;
}
/**
* Escapes HTML entities in text, but without escaping an ampersand that is
* already part of an escaped entity.
* @param string Haml block
* @return string the block with HTML entities escaped.
*/
public static function escape_once($block) {
return htmlentities(html_entity_decode($block));
}
/**
* Returns an array containing default assignments for the xmlns, lang, and
* xml:lang attributes of the html element.
* This helper method is for use in the html element only.
*
* Examples:<br/>
* %html(html_attrs())<br/>
* produces<br/>
* <html lang="en-us" xml:lang="en-us" xmlns="http://www.w3.org/1999/xhtml">
*
* %html(html_attrs('en-gb'))<br/>
* produces<br/>
* <html lang="en-gb" xml:lang="en-gb" xmlns="http://www.w3.org/1999/xhtml">
*
* %html(html_attrs('en-gb', false))<br/>
* produces<br/>
* <html xml:lang="en-gb" xmlns="http://www.w3.org/1999/xhtml">
*
* Although handled in HamlParser, the notes below are here for completeness.<br/>
* Other attributes are defined as normal. e.g.<br/>
* %html(xmlns:me="http://www.example.com/me" html_attrs('en-gb', false))<br/>
* produces<br/>
* <html xml:lang="en-gb" xmlns="http://www.w3.org/1999/xhtml" xmlns:me="http://www.example.com/me">
*
* PHamlP also allows for the language to be defined using PHP code that can
* be eval'd; the code must end with a semi-colon (;). e.g.<br/>
* %html(html_attrs("FW::app()->language);", false))<br/>
* produces (assuming FW::app()->language returns 'en-gb')<br/>
* <html xml:lang="en-gb" xmlns="http://www.w3.org/1999/xhtml">
*
* @param string document language. Default = en-us
* @param boolean whether the html element has the lang attribute. Default: true
* Should be set false for XHTML 1.1 or greater documents
* @return string the block with string appended.
*/
public static function html_attrs($language = 'en-us', $lang = true) {
return $lang ? array(
'xmlns' => self::XMLNS,
'xml:lang' => $language,
'lang' => $language,
) : array(
'xmlns' => self::XMLNS,
'xml:lang' => $language,
);
}
/**
* Returns a copy of text with ampersands, angle brackets and quotes escaped
* into HTML entities.
* @param string Haml block
* @return string the block with HTML entities escaped.
*/
public static function html_escape($block) {
return htmlspecialchars($block);
}
/**
* Iterates an array and using the block to generate a <li> element for each
* array element.
* Examples:<br/>
* = list_of(array('red', 'orange', ...., 'violet'), 'colour')<br/>
* = colour<br/>
* Produces:<br/>
* <li>red</li><br/>
* <li>orange</li><br/>
* |<br/>
* |<br/>
* <li>violet></li><br/>
*
* = list_of(array('Fly Fishing' => 'JR Hartley', 'Lord of the Rings' => 'JRR Tolkien'), 'title', 'author')<br/>
* %h3= title<br/>
* %p= author<br/>
* Produces:<br/>
* <li><br/>
* <h3>Fly Fishing</h3><br/>
* <p>JR Hartley</p><br/>
* </li><br/>
* <li><br/>
* <h3>Lord of the Rings</h3><br/>
* <p>JRR Tolkien</p><br/>
* </li><br/>
*
* @param string Haml block
* @param array items
* @param string string in block to replace with item key or item value
* @param string string in block to replace with item value
* @return string list items.
*/
public static function list_of($block, $items, $key, $value = null) {
$output = '';
foreach ($items as $_key => $_value) {
$output .= '<li>' . strtr($block, empty($value) ? array(
$key => $_value,
) : array(
$key => $_key,
$value => $_value,
)) . '</li>';
}
// foreach
return $output;
}
/**
* Alias for prepend.
* @see prepend
* @param string Haml block
* @param string string to prepend
* @return string the block with string prepended
*/
public static function preceed($block, $string) {
return self::prepend($block, $string);
}
/**
* Returns the block with string prepended.
* @param string Haml block
* @param string string to prepend
* @return string the block with string prepended
*/
public static function prepend($block, $string) {
return $string . $block;
}
/**
* Converts newlines in the block to HTML entities.
* @param string Haml block
* @return string the block with newlines converted to HTML entities
*/
public static function preserve($block) {
return str_replace("\n", '
', $block);
}
/**
* Alias for append.
* @see append
* @param string Haml block
* @param string string to apppend
* @return string the block with string apppended
*/
public static function succeed($block, $string) {
return self::append($block, $string);
}
/**
* Surrounds a block of Haml code with strings.
* If $back is not given it defaults to $front.
* @param string Haml block
* @param string string to prepend
* @param string string to apppend
* @return string the block surrounded by the strings
*/
public static function surround($block, $front, $back = null) {
return $front . $block . (is_null($back) ? $front : $back);
}
}
Classes
Name | Description |
---|---|
HamlHelpers | HamlHelpers class. Contains methods to make it easier to do various tasks. |