Skip to content

Commit f41ad69

Browse files
sophstadi80and
authored andcommitted
Fix linenos flag
1 parent fb7623a commit f41ad69

File tree

6 files changed

+19
-4
lines changed

6 files changed

+19
-4
lines changed

snooty/gizaparser/release.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ def render(self, page: Page, rst_parser: EmbeddedRstParser) -> List[n.Node]:
3131
True if self.copyable is None else self.copyable,
3232
None,
3333
self.code,
34+
False,
3435
)
3536
)
3637
return children

snooty/gizaparser/steps.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ def render(self, rst_parser: EmbeddedRstParser) -> List[n.Node]:
4747
True if self.copyable is None else self.copyable,
4848
None,
4949
self.code,
50+
False,
5051
)
5152
)
5253

snooty/n.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,12 +104,13 @@ class InlineNode(Node):
104104

105105
@dataclass
106106
class Code(Node):
107-
__slots__ = ("lang", "copyable", "emphasize_lines", "value")
107+
__slots__ = ("lang", "copyable", "emphasize_lines", "value", "linenos")
108108
type = "code"
109109
lang: Optional[str]
110110
copyable: bool
111111
emphasize_lines: Optional[Sequence[Tuple[int, int]]]
112112
value: str
113+
linenos: bool
113114

114115

115116
@dataclass

snooty/parser.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,7 @@ def dispatch_visit(self, node: docutils.nodes.Node) -> None:
261261
node["copyable"],
262262
node["emphasize_lines"] if "emphasize_lines" in node else None,
263263
node.astext(),
264+
node["linenos"],
264265
)
265266
top_of_state = self.state[-1]
266267
assert isinstance(top_of_state, n.Parent)
@@ -512,7 +513,14 @@ def handle_directive(
512513
if "language" in options
513514
else asset_path.suffix.lstrip(".")
514515
)
515-
code = n.Code((line,), lang, "copyable" in options, [], "")
516+
code = n.Code(
517+
(line,),
518+
lang,
519+
"copyable" not in options or options["copyable"] == "true",
520+
[],
521+
"",
522+
"linenos" in options,
523+
)
516524

517525
try:
518526
static_asset = self.add_static_asset(asset_path, False)

snooty/rstparser.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -666,6 +666,7 @@ class BaseCodeDirective(docutils.parsers.rst.Directive):
666666
def run(self) -> List[docutils.nodes.Node]:
667667
source, line = self.state_machine.get_source_and_line(self.lineno)
668668
copyable = "copyable" not in self.options or self.options["copyable"] == "true"
669+
linenos = "linenos" in self.options
669670

670671
try:
671672
n_lines = len(self.content)
@@ -683,6 +684,7 @@ def run(self) -> List[docutils.nodes.Node]:
683684
node["lang"] = self.arguments[0]
684685
node["copyable"] = copyable
685686
node["emphasize_lines"] = emphasize_lines
687+
node["linenos"] = linenos
686688
node.document = self.state.document
687689
node.source, node.line = source, line
688690
return [node]

snooty/test_parser.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ def test_codeblock() -> None:
8787
.. code-block:: sh
8888
:copyable: false
8989
:emphasize-lines: 1, 2-3
90+
:linenos:
9091
9192
foo
9293
bar
@@ -97,7 +98,7 @@ def test_codeblock() -> None:
9798
check_ast_testing_string(
9899
page.ast,
99100
"""<root>
100-
<code lang="sh" emphasize_lines="[(1, 1), (2, 3)]">foo\nbar\nbaz</code>
101+
<code lang="sh" emphasize_lines="[(1, 1), (2, 3)]" linenos="True">foo\nbar\nbaz</code>
101102
</root>""",
102103
)
103104

@@ -147,14 +148,15 @@ def test_literalinclude() -> None:
147148
:dedent:
148149
:start-after: Start Example 3
149150
:end-before: End Example 3
151+
:linenos:
150152
""",
151153
)
152154
page.finish(diagnostics)
153155
assert diagnostics == []
154156
check_ast_testing_string(
155157
page.ast,
156158
"""<root>
157-
<code lang="py">db.inventory.insert_many([
159+
<code lang="py" copyable="True" linenos="True">db.inventory.insert_many([
158160
{"item": "journal",
159161
"qty": 25,
160162
"tags": ["blank", "red"],

0 commit comments

Comments
 (0)