/** * parst einen Text mit BBCode-Regeln * * Zur Anwendung kann HtmlParser::parse() verwendet werden * * @param string $text Der Text, der geparst werden soll * @param array $config config array */ public function parse($text, array $config = array()) { $this->config = new Config(); $this->config->mergeRecursive($config); $parser = new Parser(); $definition_sets = $this->getDefinitionSets(); // Wenn keine Definitions definiert wurde, brechen wir ab if (count($definition_sets) === 0) { return $text; } // Die DefinitionSets dem Parser zuweisen foreach ($definition_sets as $definition_set) { $parser->addCodeDefinitionSet($definition_set); } $parser->parse($text); // Sollen Urls erkannt werden? if ($this->config->get('parse_urls')) { $visitor = $this->config->get('visitor.url'); if (is_object($visitor) and $visitor instanceof VisitorInterface) { $visitor->setConfig($this->config); $parser->accept($visitor); } } // Sollen Smilies geparset werden? if ($this->config->get('parse_smilies')) { $visitor = $this->config->get('visitor.smiley'); if (is_object($visitor) and $visitor instanceof \JBBCode\NodeVisitor) { // BC: VisitorInterface wurde erst mit v1.1 eingeführt if ($visitor instanceof VisitorInterface) { $visitor->setConfig($this->config); } $parser->accept($visitor); } } $text = $parser->getAsHtml(); $text = $this->addParagraphs($text); //Erklärungen hinzufügen $text = $this->addExplanations($text); return $text; }