101 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			101 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| ;(function() {
 | |
|     var brodocDec = {};
 | |
| 
 | |
|     var navIds = [];
 | |
|     var bodyContent = '';
 | |
|     var codeTabs = [];
 | |
| 
 | |
|     var idAffix = 0;
 | |
|     var uniqueNav = [];
 | |
| 
 | |
|     brodocDec.decorateMarked = function(renderer) {
 | |
|         renderer.heading = (text, level, raw) => {
 | |
|             var id = raw.toLowerCase().replace(/[^\w]+/g, '-');
 | |
|             if ((uniqueNav.indexOf(id) !== -1) && (level === 2)) {
 | |
|                 idAffix++;
 | |
|                 id += '-' + idAffix;
 | |
|             } else {
 | |
|                 uniqueNav.push(id);
 | |
|             }
 | |
|             if (level < 3) {
 | |
|                 navIds.push(
 | |
|                     {
 | |
|                         id: id,
 | |
|                         text: text,
 | |
|                         level: level
 | |
|                     }
 | |
|                 );
 | |
|             }
 | |
|             return '<h'
 | |
|                 + level
 | |
|                 + ' id="'
 | |
|                 + renderer.options.headerPrefix
 | |
|                 + id
 | |
|                 + '">'
 | |
|                 + text
 | |
|                 + '</h'
 | |
|                 + level
 | |
|                 + '>\n';
 | |
|         };
 | |
| 
 | |
|         renderer.blockquote = function(quote) {
 | |
|             var bdregex = /(bdocs-tab:)[^\s]*/;
 | |
|             var bdoc = quote.match(bdregex);
 | |
|             if (bdoc) {
 | |
|                 var bdocTab = bdoc[0].split(':')[1];
 | |
|                 var bdquote = quote.replace(bdoc[0], '');
 | |
|                 return '<blockquote class="code-block ' + bdocTab + '">\n' + bdquote + '</blockquote>\n';
 | |
|             } else {
 | |
|                 return '<blockquote>\n' + quote + '</blockquote>\n';
 | |
|             }
 | |
|         };
 | |
| 
 | |
|         renderer.code = function (code, lang, escaped) {
 | |
|             var bdocGroup = lang.substring(0, lang.indexOf('_'));
 | |
|             var bdocTab = bdocGroup.split(':')[1];
 | |
|             var hlang = lang.substring(lang.indexOf('_')+1);
 | |
| 
 | |
|             if (renderer.options.highlight) {
 | |
|                 var out = renderer.options.highlight(code, hlang);
 | |
|                 if (out !== null && out !== code) {
 | |
|                     escaped = true;
 | |
|                     code = out;
 | |
|                 }
 | |
|             }
 | |
| 
 | |
|             var tabLang = hlang ? hlang : 'generic';
 | |
|             if (codeTabs.indexOf(bdocTab) === -1) {
 | |
|                 codeTabs.push(bdocTab);
 | |
|             }
 | |
| 
 | |
|             if (!hlang) {
 | |
|                 return '<pre class="code-block"><code class="generic">'
 | |
|                     + (escaped ? code : escape(code, true))
 | |
|                     + '\n</code></pre>';
 | |
|             }
 | |
| 
 | |
|             return '<pre class="code-block '
 | |
|                 + bdocTab
 | |
|                 + '"><code class="'
 | |
|                 + renderer.options.langPrefix
 | |
|                 + escape(hlang, true)
 | |
|                 + '">'
 | |
|                 + (escaped ? code : escape(code, true))
 | |
|                 + '\n</code></pre>\n';
 | |
|         };
 | |
|     };
 | |
|     
 | |
|     if (typeof module !== 'undefined' && typeof exports === 'object') {
 | |
|         module.exports = brodocDec;
 | |
|     } else if (typeof define === 'function' && define.amd) {
 | |
|         define(function() { return brodocDec; });
 | |
|     } else {
 | |
|         this.brodocDec = brodocDec;
 | |
|     }
 | |
|     brodocDec.navIds = navIds;
 | |
|     brodocDec.codeTabs = codeTabs;
 | |
|     return brodocDec;
 | |
| 
 | |
| }).call(function() {
 | |
|   return this || (typeof window !== 'undefined' ? window : global);
 | |
| }()); |