Example #1
0
 protected function parseEmail(Text $content, InlineNodeAcceptorInterface $target)
 {
     if ($content->contains('@')) {
         $content->handle('{
                 <
                 (?:mailto:)?
                 (
                     [a-zA-Z0-9.!#$%&\'*+/=?^_`{|}~-]+
                     \\@
                     [a-zA-Z0-9]
                     (?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?
                     (?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*
                 )
                 >
             }ix', function (Text $w, Text $email) use($target) {
             $text = $email->copy();
             $link = new Link($email->prepend('mailto:'));
             $link->addInline(new String($text));
             $target->addInline($link);
         }, function (Text $part) use($target) {
             $this->next->parseInline($part, $target);
         });
     } else {
         $this->next->parseInline($content, $target);
     }
 }
Example #2
0
 public function visitLink(Link $link)
 {
     $tag = Tag::block('a');
     $tag->setAttribute('href', $link->getHref()->escapeHtml());
     $this->fillWithInlineElements($tag, $link);
     if (!$link->getTitleText()->isEmpty()) {
         $tag->setAttribute('title', $link->getTitleText()->escapeHtml());
     }
     $this->buffer->append($tag);
 }