Skip to content

Commit cc18868

Browse files
committed
parseAndReplaceListings
SQUASHED: AUTO-COMMIT-src-client-markdown.js,
1 parent 774b087 commit cc18868

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

src/client/markdown.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,33 @@ export default class Markdown {
109109
return <span class="stripped" latex={m[1]}></span>
110110
})
111111
}
112+
113+
static parseAndReplaceFigures(element) {
114+
var container = lively.query(element, "lively-container")
115+
var baseDir = container ? container.getDir() : ""
116+
this.parseAndReplace(element, /\\includegraphics\[[^\]]*\]{([^}]+)\}/g, (m) => <div><img src={baseDir + m[1]}></img></div>)
117+
this.parseAndReplace(element, /\\caption\[[^\]]*\]{([^}]+)\}/g, (m) => <div>Figure: {m[1]}</div>)
118+
}
119+
120+
121+
static parseAndReplaceListings(element) {
122+
var container = lively.query(element, "lively-container")
123+
var baseDir = container ? container.getDir() : ""
124+
this.parseAndReplace(element, /(?:^|\n)\/([^ ]+) "([^"]*)"/g, (m) => {
125+
var pre = <pre>LOADING...</pre>
126+
var url = baseDir + m[1];
127+
var description = m[2];
128+
fetch(url).then(async r => {
129+
130+
if (r.status == 200) {
131+
pre.textContent = await r.text()
132+
} else {
133+
pre.textContent = "Could not load " + url
134+
}
135+
})
136+
return <div>{pre}<p><b>Listing:</b> {description} </p></div> })
137+
}
138+
112139

113140
static parseAndReplaceFigureRefs(element) {
114141
element.querySelectorAll("lively-drawio").forEach(ea => {
@@ -214,6 +241,8 @@ Markdown.extractReferences(`Hello @`+`Foo1981HHC World\nggg @`+`Bar2019X`)
214241

215242
this.parseAndReplaceBibrefs(element)
216243
this.parseAndReplaceFootenotes(element)
244+
this.parseAndReplaceListings(element)
245+
this.parseAndReplaceFigures(element)
217246
this.parseAndReplaceFigureRefs(element)
218247
this.parseAndReplaceLabels(element)
219248
this.parseAndReplaceHeadings(element)

0 commit comments

Comments
 (0)