Skip to content

Commit 4b5c414

Browse files
Keep language class on livebook output code block (#1682)
1 parent e63e957 commit 4b5c414

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

lib/ex_doc/markdown/earmark.ex

+8-3
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,14 @@ defmodule ExDoc.Markdown.Earmark do
8181
],
8282
acc
8383
) do
84-
code_attrs = Enum.reject(code_attrs, &match?({"class", _}, &1))
85-
new_code = {"code", [{"class", "output"} | code_attrs], [source], code_meta}
86-
fixup_list([{"pre", pre_attrs, [new_code], pre_meta} | ast], acc)
84+
code_attrs =
85+
case Enum.split_with(code_attrs, &match?({"class", _}, &1)) do
86+
{[], attrs} -> [{"class", "output"} | attrs]
87+
{[{"class", class}], attrs} -> [{"class", "#{class} output"} | attrs]
88+
end
89+
90+
code_node = {"code", code_attrs, [source], code_meta}
91+
fixup_list([{"pre", pre_attrs, [code_node], pre_meta} | ast], acc)
8792
end
8893

8994
defp fixup_list([head | tail], acc) do

test/ex_doc/markdown/earmark_test.exs

+8-1
Original file line numberDiff line numberDiff line change
@@ -57,13 +57,20 @@ defmodule ExDoc.Markdown.EarmarkTest do
5757
```
5858
2
5959
```
60+
61+
<!-- livebook:{"output":true} -->
62+
63+
```mermaid
64+
graph TD; A-->B;
65+
```
6066
"""
6167

6268
assert Markdown.to_ast(md, []) == [
6369
{:h1, [], ["Notebook"], %{}},
6470
{:h2, [], ["Example"], %{}},
6571
{:pre, [], [{:code, [class: "elixir"], ["1 + 1"], %{}}], %{}},
66-
{:pre, [], [{:code, [class: "output"], ["2"], %{}}], %{}}
72+
{:pre, [], [{:code, [class: "output"], ["2"], %{}}], %{}},
73+
{:pre, [], [{:code, [class: "mermaid output"], ["graph TD; A-->B;"], %{}}], %{}}
6774
]
6875
end
6976
end

0 commit comments

Comments
 (0)