Merge branch 'feature/test-coverage' of github.com:bobthecow/mustache.php into feature/test-coverage

Conflicts:
	Mustache.php
This commit is contained in:
Justin Hileman
2010-04-30 20:14:47 -04:00
6 changed files with 57 additions and 6 deletions
+29 -6
View File
@@ -27,6 +27,18 @@ class Mustache {
const PRAGMA_DOT_NOTATION = 'DOT-NOTATION';
/**
* The {{%UNESCAPED}} pragma swaps the meaning of the {{normal}} and {{{unescaped}}}
* Mustache tags. That is, once this pragma is activated the {{normal}} tag will not be
* escaped while the {{{unescaped}}} tag will be escaped.
*
* Pragmas apply only to the current template. Partials, even those included after the
* {{%UNESCAPED}} call, will need their own pragma declaration.
*
* his may be useful in non-HTML Mustache situations.
*/
const PRAGMA_UNESCAPED = 'UNESCAPED';
protected $_tagRegEx;
protected $_template = '';
@@ -35,7 +47,8 @@ class Mustache {
protected $_pragmas = array();
protected $_pragmasImplemented = array(
self::PRAGMA_DOT_NOTATION
self::PRAGMA_DOT_NOTATION,
self::PRAGMA_UNESCAPED
);
/**
@@ -147,11 +160,13 @@ class Mustache {
case '#':
if ($this->varIsIterable($val)) {
foreach ($val as $local_context) {
$replace .= $this->_render($content, $this->getContext($context, $local_context));
$c = $this->getContext($context, $local_context);
$replace .= $this->_render($content, $c);
}
} else if ($val) {
if (is_array($val) || is_object($val)) {
$replace .= $this->_render($content, $this->getContext($context, $val));
$c = $this->getContext($context, $val);
$replace .= $this->_render($content, $c);
} else {
$replace .= $content;
}
@@ -181,7 +196,7 @@ class Mustache {
$otag = $this->prepareRegEx($this->_otag);
$ctag = $this->prepareRegEx($this->_ctag);
$regex = '/' . $otag . '%([\\w_-]+)((?: [\\w]+=[\\w]+)*)' . $ctag . '\\n?/';
$regex = '/' . $otag . '%\\s*([\\w_-]+)((?: [\\w]+=[\\w]+)*)\\s*' . $ctag . '\\n?/';
return preg_replace_callback($regex, array($this, 'renderPragma'), $template);
}
@@ -325,11 +340,19 @@ class Mustache {
break;
case '{':
case '&':
return $this->renderUnescaped($tag_name, $context);
if ($this->hasPragma(self::PRAGMA_UNESCAPED)) {
return $this->renderEscaped($tag_name, $context);
} else {
return $this->renderUnescaped($tag_name, $context);
}
break;
case '':
default:
return $this->renderEscaped($tag_name, $context);
if ($this->hasPragma(self::PRAGMA_UNESCAPED)) {
return $this->renderUnescaped($tag_name, $context);
} else {
return $this->renderEscaped($tag_name, $context);
}
break;
}
}