Ejemplo n.º 1
0
 function init()
 {
     if ($this->embedded_server) {
         $this->add_pattern('STOP_SERVER', $this->server_tags);
     }
     if ($this->embedded_html) {
         $this->add_pattern('STOP_SCRIPT', '%</script>%');
     }
     $op_pattern = '[=!+*%\\-&^|~:?\\;,.>';
     if (!($this->embedded_server || $this->embedded_html)) {
         $op_pattern .= '<]+';
     } else {
         // build an alternation with a < followed by a lookahead
         $op_pattern .= ']|<(?![';
         // XXX this covers <? and <% but not very well
         if ($this->embedded_server) {
             $op_pattern .= '?%';
         }
         if ($this->embedded_html) {
             $op_pattern .= '/';
         }
         $op_pattern .= '])';
         // closes lookahead
         $op_pattern = "(?:{$op_pattern})+";
     }
     $op_pattern = "@{$op_pattern}@";
     $this->add_pattern('IDENT', '/[a-zA-Z_$][_$\\w]*/');
     // NOTE: slash is a special case, and </ may be a script close
     $this->add_pattern('OPERATOR', $op_pattern);
     // we care about openers for figuring out where regular expressions are
     $this->add_pattern('OPENER', '/[\\[\\{\\(]+/');
     $this->add_pattern('CLOSER', '/[\\]\\}\\)]+/');
     $this->add_pattern('NUMERIC', LuminousTokenPresets::$NUM_HEX);
     $this->add_pattern('NUMERIC', LuminousTokenPresets::$NUM_REAL);
     $this->add_pattern('SSTRING', LuminousTokenPresets::$SINGLE_STR_SL);
     $this->add_pattern('DSTRING', LuminousTokenPresets::$DOUBLE_STR_SL);
     $this->add_pattern('COMMENT', LuminousTokenPresets::$C_COMMENT_ML);
     $this->add_pattern('COMMENT_SL', LuminousTokenPresets::$C_COMMENT_SL);
     // special case
     $this->add_pattern('SLASH', '%/%');
     $stop_patterns = array();
     $xml_scanner = new LuminousHTMLScanner($this->string());
     $xml_scanner->xml_literal = true;
     $xml_scanner->scripts = false;
     $xml_scanner->embedded_server = $this->embedded_server;
     if ($this->embedded_server) {
         $xml_scanner->server_tags = $this->server_tags;
     }
     $xml_scanner->init();
     $xml_scanner->pos($this->pos());
     $this->add_child_scanner('xml', $xml_scanner);
 }
Ejemplo n.º 2
0
 public static function guess_language($src, $info)
 {
     if (($html = LuminousHTMLScanner::guess_language($src, $info)) >= 0.2) {
         if (strpos($src, '{{') !== false || strpos($src, '{%') !== false) {
             return $html + 0.01;
         }
     }
     return 0.0;
 }