* @return string */ public function parse($html, $blockName = 'document', $blockParams = null) { $blockParams = (array) $blockParams; $blockParams += array('inc' => null, 'parse' => true, 'max' => false); $value = $this->_getVar(trim(parent::parse($html))); if (is_numeric($blockParams['inc'])) { $value += $blockParams['inc']; return $value; } if ($blockParams['max'] && mb_strlen($value) > $blockParams['max']) { $value = mb_substr($value, 0, $blockParams['max']) . '...'; } return $blockParams['parse'] ? parent::parse($value, '_var') : $value; } } /** * Black hole */ class PhemeNullParser { /** * Does nothing */ public function parse() { } } PhemeParser::$coreBlocks = array("group" => new PhemeParser(), "foreach" => new PhemeForeachParser(), "if" => new PhemeConditionalParser(), "c" => new PhemeNullParser(), "e" => new PhemeHtmlEntitiesParser(), 'skin' => new PhemeSkinParser(), 'var' => new PhemeVarParser());
public static function parseTranslate($skin, $vars = array()) { $blocks = PhemeParser::$coreBlocks; PhemeParser::$coreBlocks = array_intersect_key($blocks, array('t' => true, 'h' => true, 'e' => true, 'url' => true, 'webroot' => true)); $result = self::parse('SimpleParser', compact('skin', 'vars')); PhemeParser::$coreBlocks = $blocks; return $result; }