parse($text); return self::$renderer->render($xml); } private static function build(): array { $configurator = new Configurator(); $bbcodes = $configurator->plugins->load('BBCodes'); $bbcodes->addFromRepository('B'); $bbcodes->addFromRepository('I'); $bbcodes->addFromRepository('U'); $bbcodes->addFromRepository('S'); $bbcodes->addFromRepository('URL'); $bbcodes->addFromRepository('IMG'); $bbcodes->addFromRepository('QUOTE'); $bbcodes->addFromRepository('CODE'); $bbcodes->addFromRepository('LIST'); $bbcodes->addFromRepository('*'); $configurator->tags->add('BR')->template = '
'; if (isset($configurator->tags['QUOTE'])) { $configurator->tags['QUOTE']->template = <<<'XSL'
wrote:
XSL; } $bundle = $configurator->finalize(); $parser = $bundle['parser'] ?? null; $renderer = $bundle['renderer'] ?? null; if (!$parser || !$renderer) { throw new \RuntimeException('Unable to initialize BBCode formatter.'); } return [$parser, $renderer]; } }