diff --git a/DependencyInjection/Compiler/ParsersCompilerPass.php b/DependencyInjection/Compiler/ParsersCompilerPass.php index 4e0c211..e479fc2 100644 --- a/DependencyInjection/Compiler/ParsersCompilerPass.php +++ b/DependencyInjection/Compiler/ParsersCompilerPass.php @@ -14,23 +14,22 @@ class ParsersCompilerPass implements CompilerPassInterface return; } - if (!$container->hasDefinition('markdown.parser')) { + if (!$definition = $container->findDefinition('markdown.parser')) { return; } - $defaultParserTag = $container->getDefinition('markdown.parser')->getTag('markdown.parser'); - - $definition = $container->getDefinition('templating.helper.markdown'); + $defaultAlias = current($definition->getTag('markdown.parser')); + $defaultAlias = $defaultAlias['alias']; + $definition = $container->getDefinition('templating.helper.markdown'); foreach ($container->findTaggedServiceIds('markdown.parser') as $id => $tags) { - if ($defaultParserTag == $id) { - $definition->addMethodCall('addParser', array(new Reference($id), 'default')); - continue; - } - foreach ($tags as $attributes) { $alias = empty($attributes['alias']) ? $id : $attributes['alias']; - $definition->addMethodCall('addParser', array(new Reference($id), $alias)); + if ($defaultAlias == $alias) { + $definition->addMethodCall('addParser', array(new Reference($id), 'default')); + } else { + $definition->addMethodCall('addParser', array(new Reference($id), $alias)); + } } } } diff --git a/DependencyInjection/KnpMarkdownExtension.php b/DependencyInjection/KnpMarkdownExtension.php index c0c3e28..cf98d55 100644 --- a/DependencyInjection/KnpMarkdownExtension.php +++ b/DependencyInjection/KnpMarkdownExtension.php @@ -29,12 +29,20 @@ class KnpMarkdownExtension extends Extension $loader->load('helper.xml'); $loader->load('twig.xml'); - if ($config['parser']['service'] == 'markdown.parser.sundown' && !class_exists('Sundown\Markdown')) { - throw new InvalidConfigurationException('Sundown parser selected, but required extension is not installed or configured.'); + if ('markdown.parser.sundown' == $config['parser']['service']) { + if (!class_exists('Sundown\\Markdown')) { + throw new InvalidConfigurationException('Sundown parser selected, but required extension is not installed or configured.'); + } + + $loader->load('sundown.xml'); + + $definition = $container->getDefinition('markdown.parser.sundown'); + $definition->addTag('markdown.parser', array('alias' => 'sundown')); + + $container->setParameter('markdown.sundown.extensions', $config['sundown']['extensions']); + $container->setParameter('markdown.sundown.render_flags', $config['sundown']['render_flags']); } - $container->setParameter('markdown.sundown.extensions', $config['sundown']['extensions']); - $container->setParameter('markdown.sundown.render_flags', $config['sundown']['render_flags']); $container->setAlias('markdown.parser', $config['parser']['service']); } } diff --git a/Parser/Preset/Flavored.php b/Parser/Preset/Flavored.php new file mode 100644 index 0000000..b4c1a15 --- /dev/null +++ b/Parser/Preset/Flavored.php @@ -0,0 +1,24 @@ + - - - - - - - - - %markdown.sundown.extensions% - - - - %markdown.sundown.render_flags% + + diff --git a/Resources/config/sundown.xml b/Resources/config/sundown.xml new file mode 100644 index 0000000..84f3f87 --- /dev/null +++ b/Resources/config/sundown.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + %markdown.sundown.extensions% + + + + %markdown.sundown.render_flags% + + +