@@ -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 , / \\ i n c l u d e g r a p h i c s \[ [ ^ \] ] * \] { ( [ ^ } ] + ) \} / g, ( m ) => < div > < img src = { baseDir + m [ 1 ] } > </ img > </ div > )
117+ this . parseAndReplace ( element , / \\ c a p t i o n \[ [ ^ \] ] * \] { ( [ ^ } ] + ) \} / 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