|
@@ -142,12 +142,16 @@ 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) {
|
|
|
- $replace .= $content;
|
|
|
|
|
|
|
+ if (is_array($val) || is_object($val)) {
|
|
|
|
|
+ $replace .= $this->_render($content, $this->getContext($context, $val));
|
|
|
|
|
+ } else {
|
|
|
|
|
+ $replace .= $content;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|
|
@@ -387,6 +391,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.
|
|
|
*
|
|
*
|