]> git.mxchange.org Git - friendica.git/blob - vendor/league/html-to-markdown/src/Converter/LinkConverter.php
Move HTML to Markdown library to Composer
[friendica.git] / vendor / league / html-to-markdown / src / Converter / LinkConverter.php
1 <?php
2
3 namespace League\HTMLToMarkdown\Converter;
4
5 use League\HTMLToMarkdown\ElementInterface;
6
7 class LinkConverter implements ConverterInterface
8 {
9     /**
10      * @param ElementInterface $element
11      *
12      * @return string
13      */
14     public function convert(ElementInterface $element)
15     {
16         $href = $element->getAttribute('href');
17         $title = $element->getAttribute('title');
18         $text = trim($element->getValue());
19
20         if ($title !== '') {
21             $markdown = '[' . $text . '](' . $href . ' "' . $title . '")';
22         } elseif ($href === $text && $this->isValidAutolink($href)) {
23             $markdown = '<' . $href . '>';
24         } else {
25             $markdown = '[' . $text . '](' . $href . ')';
26         }
27
28         if (!$href) {
29             $markdown = html_entity_decode($element->getChildrenAsString());
30         }
31
32         return $markdown;
33     }
34
35     /**
36      * @return string[]
37      */
38     public function getSupportedTags()
39     {
40         return array('a');
41     }
42
43     /**
44      * @param string $href
45      *
46      * @return bool
47      */
48     private function isValidAutolink($href)
49     {
50         return preg_match('/^[A-Za-z][A-Za-z0-9.+-]{1,31}:[^<>\x00-\x20]*/i', $href) === 1;
51     }
52 }