Skip to content

Commit 6504690

Browse files
authored
[BUGFIX] Fix parsing and rendering of code-block with line numbers (#685)
- There was an error triggered by using `lineno-start` option. - the data-start attribute was output without quotes - integration tests were missing
1 parent 5746a37 commit 6504690

File tree

5 files changed

+31
-5
lines changed

5 files changed

+31
-5
lines changed

packages/guides-restructured-text/src/RestructuredText/Directives/CodeBlockDirective.php

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,15 +70,19 @@ public function process(
7070
return $node;
7171
}
7272

73-
/** @param mixed[] $options */
73+
/** @param array<string, DirectiveOption> $options */
7474
private function setStartingLineNumberBasedOnOptions(array $options, CodeNode $node): void
7575
{
7676
$startingLineNumber = null;
77-
if (isset($options['linenos'])) {
77+
if (isset($options['linenos']) || isset($options['number-lines'])) {
7878
$startingLineNumber = 1;
7979
}
8080

81-
$startingLineNumber = $options['number-lines'] ?? $options['lineno-start'] ?? $startingLineNumber;
81+
if (isset($options['number-lines'])) {
82+
$startingLineNumber = $options['number-lines']->getValue() ?? $startingLineNumber;
83+
} elseif (isset($options['lineno-start'])) {
84+
$startingLineNumber = $options['lineno-start']->getValue() ?? $startingLineNumber;
85+
}
8286

8387
if ($startingLineNumber === null) {
8488
return;

packages/guides/resources/template/html/body/code.html.twig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,5 @@
77
<span class="caption-text">{{ node.caption }}</span>
88
</div>
99
{%- endif -%}
10-
<pre{% if node.classes %} class="{{ node.classesString }}"{% endif %}><code class="language-{{ node.language }}{{ node.startingLineNumber ? ' line-numbers' }}" {{- node.startingLineNumber ? ' data-start=' ~ node.startingLineNumber }}>{{ node.value }}</code></pre>
10+
<pre{% if node.classes %} class="{{ node.classesString }}"{% endif %}><code class="language-{{ node.language }}{{ node.startingLineNumber ? ' line-numbers' }}" {%- if node.startingLineNumber %} data-start="{{ node.startingLineNumber }}"{% endif %}>{{ node.value }}</code></pre>
1111
{%- endif -%}

tests/Integration/tests/class/literalincludeLineNos/expected/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<div class="section" id="index">
88
<h1>index</h1>
99

10-
<pre><code class="language-php line-numbers" data-start=2>&lt;?php
10+
<pre><code class="language-php line-numbers" data-start="2">&lt;?php
1111

1212
declare(strict_types=1);
1313

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<title>Title</title>
5+
6+
</head>
7+
<body>
8+
<div class="section" id="title">
9+
<h1>Title</h1>
10+
11+
<pre><code class="language-ruby line-numbers" data-start="10">Some more Ruby code, with line numbering starting at 10.</code></pre>
12+
</div>
13+
14+
</body>
15+
</html>
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
Title
2+
=====
3+
4+
.. code-block:: ruby
5+
:lineno-start: 10
6+
7+
Some more Ruby code, with line numbering starting at 10.

0 commit comments

Comments
 (0)