Skip to content

Add support for CSS classes in code blocks #138

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Feb 10, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions src/Directive/CodeBlockDirective.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ public function process(Parser $parser, ?Node $node, string $variable, string $d
}

$node->setLanguage($data);
// grab the "class" option and forward it onto the Node
// CodeNodeRenderer can then use it when rendering
$node->setClasses(isset($options['class']) ? explode(' ', $options['class']) : []);

if ('' !== $variable) {
$environment = $parser->getEnvironment();
Expand Down
1 change: 1 addition & 0 deletions src/Renderers/CodeNodeRenderer.php
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ public function render(): string
return $this->templateRenderer->render(
'code.html.twig',
[
'css_classes' => $this->codeNode->getClassesString(),
'languages' => $languages,
'line_numbers' => $lineNumbers,
'code' => $highlightedCode,
Expand Down
2 changes: 1 addition & 1 deletion src/Templates/default/html/code.html.twig
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<div translate="no" data-loc="{{ loc }}" class="notranslate codeblock codeblock-length-{{ length }} {{ languages|map(language => "codeblock-#{language}")|join(' ') }}">
<div translate="no" data-loc="{{ loc }}" class="notranslate codeblock codeblock-length-{{ length }} {{ languages|map(language => "codeblock-#{language}")|join(' ') }} {{ css_classes }}">
<div class="codeblock-scroll">
<pre class="codeblock-lines">{{ line_numbers }}</pre>
<pre class="codeblock-code"><code>{{ code|raw }}</code></pre>
Expand Down
2 changes: 1 addition & 1 deletion tests/fixtures/expected/blocks/code-blocks/bash.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<div translate="no" data-loc="1" class="notranslate codeblock codeblock-length-sm codeblock-bash">
<div translate="no" data-loc="1" class="notranslate codeblock codeblock-length-sm codeblock-bash ">
<div class="codeblock-scroll">
<pre class="codeblock-lines">1</pre>
<pre class="codeblock-code"><code>git <span class="hljs-built_in">clone</span> git@github.com:symfony/symfony.git</code></pre>
Expand Down
4 changes: 2 additions & 2 deletions tests/fixtures/expected/blocks/code-blocks/diff.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<div translate="no" data-loc="5" class="notranslate codeblock codeblock-length-sm codeblock-diff">
<div translate="no" data-loc="5" class="notranslate codeblock codeblock-length-sm codeblock-diff ">
<div class="codeblock-scroll">
<pre class="codeblock-lines">1
2
Expand All @@ -17,7 +17,7 @@
</div>
</div>

<div translate="no" data-loc="6" class="notranslate codeblock codeblock-length-sm codeblock-diff">
<div translate="no" data-loc="6" class="notranslate codeblock codeblock-length-sm codeblock-diff ">
<div class="codeblock-scroll">
<pre class="codeblock-lines">1
2
Expand Down
2 changes: 1 addition & 1 deletion tests/fixtures/expected/blocks/code-blocks/html-php.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<div translate="no" data-loc="12" class="notranslate codeblock codeblock-length-md codeblock-html+php codeblock-html">
<div translate="no" data-loc="12" class="notranslate codeblock codeblock-length-md codeblock-html+php codeblock-html ">
<div class="codeblock-scroll">
<pre class="codeblock-lines">1
2
Expand Down
2 changes: 1 addition & 1 deletion tests/fixtures/expected/blocks/code-blocks/html-twig.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<div translate="no" data-loc="2" class="notranslate codeblock codeblock-length-sm codeblock-html+twig codeblock-twig">
<div translate="no" data-loc="2" class="notranslate codeblock codeblock-length-sm codeblock-html+twig codeblock-twig ">
<div class="codeblock-scroll">
<pre class="codeblock-lines">1
2</pre>
Expand Down
2 changes: 1 addition & 1 deletion tests/fixtures/expected/blocks/code-blocks/html.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<div translate="no" data-loc="1" class="notranslate codeblock codeblock-length-sm codeblock-html">
<div translate="no" data-loc="1" class="notranslate codeblock codeblock-length-sm codeblock-html ">
<div class="codeblock-scroll">
<pre class="codeblock-lines">1</pre>
<pre class="codeblock-code"><code><span class="hljs-comment">&lt;!-- some code --&gt;</span>
Expand Down
2 changes: 1 addition & 1 deletion tests/fixtures/expected/blocks/code-blocks/ini.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<div translate="no" data-loc="1" class="notranslate codeblock codeblock-length-sm codeblock-ini">
<div translate="no" data-loc="1" class="notranslate codeblock codeblock-length-sm codeblock-ini ">
<div class="codeblock-scroll">
<pre class="codeblock-lines">1</pre>
<pre class="codeblock-code"><code><span class="hljs-attr">fetch</span> = +refs/notes/*:refs/notes/*</code></pre>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<div translate="no" data-loc="14" class="notranslate codeblock codeblock-length-md codeblock-php-annotations codeblock-php">
<div translate="no" data-loc="14" class="notranslate codeblock codeblock-length-md codeblock-php-annotations codeblock-php ">
<div class="codeblock-scroll">
<pre class="codeblock-lines">1
2
Expand Down
2 changes: 1 addition & 1 deletion tests/fixtures/expected/blocks/code-blocks/php.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<div translate="no" data-loc="7" class="notranslate codeblock codeblock-length-sm codeblock-php">
<div translate="no" data-loc="7" class="notranslate codeblock codeblock-length-sm codeblock-php ">
<div class="codeblock-scroll">
<pre class="codeblock-lines">1
2
Expand Down
19 changes: 16 additions & 3 deletions tests/fixtures/expected/blocks/code-blocks/terminal.html
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<div translate="no" data-loc="1" class="notranslate codeblock codeblock-length-sm codeblock-terminal codeblock-bash">
<div translate="no" data-loc="1" class="notranslate codeblock codeblock-length-sm codeblock-terminal codeblock-bash ">
<div class="codeblock-scroll">
<pre class="codeblock-lines">1</pre>
<pre class="codeblock-code"><code>git <span
class="hljs-built_in">clone</span> git@github.com:symfony/symfony.git</code></pre>
</div>
</div>
<div translate="no" data-loc="2" class="notranslate codeblock codeblock-length-sm codeblock-terminal codeblock-bash">
<div translate="no" data-loc="2" class="notranslate codeblock codeblock-length-sm codeblock-terminal codeblock-bash ">
<div class="codeblock-scroll">
<pre class="codeblock-lines">1
2</pre>
Expand All @@ -20,7 +20,7 @@
</div>
</div>

<div translate="no" data-loc="3" class="notranslate codeblock codeblock-length-sm codeblock-terminal codeblock-bash">
<div translate="no" data-loc="3" class="notranslate codeblock codeblock-length-sm codeblock-terminal codeblock-bash ">
<div class="codeblock-scroll">
<pre class="codeblock-lines">1
2
Expand All @@ -33,3 +33,16 @@
</pre>
</div>
</div>

<div translate="no" data-loc="1" class="notranslate codeblock codeblock-length-sm codeblock-terminal codeblock-bash hide">
<div class="codeblock-scroll">
<pre class="codeblock-lines">1</pre>
<pre class="codeblock-code">
<code>
<span class="hljs-prompt">$ </span>
git branch -D sessions-in-db ||
<span class="hljs-literal">true</span>
</code>
</pre>
</div>
</div>
2 changes: 1 addition & 1 deletion tests/fixtures/expected/blocks/code-blocks/text.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<div translate="no" data-loc="1" class="notranslate codeblock codeblock-length-sm codeblock-text">
<div translate="no" data-loc="1" class="notranslate codeblock codeblock-length-sm codeblock-text ">
<div class="codeblock-scroll">
<pre class="codeblock-lines">1</pre>
<pre class="codeblock-code"><code>some text</code></pre>
Expand Down
2 changes: 1 addition & 1 deletion tests/fixtures/expected/blocks/code-blocks/twig.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<div translate="no" data-loc="1" class="notranslate codeblock codeblock-length-sm codeblock-twig">
<div translate="no" data-loc="1" class="notranslate codeblock codeblock-length-sm codeblock-twig ">
<div class="codeblock-scroll">
<pre class="codeblock-lines">1</pre>
<pre class="codeblock-code"><code><span class="hljs-comment">{# some code #}</span></code></pre>
Expand Down
2 changes: 1 addition & 1 deletion tests/fixtures/expected/blocks/code-blocks/xml.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<div translate="no" data-loc="1" class="notranslate codeblock codeblock-length-sm codeblock-xml">
<div translate="no" data-loc="1" class="notranslate codeblock codeblock-length-sm codeblock-xml ">
<div class="codeblock-scroll">
<pre class="codeblock-lines">1</pre>
<pre class="codeblock-code"><code><span class="hljs-comment">&lt;!-- some code --&gt;</span>
Expand Down
2 changes: 1 addition & 1 deletion tests/fixtures/expected/blocks/code-blocks/yaml.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<div translate="no" data-loc="1" class="notranslate codeblock codeblock-length-sm codeblock-yaml">
<div translate="no" data-loc="1" class="notranslate codeblock codeblock-length-sm codeblock-yaml ">
<div class="codeblock-scroll">
<pre class="codeblock-lines">1</pre>
<pre class="codeblock-code"><code><span class="hljs-comment"># some code</span>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@
<li data-language="php" > <span>PHP</span> </li>
</ul>
<div class="configuration-codeblock" data-language="yaml" style="">
<div translate="no" data-loc="1" class="notranslate codeblock codeblock-length-sm codeblock-yaml">
<div translate="no" data-loc="1" class="notranslate codeblock codeblock-length-sm codeblock-yaml ">
<div class="codeblock-scroll">
<pre class="codeblock-lines">1</pre>
<pre class="codeblock-code"><code><span class="hljs-comment"># app/config/services.yml</span></code></pre>
</div>
</div>
</div>
<div class="configuration-codeblock" data-language="php" style="display: none">
<div translate="no" data-loc="1" class="notranslate codeblock codeblock-length-sm codeblock-php">
<div translate="no" data-loc="1" class="notranslate codeblock codeblock-length-sm codeblock-php ">
<div class="codeblock-scroll">
<pre class="codeblock-lines">1</pre>
<pre class="codeblock-code"><code><span class="hljs-comment">// config/routes.php</span></code></pre>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" width="24" height="24" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z" /></svg>
<span>Note</span>
</p><p>test</p>
<div translate="no" data-loc="1" class="notranslate codeblock codeblock-length-sm codeblock-php">
<div translate="no" data-loc="1" class="notranslate codeblock codeblock-length-sm codeblock-php ">
<div class="codeblock-scroll">
<pre class="codeblock-lines">1</pre>
<pre class="codeblock-code"><code><span class="hljs-comment">// code</span>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<div class="admonition-wrapper"><div class="admonition admonition-sidebar"><p class="sidebar-title"><span>The sidebar's title</span></p><p>some text before code block</p>
<div translate="no" data-loc="1" class="notranslate codeblock codeblock-length-sm codeblock-php">
<div translate="no" data-loc="1" class="notranslate codeblock codeblock-length-sm codeblock-php ">
<div class="codeblock-scroll">
<pre class="codeblock-lines">1</pre>
<pre class="codeblock-code"><code><span class="hljs-comment">// some code</span>
Expand Down
2 changes: 1 addition & 1 deletion tests/fixtures/expected/blocks/nodes/literal.html
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<p>here is some php code from literal:</p>
<div translate="no" data-loc="7" class="notranslate codeblock codeblock-length-sm codeblock-php">
<div translate="no" data-loc="7" class="notranslate codeblock codeblock-length-sm codeblock-php ">
<div class="codeblock-scroll">
<pre class="codeblock-lines">1
2
Expand Down
5 changes: 5 additions & 0 deletions tests/fixtures/source/blocks/code-blocks/terminal.rst
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,8 @@
C:\> CIV

# Civilization for DOS - my first computer game!

.. code-block:: terminal
:class: hide

$ git branch -D sessions-in-db || true