File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -245,6 +245,33 @@ document.addEventListener("DOMContentLoaded", function () {
245245 let lineNumberUpdateFrame = null ;
246246
247247 const renderer = new marked . Renderer ( ) ;
248+ const BLOCK_MATH_MARKER_PATTERN = / ^ \$ \$ / m;
249+ const BLOCK_MATH_PATTERN = / ^ \$ \$ [ \t ] * \n ? ( [ \s \S ] * ?) \n ? \$ \$ [ \t ] * (?: \n | $ ) / ;
250+ const blockMathExtension = {
251+ name : 'blockMath' ,
252+ level : 'block' ,
253+ start ( src ) {
254+ const match = src . match ( BLOCK_MATH_MARKER_PATTERN ) ;
255+ if ( ! match ) {
256+ return undefined ;
257+ }
258+ return match . index ;
259+ } ,
260+ tokenizer ( src ) {
261+ const match = BLOCK_MATH_PATTERN . exec ( src ) ;
262+ if ( ! match ) {
263+ return undefined ;
264+ }
265+ return {
266+ type : 'blockMath' ,
267+ raw : match [ 0 ] ,
268+ text : match [ 1 ] ,
269+ } ;
270+ } ,
271+ renderer ( token ) {
272+ return `<div class="math-block">$$\n${ token . text } \n$$</div>\n` ;
273+ }
274+ } ;
248275 renderer . code = function ( code , language ) {
249276 if ( language === 'mermaid' ) {
250277 const uniqueId = 'mermaid-diagram-' + Math . random ( ) . toString ( 36 ) . substr ( 2 , 9 ) ;
@@ -258,6 +285,10 @@ document.addEventListener("DOMContentLoaded", function () {
258285 return `<pre><code class="hljs ${ validLanguage } ">${ highlightedCode } </code></pre>` ;
259286 } ;
260287
288+ marked . use ( {
289+ extensions : [ blockMathExtension ]
290+ } ) ;
291+
261292 marked . setOptions ( {
262293 ...markedOptions ,
263294 renderer : renderer ,
Original file line number Diff line number Diff line change @@ -273,6 +273,33 @@ document.addEventListener("DOMContentLoaded", function () {
273273 let lineNumberUpdateFrame = null ;
274274
275275 const renderer = new marked . Renderer ( ) ;
276+ const BLOCK_MATH_MARKER_PATTERN = / ^ \$ \$ / m;
277+ const BLOCK_MATH_PATTERN = / ^ \$ \$ [ \t ] * \n ? ( [ \s \S ] * ?) \n ? \$ \$ [ \t ] * (?: \n | $ ) / ;
278+ const blockMathExtension = {
279+ name : 'blockMath' ,
280+ level : 'block' ,
281+ start ( src ) {
282+ const match = src . match ( BLOCK_MATH_MARKER_PATTERN ) ;
283+ if ( ! match ) {
284+ return undefined ;
285+ }
286+ return match . index ;
287+ } ,
288+ tokenizer ( src ) {
289+ const match = BLOCK_MATH_PATTERN . exec ( src ) ;
290+ if ( ! match ) {
291+ return undefined ;
292+ }
293+ return {
294+ type : 'blockMath' ,
295+ raw : match [ 0 ] ,
296+ text : match [ 1 ] ,
297+ } ;
298+ } ,
299+ renderer ( token ) {
300+ return `<div class="math-block">$$\n${ token . text } \n$$</div>\n` ;
301+ }
302+ } ;
276303 renderer . code = function ( code , language ) {
277304 if ( language === 'mermaid' ) {
278305 const uniqueId = 'mermaid-diagram-' + Math . random ( ) . toString ( 36 ) . substr ( 2 , 9 ) ;
@@ -286,6 +313,10 @@ document.addEventListener("DOMContentLoaded", function () {
286313 return `<pre><code class="hljs ${ validLanguage } ">${ highlightedCode } </code></pre>` ;
287314 } ;
288315
316+ marked . use ( {
317+ extensions : [ blockMathExtension ]
318+ } ) ;
319+
289320 marked . setOptions ( {
290321 ...markedOptions ,
291322 renderer : renderer ,
You can’t perform that action at this time.
0 commit comments