Skip to content

Commit fcfdaf8

Browse files
committed
Allow v2 of commonmark
1 parent 0bdf630 commit fcfdaf8

File tree

3 files changed

+32
-14
lines changed

3 files changed

+32
-14
lines changed

composer.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
},
1919
"require-dev": {
2020
"fig-r/psr2r-sniffer": "dev-master",
21-
"league/commonmark": "^1.5",
21+
"league/commonmark": "^1.5 || ^2.0",
2222
"mjohnson/decoda": "^6.12",
2323
"dereuromark/media-embed": "^0.5"
2424
},

src/Markdown/CommonMarkMarkdown.php

+28-13
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,19 @@
44

55
use Cake\Core\InstanceConfigTrait;
66
use League\CommonMark\CommonMarkConverter;
7-
use League\CommonMark\Environment;
7+
use League\CommonMark\Environment as LegacyEnvironment;
8+
use League\CommonMark\Environment\Environment;
9+
use League\CommonMark\Extension\CommonMark\CommonMarkCoreExtension;
10+
use League\CommonMark\Extension\GithubFlavoredMarkdownExtension;
11+
use League\CommonMark\MarkdownConverter;
12+
use League\CommonMark\MarkdownConverterInterface;
813

914
class CommonMarkMarkdown implements MarkdownInterface {
1015

1116
use InstanceConfigTrait;
1217

1318
/**
14-
* @var \League\CommonMark\CommonMarkConverter|null
19+
* @var \League\CommonMark\MarkdownConverterInterface|null
1520
*/
1621
protected $converter;
1722

@@ -37,15 +42,15 @@ public function __construct(array $config = []) {
3742
public function convert(string $text, array $options = []): string {
3843
$converter = $this->converter($options);
3944

40-
return $converter->convertToHtml($text);
45+
return (string)$converter->convertToHtml($text);
4146
}
4247

4348
/**
4449
* @param array $options
4550
*
46-
* @return \League\CommonMark\CommonMarkConverter
51+
* @return \League\CommonMark\MarkdownConverterInterface
4752
*/
48-
protected function converter(array $options = []): CommonMarkConverter {
53+
protected function converter(array $options = []): MarkdownConverterInterface {
4954
if ($this->converter === null) {
5055
$this->converter = static::defaultConverter($options);
5156
}
@@ -56,22 +61,32 @@ protected function converter(array $options = []): CommonMarkConverter {
5661
/**
5762
* @param array $options
5863
*
59-
* @return \League\CommonMark\CommonMarkConverter
64+
* @return \League\CommonMark\MarkdownConverterInterface
6065
*/
61-
public static function defaultConverter(array $options = []): CommonMarkConverter {
62-
$environment = Environment::createGFMEnvironment();
66+
public static function defaultConverter(array $options = []): MarkdownConverterInterface {
6367

6468
$options += [
6569
'escape' => true,
6670
];
67-
6871
if ($options['escape']) {
69-
$environment->mergeConfig([
70-
'html_input' => Environment::HTML_INPUT_ESCAPE,
71-
]);
72+
$options['html_input'] = 'escape';
73+
}
74+
unset($options['escape']);
75+
76+
if (!class_exists(Environment::class)) {
77+
$environment = LegacyEnvironment::createGFMEnvironment();
78+
$environment->mergeConfig($options);
79+
} else {
80+
$environment = new Environment($options);
81+
$environment->addExtension(new CommonMarkCoreExtension());
82+
$environment->addExtension(new GithubFlavoredMarkdownExtension());
83+
}
84+
85+
if (!class_exists(MarkdownConverter::class)) {
86+
return new CommonMarkConverter([], $environment);
7287
}
7388

74-
return new CommonMarkConverter([], $environment);
89+
return new MarkdownConverter($environment);
7590
}
7691

7792
}

tests/phpstan.neon

+3
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,6 @@ parameters:
33
bootstrapFiles:
44
- bootstrap.php
55
checkMissingIterableValueType: false
6+
ignoreErrors:
7+
- '#Call to static method createGFMEnvironment\(\) on an unknown class .+Environment#'
8+
- '#Class .+CommonMarkConverter constructor invoked with 2 parameters, 0-1 required#'

0 commit comments

Comments
 (0)