瀏覽代碼

improve renderer option handling

Don't waste time constructing a renderer then override it if one is
passed into the options object.
Ujjwal Sharma 4 年之前
父節點
當前提交
6884741b94
共有 1 個文件被更改,包括 24 次插入20 次删除
  1. 24 20
      plugin/markdown/plugin.js

+ 24 - 20
plugin/markdown/plugin.js

@@ -424,34 +424,38 @@ const Plugin = () => {
 
 			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
-				let lineNumbers = '';
+				renderer.code = ( code, language ) => {
 
-				// Users can opt in to show line numbers and highlight
-				// specific lines.
-				// ```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();
-				}
+					// Off by default
+					let lineNumbers = '';
+
+					// Users can opt in to show line numbers and highlight
+					// specific lines.
+					// ```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
-				// avoid having the HTML parser alter our code before
-				// highlight.js is able to read it
-				code = escapeForHTML( code );
+					// 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>`;
-			};
+					return `<pre><code ${lineNumbers} class="${language}">${code}</code></pre>`;
+				};
+			}
 
 			marked.setOptions( {
 				renderer,
-				...deck.getConfig().markdown
+				...markedOptions
 			} );
 
 			return processSlides( deck.getRevealElement() ).then( convertSlides );