Example #1
0
 /**
  * Compile template into PHP code
  *
  * @param array<string,array|string|integer> $context Current context
  * @param string $template handlebars template
  *
  * @return string|null generated PHP code
  */
 public static function compileTemplate(&$context, $template)
 {
     array_unshift($context['parsed'], array());
     Validator::verify($context, $template);
     if (count($context['error'])) {
         return;
     }
     // Do PHP code generation.
     Parser::setDelimiter($context);
     // Handle dynamic partials
     Partial::handleDynamic($context);
     $code = '';
     foreach ($context['parsed'][0] as $info) {
         if (is_array($info)) {
             $context['tokens']['current']++;
             $tmpl = static::compileToken($context, $info);
             if ($tmpl == $context['ops']['seperator']) {
                 $tmpl = '';
             } else {
                 $tmpl = "'{$tmpl}'";
             }
             $code .= $tmpl;
         } else {
             $code .= $info;
         }
     }
     static::$lastParsed = array_shift($context['parsed']);
     return $code;
 }
Example #2
0
 /**
  * Compile handlebars partial into PHP function code.
  *
  * @param string $template handlebars template string
  * @param array<string,array|string|integer> $options LightnCandy compile time and run time options, default is array('flags' => LightnCandy::FLAG_BESTPERFORMANCE)
  *
  * @return string|false Compiled PHP code when successed. If error happened and compile failed, return false.
  */
 public static function compilePartial($template, $options = array('flags' => self::FLAG_BESTPERFORMANCE))
 {
     $context = Context::create($options);
     if (static::handleError($context)) {
         return false;
     }
     $code = Partial::compile($context, $template);
     static::$lastParsed = Compiler::$lastParsed;
     // return false when fatal error
     if (static::handleError($context)) {
         return false;
     }
     return $code;
 }
Example #3
0
 /**
  * Compile handlebars template into PHP code.
  *
  * @param string $template handlebars template string
  * @param array<string,array|string|integer> $options LightnCandy compile time and run time options, default is array('flags' => LightnCandy::FLAG_BESTPERFORMANCE)
  *
  * @return string|false Compiled PHP code when successed. If error happened and compile failed, return false.
  */
 public static function compile($template, $options = array('flags' => self::FLAG_BESTPERFORMANCE))
 {
     $context = Context::create($options);
     if (static::handleError($context)) {
         return false;
     }
     $code = Compiler::compileTemplate($context, SafeString::escapeTemplate($template));
     static::$lastParsed = Compiler::$lastParsed;
     // return false when fatal error
     if (static::handleError($context)) {
         return false;
     }
     // Or, return full PHP render codes as string
     return Compiler::composePHPRender($context, $code);
 }