Skip to content

Commit ab453cb

Browse files
ascholerChemeketaascholerStevenClontz
authored
Add mermaid support (#750)
* Add mermaid support * update core commit --------- Co-authored-by: ascholer <[email protected]> Co-authored-by: Steven Clontz <[email protected]>
1 parent 190c51c commit ab453cb

File tree

4 files changed

+30
-1
lines changed

4 files changed

+30
-1
lines changed

pretext/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121

2222
VERSION = get_version("pretext", Path(__file__).parent.parent)
2323

24-
CORE_COMMIT = "8e9aac01da8fdab44c6c9ded4f30d9d7227d015b"
24+
CORE_COMMIT = "ed4e9d94a75b5b728aca2eb06dfde3f1595ab783"
2525

2626

2727
def activate() -> None:

pretext/constants.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
"codelens",
2424
"datafile",
2525
"interactive",
26+
"mermaid",
2627
],
2728
"latex": [
2829
"webwork",
@@ -32,6 +33,7 @@
3233
"codelens",
3334
"datafile",
3435
"interactive",
36+
"mermaid",
3537
],
3638
"epub": [
3739
"webwork",
@@ -42,6 +44,7 @@
4244
"codelens",
4345
"datafile",
4446
"interactive",
47+
"mermaid",
4548
],
4649
"kindle": [
4750
"webwork",
@@ -52,6 +55,7 @@
5255
"codelens",
5356
"datafile",
5457
"interactive",
58+
"mermaid",
5559
],
5660
"braille": [
5761
"webwork",
@@ -62,6 +66,7 @@
6266
"codelens",
6367
"datafile",
6468
"interactive",
69+
"mermaid",
6570
],
6671
"webwork": [
6772
"webwork",
@@ -75,6 +80,7 @@
7580
"codelens",
7681
"datafile",
7782
"interactive",
83+
"mermaid",
7884
],
7985
}
8086

@@ -87,6 +93,7 @@
8793
"codelens": ".//program[@interactive = 'codelens']",
8894
"datafile": ".//datafile",
8995
"interactive": ".//interactive",
96+
"mermaid": ".//mermaid",
9097
}
9198
ASSETS = ["ALL"] + list(ASSET_TO_XPATH.keys())
9299

@@ -99,18 +106,21 @@
99106
"interactive": ["preview", "qrcode"],
100107
"codelens": ["trace"],
101108
"datafile": ["datafile"],
109+
"mermaid": ["mermaid"],
102110
}
103111

104112
ASSET_FORMATS: t.Dict[str, t.Dict[str, t.List[str]]] = {
105113
"pdf": {
106114
"asymptote": ["pdf"],
107115
"latex-image": [],
108116
"sageplot": ["pdf", "png"],
117+
"mermaid": ["png"],
109118
},
110119
"latex": {
111120
"asymptote": ["pdf"],
112121
"latex-image": [],
113122
"sageplot": ["pdf", "png"],
123+
"mermaid": ["png"],
114124
},
115125
"html": {
116126
"asymptote": ["html"],
@@ -126,21 +136,25 @@
126136
"asymptote": ["svg"],
127137
"latex-image": ["svg"],
128138
"sageplot": ["svg"],
139+
"mermaid": ["png"],
129140
},
130141
"kindle": {
131142
"asymptote": ["png"],
132143
"latex-image": ["png"],
133144
"sageplot": ["png"],
145+
"mermaid": ["png"],
134146
},
135147
"braille": {
136148
"asymptote": ["all"],
137149
"latex-image": ["all"],
138150
"sageplot": ["all"],
151+
"mermaid": ["png"],
139152
},
140153
"custom": {
141154
"asymptote": ["all"],
142155
"latex-image": ["all"],
143156
"sageplot": ["all"],
157+
"mermaid": ["png"],
144158
},
145159
}
146160

pretext/project/__init__.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -927,6 +927,20 @@ def generate_assets(
927927
log.debug(e, exc_info=True)
928928
# youtube also requires the play button.
929929
self.ensure_play_button()
930+
if "mermaid" in assets_to_generate:
931+
for id in assets_to_generate["mermaid"]:
932+
try:
933+
core.mermaid_images(
934+
xml_source=self.source_abspath(),
935+
pub_file=self.publication_abspath().as_posix(),
936+
stringparams=stringparams_copy,
937+
xmlid_root=id,
938+
dest_dir=self.generated_dir_abspath() / "mermaid",
939+
)
940+
successful_assets.append(("mermaid", id))
941+
except Exception as e:
942+
log.error(f"Unable to generate some mermaid images: \n{e}")
943+
log.debug(e, exc_info=True)
930944
if "codelens" in assets_to_generate:
931945
for id in assets_to_generate["codelens"]:
932946
try:

pretext/project/xml.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ class Executables(pxml.BaseXmlModel, tag="executables"):
1818
asy: t.Optional[str] = pxml.attr(default=shutil.which("asy"))
1919
# The same applies to Sage.
2020
sage: t.Optional[str] = pxml.attr(default=shutil.which("sage"))
21+
mermaid: str = pxml.attr(default="mmdc")
2122
pdfpng: str = pxml.attr(default="convert")
2223
pdfeps: str = pxml.attr(default="pdftops")
2324
node: str = pxml.attr(default="node")

0 commit comments

Comments
 (0)