/** * Generates the lexer cache on fly. * * @param \FSHL\Lexer $lexer * * @return \FSHL\Highlighter */ private function generateCache(Lexer $lexer) { $generator = new Generator($lexer); try { $generator->saveToCache(); } catch (\RuntimeException $e) { $file = tempnam(sys_get_temp_dir(), 'fshl'); file_put_contents($file, $generator->getSource()); require_once $file; unlink($file); } $lexerName = $lexer->getLanguage(); $lexerCacheClass = '\\FSHL\\Lexer\\Cache\\' . $lexerName; $this->lexers[$lexerName] = new $lexerCacheClass(); $this->lexer = $this->lexers[$lexerName]; return $this; }
/** * Initializes the generator for a given lexer. * * @param \FSHL\Lexer $lexer */ public function __construct(Lexer $lexer) { $this->lexer = $lexer; $this->lexerName = $lexer->getLanguage(); $this->source = $this->generate(); }