Skip to content

Commit 9d72f27

Browse files
committed
FIX CommonMark v1.6 deprecations
Use the MarkdownConverter with the Environment definitions to suppress deprecation warnings.
1 parent 197e4b5 commit 9d72f27

7 files changed

Lines changed: 58 additions & 52 deletions

File tree

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,9 @@ aymdev_commonmark:
4848
4949
The `type` key can be used to choose between a *CommonMark* or a *GitHub* converter:
5050

51-
- `commonmark` (default): `CommonMarkConverter`
52-
- `github`: `GithubFlavoredMarkdownConverter`
53-
- `empty`: creates a `CommonMarkConverter` without the `CommonMarkCoreExtension` (e.g. to use `InlinesOnlyExtension`)
51+
- `commonmark` (default): `MarkdownConverter` with `CommonMarkCoreExtension`
52+
- `github`: `MarkdownConverter` with `GithubFlavoredMarkdownExtension`
53+
- `empty`: an empty `MarkdownConverter` (e.g. to use `InlinesOnlyExtension`)
5454

5555
### Converter options
5656

src/DependencyInjection/AymdevCommonmarkExtension.php

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,11 @@
44

55
use Aymdev\CommonmarkBundle\DependencyInjection\Compiler\ConvertersPass;
66
use Aymdev\CommonmarkBundle\Twig\CommonMarkExtension;
7-
use League\CommonMark\CommonMarkConverter;
8-
use League\CommonMark\ConfigurableEnvironmentInterface;
97
use League\CommonMark\Environment;
10-
use League\CommonMark\GithubFlavoredMarkdownConverter;
11-
use Symfony\Component\Config\FileLocator;
8+
use League\CommonMark\MarkdownConverter;
129
use Symfony\Component\DependencyInjection\ContainerBuilder;
1310
use Symfony\Component\DependencyInjection\Definition;
1411
use Symfony\Component\DependencyInjection\Extension\Extension;
15-
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
1612

1713
/**
1814
* @internal
@@ -36,26 +32,26 @@ public function load(array $configs, ContainerBuilder $container)
3632
*/
3733
private function createBundleServiceDefinitions(ContainerBuilder $container): void
3834
{
39-
// Environment
35+
// Environments
4036
$container
41-
->setDefinition('aymdev_commonmark.environment', new Definition(ConfigurableEnvironmentInterface::class))
42-
->setFactory([Environment::class, 'createCommonMarkEnvironment'])
37+
->setDefinition('aymdev_commonmark.environment.empty', new Definition(Environment::class))
4338
->setPublic(false)
4439
;
45-
46-
// Converters
4740
$container
48-
->setDefinition('aymdev_commonmark.converter.type.commonmark', new Definition(CommonMarkConverter::class))
41+
->setDefinition('aymdev_commonmark.environment.commonmark', new Definition(Environment::class))
42+
->setFactory([Environment::class, 'createCommonMarkEnvironment'])
4943
->setPublic(false)
5044
;
5145

5246
$container
53-
->setDefinition('aymdev_commonmark.converter.type.github', new Definition(GithubFlavoredMarkdownConverter::class))
47+
->setDefinition('aymdev_commonmark.environment.github', new Definition(Environment::class))
48+
->setFactory([Environment::class, 'createGFMEnvironment'])
5449
->setPublic(false)
5550
;
5651

52+
// Converter
5753
$container
58-
->setAlias('aymdev_commonmark.converter.type.empty', 'aymdev_commonmark.converter.type.commonmark')
54+
->setDefinition('aymdev_commonmark.converter', new Definition(MarkdownConverter::class))
5955
->setPublic(false)
6056
;
6157

src/DependencyInjection/Compiler/ConvertersPass.php

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@
22

33
namespace Aymdev\CommonmarkBundle\DependencyInjection\Compiler;
44

5-
use League\CommonMark\CommonMarkConverter;
6-
use League\CommonMark\Environment;
5+
use League\CommonMark\MarkdownConverter;
76
use Symfony\Component\DependencyInjection\ChildDefinition;
87
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
98
use Symfony\Component\DependencyInjection\Compiler\ServiceLocatorTagPass;
@@ -38,11 +37,8 @@ public function process(ContainerBuilder $container)
3837
private function registerConverters(array $converterConfig, ContainerBuilder $container): array
3938
{
4039
// Create environment definition
41-
if ($converterConfig['type'] === 'empty') {
42-
$environment = new Definition(Environment::class);
43-
} else {
44-
$environment = new ChildDefinition('aymdev_commonmark.environment');
45-
}
40+
$environment = new ChildDefinition('aymdev_commonmark.environment.' . $converterConfig['type']);
41+
$environment->addArgument($converterConfig['options'] ?? []);
4642

4743
// Register and add extensions
4844
foreach ($converterConfig['extensions'] as $extensionName) {
@@ -58,16 +54,15 @@ private function registerConverters(array $converterConfig, ContainerBuilder $co
5854
$container->setDefinition($environmentId, $environment);
5955

6056
// Create converter definition
61-
$converterDefinition = new ChildDefinition('aymdev_commonmark.converter.type.' . $converterConfig['type']);
57+
$converterDefinition = new ChildDefinition('aymdev_commonmark.converter');
6258
$converterDefinition
63-
->addArgument($converterConfig['options'] ?? [])
6459
->addArgument(new Reference($environmentId))
6560
->setPublic(true)
6661
;
6762

6863
// Current service ID
6964
$container->setDefinition($converterConfig['name'], $converterDefinition);
70-
$container->registerAliasForArgument($converterConfig['name'], CommonMarkConverter::class, $converterConfig['name']);
65+
$container->registerAliasForArgument($converterConfig['name'], MarkdownConverter::class, $converterConfig['name']);
7166

7267
// Deprecated service ID
7368
$deprecatedConverterDefinition = clone $converterDefinition;

src/Twig/CommonMarkExtension.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace Aymdev\CommonmarkBundle\Twig;
44

5-
use League\CommonMark\CommonMarkConverter;
5+
use League\CommonMark\MarkdownConverter;
66
use Symfony\Component\DependencyInjection\ServiceLocator;
77
use Twig\Extension\AbstractExtension;
88
use Twig\TwigFilter;
@@ -32,7 +32,7 @@ public function convertMarkdown(?string $markdown, ?string $converterName = null
3232
{
3333
// Single converter setup
3434
if ($converterName === null && count($this->serviceLocator->getProvidedServices()) === 1) {
35-
/** @var CommonMarkConverter $converter */
35+
/** @var MarkdownConverter $converter */
3636
$converterName = array_key_first($this->serviceLocator->getProvidedServices());
3737
$converter = $this->serviceLocator->get($converterName);
3838
return $converter->convertToHtml($markdown);
@@ -48,7 +48,7 @@ public function convertMarkdown(?string $markdown, ?string $converterName = null
4848
return null;
4949
}
5050

51-
/** @var CommonMarkConverter $converter */
51+
/** @var MarkdownConverter $converter */
5252
$converter = $this->serviceLocator->get($converterName);
5353
return $converter->convertToHtml($markdown);
5454
}

tests/DependencyInjection/AymDevCommonmarkExtensionTest.php

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,8 @@
44

55
use Aymdev\CommonmarkBundle\DependencyInjection\AymdevCommonMarkExtension;
66
use Aymdev\CommonmarkBundle\DependencyInjection\Compiler\ConvertersPass;
7-
use League\CommonMark\CommonMarkConverter;
8-
use League\CommonMark\ConfigurableEnvironmentInterface;
9-
use League\CommonMark\GithubFlavoredMarkdownConverter;
7+
use League\CommonMark\Environment;
8+
use League\CommonMark\MarkdownConverter;
109
use PHPUnit\Framework\TestCase;
1110
use Symfony\Component\DependencyInjection\ContainerBuilder;
1211

@@ -34,16 +33,23 @@ public function testDefaultServicesRegistration()
3433

3534
$extension->load([], $container);
3635

36+
// "empty" Environment
37+
$emptyEnvironment = $container->get('aymdev_commonmark.environment.empty');
38+
self::assertInstanceOf(Environment::class, $emptyEnvironment);
39+
self::assertCount(0, $emptyEnvironment->getExtensions());
40+
3741
// CommonMark Environment
38-
$environment = $container->get('aymdev_commonmark.environment');
39-
self::assertInstanceOf(ConfigurableEnvironmentInterface::class, $environment);
40-
41-
// CommonMark base converter
42-
$commonmarkConverter = $container->get('aymdev_commonmark.converter.type.commonmark');
43-
self::assertInstanceOf(CommonMarkConverter::class, $commonmarkConverter);
44-
45-
// CommonMark GitHub converter
46-
$githubConverter = $container->get('aymdev_commonmark.converter.type.github');
47-
self::assertInstanceOf(GithubFlavoredMarkdownConverter::class, $githubConverter);
42+
$commonMarkEnvironment = $container->get('aymdev_commonmark.environment.commonmark');
43+
self::assertInstanceOf(Environment::class, $commonMarkEnvironment);
44+
self::assertNotCount(0, $commonMarkEnvironment->getExtensions());
45+
46+
// GitHub Environment
47+
$githubEnvironment = $container->get('aymdev_commonmark.environment.github');
48+
self::assertInstanceOf(Environment::class, $githubEnvironment);
49+
self::assertNotCount(0, $githubEnvironment->getExtensions());
50+
51+
// converter
52+
$converterDefinition = $container->getDefinition('aymdev_commonmark.converter');
53+
self::assertSame(MarkdownConverter::class, $converterDefinition->getClass());
4854
}
4955
}

tests/DependencyInjection/Compiler/ConvertersPassTest.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,10 @@
66
use Aymdev\CommonmarkBundle\DependencyInjection\AymdevCommonMarkExtension;
77
use Aymdev\CommonmarkBundle\DependencyInjection\Compiler\ConvertersPass;
88
use Aymdev\CommonmarkBundle\Twig\CommonMarkExtension;
9-
use League\CommonMark\CommonMarkConverter;
109
use League\CommonMark\Extension\InlinesOnly\InlinesOnlyExtension;
10+
use League\CommonMark\MarkdownConverter;
1111
use PHPUnit\Framework\TestCase;
1212
use Symfony\Bundle\FrameworkBundle\FrameworkBundle;
13-
use Symfony\Bundle\TwigBundle\DependencyInjection\TwigExtension;
1413
use Symfony\Bundle\TwigBundle\TwigBundle;
1514
use Symfony\Component\Config\Loader\LoaderInterface;
1615
use Symfony\Component\DependencyInjection\ContainerBuilder;
@@ -76,7 +75,7 @@ public function testContainerServicesRegistration()
7675
// Current service ID
7776
self::assertTrue($container->has($converter['name']));
7877

79-
$alias = CommonMarkConverter::class . ' $';
78+
$alias = MarkdownConverter::class . ' $';
8079
$alias .= lcfirst(str_replace(' ', '', ucwords(str_replace('_', ' ', $converter['name']))));
8180
self::assertTrue($container->hasAlias($alias));
8281
}
@@ -130,7 +129,7 @@ public function testEmptyEnvironmentSetup()
130129
$kernel->boot();
131130
$container = $kernel->getContainer();
132131

133-
/** @var CommonMarkConverter $converter */
132+
/** @var MarkdownConverter $converter */
134133
$converter = $container->get('my_converter');
135134

136135
// converting works correctly

tests/Twig/CommonMarkExtensionTest.php

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
namespace Tests\AymDev\CommonMarkBundle\Twig;
44

55
use Aymdev\CommonmarkBundle\Twig\CommonMarkExtension;
6-
use League\CommonMark\CommonMarkConverter;
6+
use League\CommonMark\MarkdownConverter;
77
use PHPUnit\Framework\TestCase;
88
use Symfony\Component\DependencyInjection\ServiceLocator;
99

@@ -13,12 +13,16 @@ public function testFilterBasicUsage()
1313
{
1414
$serviceLocator = new ServiceLocator([
1515
'a_conv' => function() {
16-
$converterMockA = $this->getMockBuilder(CommonMarkConverter::class)->getMock();
16+
$converterMockA = $this->getMockBuilder(MarkdownConverter::class)
17+
->disableOriginalConstructor()
18+
->getMock();
1719
$converterMockA->method('convertToHtml')->willReturn('a');
1820
return $converterMockA;
1921
},
2022
'b_conv' => function() {
21-
$converterMockB = $this->getMockBuilder(CommonMarkConverter::class)->getMock();
23+
$converterMockB = $this->getMockBuilder(MarkdownConverter::class)
24+
->disableOriginalConstructor()
25+
->getMock();
2226
$converterMockB->method('convertToHtml')->willReturn('b');
2327
return $converterMockB;
2428
},
@@ -37,7 +41,9 @@ public function testFilterConverterNameIsOptional()
3741
{
3842
$serviceLocator = new ServiceLocator([
3943
'unique' => function() {
40-
$converterMock = $this->getMockBuilder(CommonMarkConverter::class)->getMock();
44+
$converterMock = $this->getMockBuilder(MarkdownConverter::class)
45+
->disableOriginalConstructor()
46+
->getMock();
4147
$converterMock->expects(self::once())->method('convertToHtml')->willReturnArgument(0);
4248
return $converterMock;
4349
},
@@ -57,7 +63,9 @@ public function testFilterWithInvalidConverterName()
5763
{
5864
$serviceLocator = new ServiceLocator([
5965
'my_converter' => function() {
60-
return $this->getMockBuilder(CommonMarkConverter::class)->getMock();
66+
return $this->getMockBuilder(MarkdownConverter::class)
67+
->disableOriginalConstructor()
68+
->getMock();
6169
},
6270
]);
6371
$extension = new CommonMarkExtension($serviceLocator);
@@ -75,7 +83,9 @@ public function testFilterWithNullContent()
7583
{
7684
$serviceLocator = new ServiceLocator([
7785
'my_converter' => function() {
78-
return $this->getMockBuilder(CommonMarkConverter::class)->getMock();
86+
return $this->getMockBuilder(MarkdownConverter::class)
87+
->disableOriginalConstructor()
88+
->getMock();
7989
},
8090
]);
8191
$extension = new CommonMarkExtension($serviceLocator);

0 commit comments

Comments
 (0)