2015-07-29 22:31:41 +02:00
|
|
|
<?php namespace Todaymade\Daux\ContentTypes\Markdown;
|
2015-05-22 14:48:09 +02:00
|
|
|
|
|
|
|
use League\CommonMark\Environment;
|
2020-04-22 21:39:15 +02:00
|
|
|
use League\CommonMark\Extension\Autolink\AutolinkExtension;
|
|
|
|
use League\CommonMark\Extension\SmartPunct\SmartPunctExtension;
|
|
|
|
use League\CommonMark\Extension\Strikethrough\StrikethroughExtension;
|
|
|
|
use League\CommonMark\Extension\Table\TableExtension;
|
2019-11-28 22:36:26 +01:00
|
|
|
use League\CommonMark\Inline\Element as InlineElement;
|
2016-04-14 12:02:31 +02:00
|
|
|
use Todaymade\Daux\Config;
|
2015-05-22 14:48:09 +02:00
|
|
|
|
|
|
|
class CommonMarkConverter extends \League\CommonMark\CommonMarkConverter
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* Create a new commonmark converter instance.
|
|
|
|
*/
|
2016-07-27 21:32:51 +02:00
|
|
|
public function __construct(array $config = [])
|
2015-05-22 14:48:09 +02:00
|
|
|
{
|
|
|
|
$environment = Environment::createCommonMarkEnvironment();
|
|
|
|
$environment->mergeConfig($config);
|
2020-04-22 21:39:15 +02:00
|
|
|
$environment->addExtension(new AutolinkExtension());
|
|
|
|
$environment->addExtension(new SmartPunctExtension());
|
|
|
|
$environment->addExtension(new StrikethroughExtension());
|
2015-10-21 23:26:42 +02:00
|
|
|
$environment->addExtension(new TableExtension());
|
2015-05-22 14:48:09 +02:00
|
|
|
|
2016-04-12 08:38:52 +02:00
|
|
|
// Table of Contents
|
2016-04-14 12:02:31 +02:00
|
|
|
$environment->addBlockParser(new TableOfContentsParser());
|
2016-04-12 08:38:52 +02:00
|
|
|
|
2016-04-14 12:02:31 +02:00
|
|
|
$this->extendEnvironment($environment, $config['daux']);
|
2015-05-22 14:48:09 +02:00
|
|
|
|
2019-12-05 21:25:58 +01:00
|
|
|
if ($config['daux']->hasProcessorInstance()) {
|
|
|
|
$config['daux']->getProcessorInstance()->extendCommonMarkEnvironment($environment);
|
2015-07-19 00:55:57 +02:00
|
|
|
}
|
2015-07-17 18:34:00 +02:00
|
|
|
|
2019-11-30 20:40:42 +01:00
|
|
|
parent::__construct($config, $environment);
|
2015-05-22 14:48:09 +02:00
|
|
|
}
|
2015-06-29 16:16:39 +02:00
|
|
|
|
|
|
|
protected function getLinkRenderer(Environment $environment)
|
|
|
|
{
|
2015-07-17 23:38:06 +02:00
|
|
|
return new LinkRenderer($environment->getConfig('daux'));
|
2015-06-29 16:16:39 +02:00
|
|
|
}
|
|
|
|
|
2016-04-14 12:02:31 +02:00
|
|
|
protected function extendEnvironment(Environment $environment, Config $config)
|
2015-06-29 16:16:39 +02:00
|
|
|
{
|
2019-11-28 22:36:26 +01:00
|
|
|
$environment->addInlineRenderer(InlineElement\Link::class, $this->getLinkRenderer($environment));
|
2015-06-29 16:16:39 +02:00
|
|
|
}
|
2015-05-22 14:48:09 +02:00
|
|
|
}
|