improve renderer option handling
Don't waste time constructing a renderer then override it if one is passed into the options object.
This commit is contained in:
parent
cf8e64bd85
commit
6884741b94
@ -424,34 +424,38 @@ const Plugin = () => {
|
|||||||
|
|
||||||
deck = reveal;
|
deck = reveal;
|
||||||
|
|
||||||
let renderer = new marked.Renderer();
|
let { renderer, ...markedOptions } = deck.getConfig().markdown;
|
||||||
|
|
||||||
renderer.code = ( code, language ) => {
|
if (!renderer) {
|
||||||
|
let renderer = new marked.Renderer();
|
||||||
|
|
||||||
// Off by default
|
renderer.code = ( code, language ) => {
|
||||||
let lineNumbers = '';
|
|
||||||
|
|
||||||
// Users can opt in to show line numbers and highlight
|
// Off by default
|
||||||
// specific lines.
|
let lineNumbers = '';
|
||||||
// ```javascript [] show line numbers
|
|
||||||
// ```javascript [1,4-8] highlights lines 1 and 4-8
|
|
||||||
if( CODE_LINE_NUMBER_REGEX.test( language ) ) {
|
|
||||||
lineNumbers = language.match( CODE_LINE_NUMBER_REGEX )[1].trim();
|
|
||||||
lineNumbers = `data-line-numbers="${lineNumbers}"`;
|
|
||||||
language = language.replace( CODE_LINE_NUMBER_REGEX, '' ).trim();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Escape before this gets injected into the DOM to
|
// Users can opt in to show line numbers and highlight
|
||||||
// avoid having the HTML parser alter our code before
|
// specific lines.
|
||||||
// highlight.js is able to read it
|
// ```javascript [] show line numbers
|
||||||
code = escapeForHTML( code );
|
// ```javascript [1,4-8] highlights lines 1 and 4-8
|
||||||
|
if( CODE_LINE_NUMBER_REGEX.test( language ) ) {
|
||||||
|
lineNumbers = language.match( CODE_LINE_NUMBER_REGEX )[1].trim();
|
||||||
|
lineNumbers = `data-line-numbers="${lineNumbers}"`;
|
||||||
|
language = language.replace( CODE_LINE_NUMBER_REGEX, '' ).trim();
|
||||||
|
}
|
||||||
|
|
||||||
return `<pre><code ${lineNumbers} class="${language}">${code}</code></pre>`;
|
// Escape before this gets injected into the DOM to
|
||||||
};
|
// avoid having the HTML parser alter our code before
|
||||||
|
// highlight.js is able to read it
|
||||||
|
code = escapeForHTML( code );
|
||||||
|
|
||||||
|
return `<pre><code ${lineNumbers} class="${language}">${code}</code></pre>`;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
marked.setOptions( {
|
marked.setOptions( {
|
||||||
renderer,
|
renderer,
|
||||||
...deck.getConfig().markdown
|
...markedOptions
|
||||||
} );
|
} );
|
||||||
|
|
||||||
return processSlides( deck.getRevealElement() ).then( convertSlides );
|
return processSlides( deck.getRevealElement() ).then( convertSlides );
|
||||||
|
Loading…
Reference in New Issue
Block a user