Esempio n. 1
0
 /**
  * Template parser
  *
  * @param string $view raw template
  * @param mixed  $path path for inheritance
  *
  * @return string
  */
 public function parse($view, $path = null)
 {
     foreach (self::$rules as $rx => $call) {
         $view = preg_replace_callback($rx, $call, $view);
     }
     $inherit = new Inherit($this->ant);
     $view = $inherit->extend($view, $path);
     $view = preg_replace_callback('/@skip.+?@endskip/ms', '\\Ant\\Parser::skip', $view);
     $view = preg_replace_callback('/@php.+?@endphp/ms', '\\Ant\\Parser::skip', $view);
     $view = preg_replace_callback('/{{--.*?--}}/ms', '\\Ant\\Parser::comment', $view);
     $view = preg_replace_callback('/(\\x5c)?{{{.+?}}}/ms', '\\Ant\\Parser::variable', $view);
     $view = preg_replace_callback('/(\\x5c)?{{.+?}}/ms', '\\Ant\\Parser::escape', $view);
     $view = preg_replace_callback('/\\B@(import|widget).+/', '\\Ant\\Parser::import', $view);
     $view = preg_replace_callback('/\\B@(css|js).+/', '\\Ant\\Parser::shortcut', $view);
     $view = preg_replace_callback('/[\\s\\t]+@(case|default)/', '\\Ant\\Parser::caseSpace', $view);
     $view = preg_replace_callback('/\\B@(forelse|foreach|for|while|switch|case|default|if|elseif|else|unless|each)([ \\t]*)(\\( ( (?>[^()]+) | (?3) )* \\))?/x', '\\Ant\\Parser::control', $view);
     $view = preg_replace_callback('/\\B@(empty|break|continue|endforeach|endforelse|endfor|endwhile|endswitch|endif|endunless)/', '\\Ant\\Parser::endControl', $view);
     $view = preg_replace('/\\B::/', '$this->ant->', $view);
     if (self::$skips) {
         $view = str_replace(array_keys(self::$skips), array_values(self::$skips), $view);
         self::$skips = array();
     }
     $view = str_replace(array('@php', '@endphp', '@skip', '@endskip'), array('<?php', '?>', '', ''), $view);
     return $view;
 }