Beispiel #1
0
 public function tokenize($source, $additional = [], $offset = 0, $embedded = false)
 {
     $split = preg_split('/\\R\\R/', $source, 2);
     $http = $split[0];
     if (isset($split[1]) && ($payload = $split[1])) {
         if (preg_match('/Content-Type: ([^;]*)/', $http, $matches)) {
             $mime = $matches[1];
         } else {
             $mime = 'text/plain';
         }
         $injected = self::byMime($mime);
         $language = $this->_embeddedFactory->create('language.' . $injected->getIdentifier(), ['pos' => strlen($http) + 4 + $offset, 'length' => strlen($payload), 'inject' => $injected, 'rule' => new Rule(null, ['language' => $this, 'priority' => 900])]);
         $language->setValid(true);
         $additional = array_merge($additional, $injected->tokenize($payload, [], $language->pos, Language::EMBEDDED_BY_PARENT)->getArrayCopy(), [$language, $language->getEnd()]);
     }
     return parent::tokenize($source, $additional, $offset, $embedded);
 }
Beispiel #2
0
 /** {@inheritdoc} */
 public function getEnds($embedded = false)
 {
     return $embedded ? [new OpenRule(new RegexMatcher('/(<\\?php|<\\?=)/si'), ['factory' => new TokenFactory(LanguageToken::class), 'priority' => 1000, 'context' => ['*'], 'inject' => $this, 'language' => null]), new CloseRule(new RegexMatcher('/(\\?>|$)/'), ['context' => ['!string', '!comment'], 'priority' => 1000, 'factory' => new TokenFactory(LanguageToken::class), 'language' => $this])] : parent::getEnds(false);
 }
Beispiel #3
0
 public function getEnds($embedded = false)
 {
     return [parent::getEnds($embedded), new CloseRule(new SubStringMatcher('__END__'), ['factory' => new TokenFactory(LanguageToken::class), 'language' => $this])];
 }