/** * Recursively call the parser with a new Codes object * This allows to parse BBC in parameters like [quote author="[url]www.quotes.com[/url]"]Something famous.[/quote] * * @param string &$data * @param array $tag */ protected function recursiveParser(&$data, array $tag) { // @todo if parsed tags allowed is empty, return? $bbc = clone $this->bbc; if (!empty($tag[Codes::ATTR_PARSED_TAGS_ALLOWED])) { $bbc->setParsedTags($tag[Codes::ATTR_PARSED_TAGS_ALLOWED]); } // Do not use $this->autolinker. For some reason it causes a recursive loop // @todo figure out why it causes a recursive loop! $autolinker = null; $html = null; $this->triggerEvent('recursive_bbc', array(&$autolinker, &$html)); $parser = new \BBC\Parser($bbc, $autolinker, $html); $parser->canParseAutolink($this->autolink_enabled); $parser->canParseHTML($this->html_enabled); $data = $parser->enableSmileys(empty($tag[Codes::ATTR_PARSED_TAGS_ALLOWED]))->parse($data); }
$message_dir = __DIR__ . '/Creator'; $messages = (require_once $message_file); // Parser $parser_dir = '../../Tests/Parser/'; require_once $parser_dir . '/Parser.php'; require_once $parser_dir . '/Codes.php'; require_once $parser_dir . '/DefaultCodes.php'; require_once $parser_dir . '/SmileyParser.php'; require_once $parser_dir . '/Autolink.php'; require_once $parser_dir . '/HtmlParser.php'; require_once '../../BBCHelpers.php'; globalSettings(); $bbc = new \BBC\DefaultCodes(array(), array()); $autolink = new \BBC\Autolink($bbc); $html = new \BBC\HtmlParser(); $parser = new \BBC\Parser($bbc, $autolink, $html); $smiley_parser = new \BBC\SmileyParser($modSettings['smileys_url'] . '/' . $user_info['smiley_set'] . '/'); // Preparser require_once '../../PreparserTests/OldPreparser/OldPreParser.php'; foreach ($messages as $i => $input) { $class_name = 'Message' . $i; $filename = 'Message' . $i . '.php'; // These aren't preparsed. This is how they will be stored. $stored = $input; preparsecode($stored); if ($stored !== $input) { echo "\nMessage {$i} needs to be preparsed<br>"; } $output = $parser->parse($stored); $smiley_parser->parse($output); $escaped_input = addslashes($input);