diff --git a/src/Ciconia/Extension/Gfm/FencedCodeBlockExtension.php b/src/Ciconia/Extension/Gfm/FencedCodeBlockExtension.php index d1bbb56..178fdd9 100644 --- a/src/Ciconia/Extension/Gfm/FencedCodeBlockExtension.php +++ b/src/Ciconia/Extension/Gfm/FencedCodeBlockExtension.php @@ -56,7 +56,7 @@ public function processFencedCodeBlock(Text $text, array $options = []) \1 # matched #1 ) }smx', function (Text $w, Text $fence, Text $lang, Text $code) use ($options) { - $rendererOptions = []; + $preRendererOptions = $codeRendererOptions = []; if (!$lang->isEmpty()) { if ($options['pygments'] && class_exists('KzykHys\Pygments\Pygments')) { @@ -66,11 +66,16 @@ public function processFencedCodeBlock(Text $text, array $options = []) return "\n\n" . $html . "\n\n"; } - $rendererOptions = [ + $preRendererOptions = [ 'attr' => [ 'class' => 'prettyprint lang-' . $lang->lower() ] ]; + $codeRendererOptions = [ + 'attr' => [ + 'class' => 'language-' . $lang->lower() + ] + ]; } $code->escapeHtml(ENT_NOQUOTES); @@ -78,7 +83,7 @@ public function processFencedCodeBlock(Text $text, array $options = []) $code->replace('/\A\n+/', ''); $code->replace('/\s+\z/', ''); - return "\n\n" . $this->getRenderer()->renderCodeBlock($code, $rendererOptions) . "\n\n"; + return "\n\n" . $this->getRenderer()->renderCodeBlock($code, $preRendererOptions, $codeRendererOptions) . "\n\n"; }); } diff --git a/src/Ciconia/Renderer/HtmlRenderer.php b/src/Ciconia/Renderer/HtmlRenderer.php index bbeab28..5358e7f 100644 --- a/src/Ciconia/Renderer/HtmlRenderer.php +++ b/src/Ciconia/Renderer/HtmlRenderer.php @@ -56,18 +56,21 @@ public function renderHeader($content, array $options = array()) /** * {@inheritdoc} */ - public function renderCodeBlock($content, array $options = array()) + public function renderCodeBlock($content, array $preOptions = array(), array $codeOptions = array()) { if (!$content instanceof Text) { $content = new Text($content); } - $options = $this->createResolver()->resolve($options); + $resolver = $this->createResolver(); + $preOptions = $resolver->resolve($preOptions); + $codeOptions = $resolver->resolve($codeOptions); $tag = Tag::create('pre') - ->setAttributes($options['attr']) + ->setAttributes($preOptions['attr']) ->setText( Tag::create('code') + ->setAttributes($codeOptions['attr']) ->setText($content->append("\n")) ->render() ); diff --git a/src/Ciconia/Renderer/RendererInterface.php b/src/Ciconia/Renderer/RendererInterface.php index 5418082..7c37c9a 100644 --- a/src/Ciconia/Renderer/RendererInterface.php +++ b/src/Ciconia/Renderer/RendererInterface.php @@ -37,11 +37,12 @@ public function renderHeader($content, array $options = array()); * @api * * @param string|Text $content - * @param array $options + * @param array $preOptions + * @param array $codeOptions * * @return string */ - public function renderCodeBlock($content, array $options = array()); + public function renderCodeBlock($content, array $preOptions = array(), array $codeOptions = array()); /** * @api diff --git a/test/Ciconia/Resources/gfm/fenced-code-block-syntax.out b/test/Ciconia/Resources/gfm/fenced-code-block-syntax.out index 75106f8..4d2d9d9 100644 --- a/test/Ciconia/Resources/gfm/fenced-code-block-syntax.out +++ b/test/Ciconia/Resources/gfm/fenced-code-block-syntax.out @@ -2,7 +2,7 @@ code block -
<?php
+
<?php
 
 class Test
 {
diff --git a/test/Ciconia/Resources/gfm/link-in-codeblock.out b/test/Ciconia/Resources/gfm/link-in-codeblock.out
index c784e37..729321a 100644
--- a/test/Ciconia/Resources/gfm/link-in-codeblock.out
+++ b/test/Ciconia/Resources/gfm/link-in-codeblock.out
@@ -1,2 +1,2 @@
-
$validator->validate('http://www.example.com/');
+
$validator->validate('http://www.example.com/');
 
\ No newline at end of file