]> git.mxchange.org Git - friendica.git/blob - vendor/league/html-to-markdown/src/Environment.php
Move HTML to Markdown library to Composer
[friendica.git] / vendor / league / html-to-markdown / src / Environment.php
1 <?php
2
3 namespace League\HTMLToMarkdown;
4
5 use League\HTMLToMarkdown\Converter\BlockquoteConverter;
6 use League\HTMLToMarkdown\Converter\CodeConverter;
7 use League\HTMLToMarkdown\Converter\CommentConverter;
8 use League\HTMLToMarkdown\Converter\ConverterInterface;
9 use League\HTMLToMarkdown\Converter\DefaultConverter;
10 use League\HTMLToMarkdown\Converter\DivConverter;
11 use League\HTMLToMarkdown\Converter\EmphasisConverter;
12 use League\HTMLToMarkdown\Converter\HardBreakConverter;
13 use League\HTMLToMarkdown\Converter\HeaderConverter;
14 use League\HTMLToMarkdown\Converter\HorizontalRuleConverter;
15 use League\HTMLToMarkdown\Converter\ImageConverter;
16 use League\HTMLToMarkdown\Converter\LinkConverter;
17 use League\HTMLToMarkdown\Converter\ListBlockConverter;
18 use League\HTMLToMarkdown\Converter\ListItemConverter;
19 use League\HTMLToMarkdown\Converter\ParagraphConverter;
20 use League\HTMLToMarkdown\Converter\PreformattedConverter;
21 use League\HTMLToMarkdown\Converter\TextConverter;
22
23 final class Environment
24 {
25     /**
26      * @var Configuration
27      */
28     protected $config;
29
30     /**
31      * @var ConverterInterface[]
32      */
33     protected $converters = array();
34
35     public function __construct(array $config = array())
36     {
37         $this->config = new Configuration($config);
38         $this->addConverter(new DefaultConverter());
39     }
40
41     /**
42      * @return Configuration
43      */
44     public function getConfig()
45     {
46         return $this->config;
47     }
48
49     /**
50      * @param ConverterInterface $converter
51      */
52     public function addConverter(ConverterInterface $converter)
53     {
54         if ($converter instanceof ConfigurationAwareInterface) {
55             $converter->setConfig($this->config);
56         }
57
58         foreach ($converter->getSupportedTags() as $tag) {
59             $this->converters[$tag] = $converter;
60         }
61     }
62
63     /**
64      * @param string $tag
65      *
66      * @return ConverterInterface
67      */
68     public function getConverterByTag($tag)
69     {
70         if (isset($this->converters[$tag])) {
71             return $this->converters[$tag];
72         }
73
74         return $this->converters[DefaultConverter::DEFAULT_CONVERTER];
75     }
76
77     /**
78      * @param array $config
79      *
80      * @return Environment
81      */
82     public static function createDefaultEnvironment(array $config = array())
83     {
84         $environment = new static($config);
85
86         $environment->addConverter(new BlockquoteConverter());
87         $environment->addConverter(new CodeConverter());
88         $environment->addConverter(new CommentConverter());
89         $environment->addConverter(new DivConverter());
90         $environment->addConverter(new EmphasisConverter());
91         $environment->addConverter(new HardBreakConverter());
92         $environment->addConverter(new HeaderConverter());
93         $environment->addConverter(new HorizontalRuleConverter());
94         $environment->addConverter(new ImageConverter());
95         $environment->addConverter(new LinkConverter());
96         $environment->addConverter(new ListBlockConverter());
97         $environment->addConverter(new ListItemConverter());
98         $environment->addConverter(new ParagraphConverter());
99         $environment->addConverter(new PreformattedConverter());
100         $environment->addConverter(new TextConverter());
101
102         return $environment;
103     }
104 }