Example #1
0
 /**
  * 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;
 }