105 lines
3.2 KiB
PHP
105 lines
3.2 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace League\HTMLToMarkdown;
|
||
|
|
||
|
use League\HTMLToMarkdown\Converter\BlockquoteConverter;
|
||
|
use League\HTMLToMarkdown\Converter\CodeConverter;
|
||
|
use League\HTMLToMarkdown\Converter\CommentConverter;
|
||
|
use League\HTMLToMarkdown\Converter\ConverterInterface;
|
||
|
use League\HTMLToMarkdown\Converter\DefaultConverter;
|
||
|
use League\HTMLToMarkdown\Converter\DivConverter;
|
||
|
use League\HTMLToMarkdown\Converter\EmphasisConverter;
|
||
|
use League\HTMLToMarkdown\Converter\HardBreakConverter;
|
||
|
use League\HTMLToMarkdown\Converter\HeaderConverter;
|
||
|
use League\HTMLToMarkdown\Converter\HorizontalRuleConverter;
|
||
|
use League\HTMLToMarkdown\Converter\ImageConverter;
|
||
|
use League\HTMLToMarkdown\Converter\LinkConverter;
|
||
|
use League\HTMLToMarkdown\Converter\ListBlockConverter;
|
||
|
use League\HTMLToMarkdown\Converter\ListItemConverter;
|
||
|
use League\HTMLToMarkdown\Converter\ParagraphConverter;
|
||
|
use League\HTMLToMarkdown\Converter\PreformattedConverter;
|
||
|
use League\HTMLToMarkdown\Converter\TextConverter;
|
||
|
|
||
|
final class Environment
|
||
|
{
|
||
|
/**
|
||
|
* @var Configuration
|
||
|
*/
|
||
|
protected $config;
|
||
|
|
||
|
/**
|
||
|
* @var ConverterInterface[]
|
||
|
*/
|
||
|
protected $converters = array();
|
||
|
|
||
|
public function __construct(array $config = array())
|
||
|
{
|
||
|
$this->config = new Configuration($config);
|
||
|
$this->addConverter(new DefaultConverter());
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return Configuration
|
||
|
*/
|
||
|
public function getConfig()
|
||
|
{
|
||
|
return $this->config;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param ConverterInterface $converter
|
||
|
*/
|
||
|
public function addConverter(ConverterInterface $converter)
|
||
|
{
|
||
|
if ($converter instanceof ConfigurationAwareInterface) {
|
||
|
$converter->setConfig($this->config);
|
||
|
}
|
||
|
|
||
|
foreach ($converter->getSupportedTags() as $tag) {
|
||
|
$this->converters[$tag] = $converter;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param string $tag
|
||
|
*
|
||
|
* @return ConverterInterface
|
||
|
*/
|
||
|
public function getConverterByTag($tag)
|
||
|
{
|
||
|
if (isset($this->converters[$tag])) {
|
||
|
return $this->converters[$tag];
|
||
|
}
|
||
|
|
||
|
return $this->converters[DefaultConverter::DEFAULT_CONVERTER];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param array $config
|
||
|
*
|
||
|
* @return Environment
|
||
|
*/
|
||
|
public static function createDefaultEnvironment(array $config = array())
|
||
|
{
|
||
|
$environment = new static($config);
|
||
|
|
||
|
$environment->addConverter(new BlockquoteConverter());
|
||
|
$environment->addConverter(new CodeConverter());
|
||
|
$environment->addConverter(new CommentConverter());
|
||
|
$environment->addConverter(new DivConverter());
|
||
|
$environment->addConverter(new EmphasisConverter());
|
||
|
$environment->addConverter(new HardBreakConverter());
|
||
|
$environment->addConverter(new HeaderConverter());
|
||
|
$environment->addConverter(new HorizontalRuleConverter());
|
||
|
$environment->addConverter(new ImageConverter());
|
||
|
$environment->addConverter(new LinkConverter());
|
||
|
$environment->addConverter(new ListBlockConverter());
|
||
|
$environment->addConverter(new ListItemConverter());
|
||
|
$environment->addConverter(new ParagraphConverter());
|
||
|
$environment->addConverter(new PreformattedConverter());
|
||
|
$environment->addConverter(new TextConverter());
|
||
|
|
||
|
return $environment;
|
||
|
}
|
||
|
}
|