/** * Evaluates this node * * @param com.github.mustache.Context $context the rendering context * @return string */ public function evaluate($context) { $value = $context->lookup($this->name); if ($context->isCallable($value)) { $rendered = $context->asRendering($value, $this, $this->options); } else { $rendered = $context->asString($value); } return $this->escape ? htmlspecialchars($rendered) : $rendered; }
/** * Evaluates this node * * @param com.github.mustache.Context $context the rendering context * @return string */ public function evaluate($context) { $value = $context->lookup('.' === $this->name ? null : $this->name); $truthy = $context->isTruthy($value); if ($this->invert ? $truthy : !$truthy) { return ''; } // Have defined value, apply following: // * If the value is a function, call it // * If the value is a list, expand list for all values inside // * If the value is a hash, use it as context // * Otherwise, simply delegate evaluation to node list if ($context->isCallable($value)) { return $context->asRendering($value, $this->nodes, $this->options, $this->start, $this->end); } else { if ($context->isList($value)) { $output = ''; foreach ($context->asTraversable($value) as $element) { $output .= $this->nodes->evaluate($context->asContext($element)); } return $output; } else { if ($context->isHash($value)) { return $this->nodes->evaluate($context->asContext($value)); } else { return $this->nodes->evaluate($context); } } } }
/** * Evaluates this node * * @param com.github.mustache.Context $context the rendering context * @return string */ public function evaluate($context) { $value = $context->lookup($this->name); if ($context->isTruthy($value)) { $target = $this->fn; } else { $target = $this->inverse; } // Have defined value, apply following: // * If the value is a function, call it // * If the value is a list, expand list for all values inside // * If the value is a hash, use it as context // * Otherwise, simply delegate evaluation to node list if ($context->isCallable($value)) { return $context->asRendering($value, $target, array_merge($this->options, ['fn' => $this->fn, 'inverse' => $this->inverse])); } else { if ($context->isList($value)) { $output = ''; foreach ($context->asTraversable($value) as $element) { $output .= $target->evaluate($context->asContext($element)); } return $output; } else { if ($context->isHash($value)) { return $target->evaluate($context->asContext($value)); } else { return $target->evaluate($context); } } } }