;(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); }());