Merge branch 'dev' into feature/pragma-dot-notation

Conflicts:
	README.markdown
This commit is contained in:
Justin Hileman
2010-04-26 22:03:03 -04:00
9 changed files with 46 additions and 12 deletions
+16 -1
View File
@@ -142,13 +142,17 @@ class Mustache {
// regular section // regular section
case '#': case '#':
if (is_array($val)) { if ($this->varIsIterable($val)) {
foreach ($val as $local_context) { foreach ($val as $local_context) {
$replace .= $this->_render($content, $this->getContext($context, $local_context)); $replace .= $this->_render($content, $this->getContext($context, $local_context));
} }
} else if ($val) { } else if ($val) {
if (is_array($val) || is_object($val)) {
$replace .= $this->_render($content, $this->getContext($context, $val));
} else {
$replace .= $content; $replace .= $content;
} }
}
break; break;
} }
@@ -411,6 +415,17 @@ class Mustache {
} }
} }
/**
* Check whether the given $var should be iterated (i.e. in a section context).
*
* @access protected
* @param mixed $var
* @return bool
*/
protected function varIsIterable($var) {
return is_object($var) || (is_array($var) && !array_diff_key($var, array_keys(array_keys($var))));
}
/** /**
* Prepare a string to be used in a regular expression. * Prepare a string to be used in a regular expression.
* *
+4 -2
View File
@@ -81,8 +81,10 @@ And render it:
Known Issues Known Issues
------------ ------------
* There's no way to toggle a pragma other than checking out the feature branch for each pragma... Need a clean way to do this. * There's no way to toggle a pragma other than checking out the feature branch for each pragma...
* Sections don't respect delimiter changes -- `delimiters` example currently fails with an "unclosed section" exception. Need a clean way to do this.
* Sections don't respect delimiter changes -- `delimiters` example currently fails with an
"unclosed section" exception.
* Test coverage is incomplete. * Test coverage is incomplete.
+13
View File
@@ -0,0 +1,13 @@
<?php
class ChildContext extends Mustache {
public $parent = array(
'child' => 'child works',
);
public $grandparent = array(
'parent' => array(
'child' => 'grandchild works',
),
);
}
@@ -0,0 +1,2 @@
<h1>{{#parent}}{{child}}{{/parent}}</h1>
<h2>{{#grandparent}}{{#parent}}{{child}}{{/parent}}{{/grandparent}}</h2>
+2
View File
@@ -0,0 +1,2 @@
<h1>child works</h1>
<h2>grandchild works</h2>