Ejemplo n.º 1
0
 /**
  * Evaluates this node
  *
  * @param  com.github.mustache.Context $context the rendering context
  * @return string
  */
 public function evaluate($context)
 {
     $f = $this->options[0];
     if ($context->isTruthy($f($context))) {
         return $this->fn->evaluate($context);
     } else {
         return $this->inverse->evaluate($context);
     }
 }
Ejemplo n.º 2
0
 /**
  * Evaluates this node
  *
  * @param  com.github.mustache.Context $context the rendering context
  * @return string
  */
 public function evaluate($context)
 {
     $value = $context->lookup(null);
     // Current
     if ($context->isHash($value) || $context->isList($value)) {
         $v = current($context->asTraversable($value));
     } else {
         $v = $value;
     }
     return $this->escape ? htmlspecialchars($v) : $v;
 }
Ejemplo n.º 3
0
 /**
  * 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);
             }
         }
     }
 }
Ejemplo n.º 4
0
 /**
  * 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;
 }
Ejemplo n.º 5
0
 /**
  * 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);
             }
         }
     }
 }