'
+ (escaped ? code : escape(code, true))
+ '\n
';
}
return ''
+ (escaped ? code : escape(code, true))
+ '\n
\n';
};
Renderer.prototype.blockquote = function(quote) {
return '\n' + quote + '\n'; }; Renderer.prototype.html = function(html) { return html; }; Renderer.prototype.heading = function(text, level, raw) { return '
' + text + '
\n'; }; Renderer.prototype.table = function(header, body) { return '' + text + '
';
};
Renderer.prototype.br = function() {
return this.options.xhtml ? 'An error occured:
' + escape(e.message + '', true) + ''; } throw e; } } /** * Options */ marked.options = marked.setOptions = function(opt) { merge(marked.defaults, opt); return marked; }; marked.defaults = { gfm: true, tables: true, breaks: false, pedantic: false, sanitize: false, sanitizer: null, mangle: true, smartLists: false, silent: false, highlight: null, langPrefix: 'lang-', smartypants: false, headerPrefix: '', renderer: new Renderer, xhtml: false }; /** * Expose */ marked.Parser = Parser; marked.parser = Parser.parse; marked.Renderer = Renderer; marked.Lexer = Lexer; marked.lexer = Lexer.lex; marked.InlineLexer = InlineLexer; marked.inlineLexer = InlineLexer.output; marked.parse = marked; { module.exports = marked; } }).call(function() { return this || (typeof window !== 'undefined' ? window : commonjsGlobal); }()); }); var prism = createCommonjsModule(function (module) { /* ********************************************** Begin prism-core.js ********************************************** */ var _self = (typeof window !== 'undefined') ? window // if in browser : ( (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope) ? self // if in worker : {} // if in node js ); /** * Prism: Lightweight, robust, elegant syntax highlighting * MIT license http://www.opensource.org/licenses/mit-license.php/ * @author Lea Verou http://lea.verou.me */ var Prism = (function(){ // Private helper vars var lang = /\blang(?:uage)?-(\w+)\b/i; var uniqueId = 0; var _ = _self.Prism = { util: { encode: function (tokens) { if (tokens instanceof Token) { return new Token(tokens.type, _.util.encode(tokens.content), tokens.alias); } else if (_.util.type(tokens) === 'Array') { return tokens.map(_.util.encode); } else { return tokens.replace(/&/g, '&').replace(/ text.length) { // Something went terribly wrong, ABORT, ABORT! break tokenloop; } if (str instanceof Token) { continue; } pattern.lastIndex = 0; var match = pattern.exec(str), delNum = 1; // Greedy patterns can override/remove up to two previously matched tokens if (!match && greedy && i != strarr.length - 1) { pattern.lastIndex = pos; match = pattern.exec(text); if (!match) { break; } var from = match.index + (lookbehind ? match[1].length : 0), to = match.index + match[0].length, k = i, p = pos; for (var len = strarr.length; k < len && p < to; ++k) { p += strarr[k].length; // Move the index i to the element in strarr that is closest to from if (from >= p) { ++i; pos = p; } } /* * If strarr[i] is a Token, then the match starts inside another Token, which is invalid * If strarr[k - 1] is greedy we are in conflict with another greedy pattern */ if (strarr[i] instanceof Token || strarr[k - 1].greedy) { continue; } // Number of tokens to delete and replace with the new match delNum = k - i; str = text.slice(pos, p); match.index -= pos; } if (!match) { continue; } if(lookbehind) { lookbehindLength = match[1].length; } var from = match.index + lookbehindLength, match = match[0].slice(lookbehindLength), to = from + match.length, before = str.slice(0, from), after = str.slice(to); var args = [i, delNum]; if (before) { args.push(before); } var wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy); args.push(wrapped); if (after) { args.push(after); } Array.prototype.splice.apply(strarr, args); } } } return strarr; }, hooks: { all: {}, add: function (name, callback) { var hooks = _.hooks.all; hooks[name] = hooks[name] || []; hooks[name].push(callback); }, run: function (name, env) { var callbacks = _.hooks.all[name]; if (!callbacks || !callbacks.length) { return; } for (var i=0, callback; callback = callbacks[i++];) { callback(env); } } } }; var Token = _.Token = function(type, content, alias, matchedStr, greedy) { this.type = type; this.content = content; this.alias = alias; // Copy of the full string this token was created from this.length = (matchedStr || "").length|0; this.greedy = !!greedy; }; Token.stringify = function(o, language, parent) { if (typeof o == 'string') { return o; } if (_.util.type(o) === 'Array') { return o.map(function(element) { return Token.stringify(element, language, o); }).join(''); } var env = { type: o.type, content: Token.stringify(o.content, language, parent), tag: 'span', classes: ['token', o.type], attributes: {}, language: language, parent: parent }; if (env.type == 'comment') { env.attributes['spellcheck'] = 'true'; } if (o.alias) { var aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias]; Array.prototype.push.apply(env.classes, aliases); } _.hooks.run('wrap', env); var attributes = Object.keys(env.attributes).map(function(name) { return name + '="' + (env.attributes[name] || '').replace(/"/g, '"') + '"'; }).join(' '); return '<' + env.tag + ' class="' + env.classes.join(' ') + '"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '' + env.tag + '>'; }; if (!_self.document) { if (!_self.addEventListener) { // in Node.js return _self.Prism; } // In worker _self.addEventListener('message', function(evt) { var message = JSON.parse(evt.data), lang = message.language, code = message.code, immediateClose = message.immediateClose; _self.postMessage(_.highlight(code, _.languages[lang], lang)); if (immediateClose) { _self.close(); } }, false); return _self.Prism; } //Get current script and highlight var script = document.currentScript || [].slice.call(document.getElementsByTagName("script")).pop(); if (script) { _.filename = script.src; if (document.addEventListener && !script.hasAttribute('data-manual')) { if(document.readyState !== "loading") { if (window.requestAnimationFrame) { window.requestAnimationFrame(_.highlightAll); } else { window.setTimeout(_.highlightAll, 16); } } else { document.addEventListener('DOMContentLoaded', _.highlightAll); } } } return _self.Prism; })(); if ('object' !== 'undefined' && module.exports) { module.exports = Prism; } // hack for components to work correctly in node.js if (typeof commonjsGlobal !== 'undefined') { commonjsGlobal.Prism = Prism; } /* ********************************************** Begin prism-markup.js ********************************************** */ Prism.languages.markup = { 'comment': //, 'prolog': /<\?[\w\W]+?\?>/, 'doctype': //i, 'cdata': //i, 'tag': { pattern: /<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\\1|\\?(?!\1)[\w\W])*\1|[^\s'">=]+))?)*\s*\/?>/i, inside: { 'tag': { pattern: /^<\/?[^\s>\/]+/i, inside: { 'punctuation': /^<\/?/, 'namespace': /^[^\s>\/:]+:/ } }, 'attr-value': { pattern: /=(?:('|")[\w\W]*?(\1)|[^\s>]+)/i, inside: { 'punctuation': /[=>"']/ } }, 'punctuation': /\/?>/, 'attr-name': { pattern: /[^\s>\/]+/, inside: { 'namespace': /^[^\s>\/:]+:/ } } } }, 'entity': /?[\da-z]{1,8};/i }; // Plugin to make entity title show the real entity, idea by Roman Komarov Prism.hooks.add('wrap', function(env) { if (env.type === 'entity') { env.attributes['title'] = env.content.replace(/&/, '&'); } }); Prism.languages.xml = Prism.languages.markup; Prism.languages.html = Prism.languages.markup; Prism.languages.mathml = Prism.languages.markup; Prism.languages.svg = Prism.languages.markup; /* ********************************************** Begin prism-css.js ********************************************** */ Prism.languages.css = { 'comment': /\/\*[\w\W]*?\*\//, 'atrule': { pattern: /@[\w-]+?.*?(;|(?=\s*\{))/i, inside: { 'rule': /@[\w-]+/ // See rest below } }, 'url': /url\((?:(["'])(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1|.*?)\)/i, 'selector': /[^\{\}\s][^\{\};]*?(?=\s*\{)/, 'string': { pattern: /("|')(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1/, greedy: true }, 'property': /(\b|\B)[\w-]+(?=\s*:)/i, 'important': /\B!important\b/i, 'function': /[-a-z0-9]+(?=\()/i, 'punctuation': /[(){};:]/ }; Prism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css); if (Prism.languages.markup) { Prism.languages.insertBefore('markup', 'tag', { 'style': { pattern: /(") } function replaceVar (block) { block.innerHTML = block.innerHTML.replace(/var\(\s*--theme-color.*?\)/g, $docsify.themeColor); } function cssVars () { // variable support if (window.CSS && window.CSS.supports && window.CSS.supports('(--foo: red)')) { return } var styleBlocks = document.querySelectorAll('style:not(.inserted),link');[].forEach.call(styleBlocks, function (block) { if (block.nodeName === 'STYLE') { replaceVar(block); } else if (block.nodeName === 'LINK') { var href = block.getAttribute('href'); if (!/\.css$/.test(href)) { return } load(href).then(function (res) { var style = document.createElement('style'); style.innerHTML = res; document.head.appendChild(style); replaceVar(style); }); } }); } var markdown = marked; var toc = []; var CACHE = {}; var originTitle = document.title; var renderTo = function (dom, content) { dom = typeof dom === 'object' ? dom : document.querySelector(dom); dom.innerHTML = content; slugify.clear(); return dom }; /** * init render */ function init () { var renderer = new marked.Renderer(); /** * render anchor tag * @link https://github.com/chjj/marked#overriding-renderer-methods */ renderer.heading = function (text, level) { var slug = slugify(text); var route = ''; route = "#/" + (getRoute()); toc.push({ level: level, slug: (route + "#" + (encodeURIComponent(slug))), title: text }); return ("
" + hl + "
")
};
renderer.link = function (href, title, text) {
if (!/:|(\/{2})/.test(href)) {
href = ("#/" + href).replace(/\/+/g, '/');
}
return ("" + text + "")
};
renderer.paragraph = function (text) {
if (/^!>/.test(text)) {
return helper('tip', text)
} else if (/^\?>/.test(text)) {
return helper('warn', text)
}
return ("" + text + "
") }; renderer.image = function (href, title, text) { var url = /:|(\/{2})/.test(href) ? href : ($docsify.basePath + href).replace(/\/+/g, '/'); var titleHTML = title ? (" title=\"" + title + "\"") : ''; return ("") }; if (typeof $docsify.markdown === 'function') { markdown = $docsify.markdown.call(this, markdown, renderer); } else { if ($docsify.markdown && $docsify.markdown.renderer) { $docsify.markdown.renderer = merge(renderer, $docsify.markdown.renderer); } markdown.setOptions(merge({ renderer: renderer }, $docsify.markdown)); } var md = markdown; markdown = function (text) { return emojify(md(text)); }; window.Docsify.utils.marked = function (text) { var result = markdown(text); toc = []; return result }; } /** * App */ function renderApp (dom, replace) { var nav = document.querySelector('nav') || document.createElement('nav'); var body = document.body; var head = document.head; if (!$docsify.repo) { nav.classList.add('no-badge'); } dom[replace ? 'outerHTML' : 'innerHTML'] = corner($docsify.repo) + ($docsify.coverpage ? cover() : '') + main(); body.insertBefore(nav, body.children[0]); // theme color if ($docsify.themeColor) { head.innerHTML += theme($docsify.themeColor); cssVars(); } // render name if ($docsify.name) { var aside = document.querySelector('.sidebar'); aside.innerHTML = "([^<]*?)
$'); toc = cacheToc.slice(); // render background if (match) { var coverEl = document.querySelector('section.cover'); if (match[2] === 'color') { coverEl.style.background = match[1] + (match[3] || ''); } else { coverEl.classList.add('has-mask'); coverEl.style.backgroundImage = "url(" + (match[1]) + ")"; } html = html.replace(match[0], ''); } renderTo('.cover-main', html); renderCover.rendered = true; sticky(); } /** * render loading bar * @return {[type]} [description] */ function renderLoading (ref) { var loaded = ref.loaded; var total = ref.total; var step = ref.step; var num; if (!CACHE.loading) { var div = document.createElement('div'); div.classList.add('progress'); document.body.appendChild(div); CACHE.loading = div; } if (step) { num = parseInt(CACHE.loading.style.width, 10) + step; num = num > 80 ? 80 : num; } else { num = Math.floor(loaded / total * 100); } CACHE.loading.style.opacity = 1; CACHE.loading.style.width = num >= 95 ? '100%' : num + '%'; if (num >= 95) { clearTimeout(renderLoading.cacheTimeout); renderLoading.cacheTimeout = setTimeout(function (_) { CACHE.loading.style.opacity = 0; CACHE.loading.style.width = '0%'; }, 200); } } var Hook = function Hook () { this.beforeHooks = []; this.afterHooks = []; this.initHooks = []; this.readyHooks = []; }; Hook.prototype.beforeEach = function beforeEach (fn) { this.beforeHooks.push(fn); }; Hook.prototype.afterEach = function afterEach (fn) { this.afterHooks.push(fn); }; Hook.prototype.init = function init (fn) { this.initHooks.push(fn); }; Hook.prototype.ready = function ready (fn) { this.readyHooks.push(fn); }; Hook.prototype.emit = function emit (name, data, next) { var newData = data; var queue = this[name + 'Hooks']; var step = function (index) { var hook = queue[index]; if (index >= queue.length) { next && next(newData); } else { if (typeof hook === 'function') { if (hook.length === 2) { hook(data, function (result) { newData = result; step(index + 1); }); } else { var result = hook(data); newData = result !== undefined ? result : newData; step(index + 1); } } else { step(index + 1); } } }; step(0); }; var OPTIONS = merge({ el: '#app', repo: '', maxLevel: 6, subMaxLevel: 0, loadSidebar: null, loadNavbar: null, homepage: 'README.md', coverpage: '', basePath: '', auto2top: false, name: '', themeColor: '', nameLink: window.location.pathname, ga: '' }, window.$docsify); var script = document.currentScript || [].slice.call(document.getElementsByTagName('script')).pop(); // load configuration for script attribute if (script) { for (var prop in OPTIONS) { var val = script.getAttribute('data-' + camel2kebab(prop)); OPTIONS[prop] = isNil(val) ? OPTIONS[prop] : (val || true); } if (OPTIONS.loadSidebar === true) { OPTIONS.loadSidebar = '_sidebar.md'; } if (OPTIONS.loadNavbar === true) { OPTIONS.loadNavbar = '_navbar.md'; } if (OPTIONS.coverpage === true) { OPTIONS.coverpage = '_coverpage.md'; } if (OPTIONS.repo === true) { OPTIONS.repo = ''; } if (OPTIONS.name === true) { OPTIONS.name = ''; } } var hook = new Hook(); // utils window.$docsify = OPTIONS; window.Docsify = { installed: true, utils: merge({}, utils), hook: hook }; // load options init(); var cacheRoute = null; var cacheXhr = null; var getAlias = function (route) { if (OPTIONS.alias[route]) { return getAlias(OPTIONS.alias[route]) } else { return route } }; var mainRender = function (cb) { var page; var route = getRoute(); if (cacheRoute === route) { return cb() } var basePath = cacheRoute = OPTIONS.basePath + route; if (!/\//.test(basePath)) { basePath = ''; } else if (basePath && !/\/$/.test(basePath)) { basePath = basePath.match(/(\S*\/)[^\/]+$/)[1]; } // replace route route = '/' + route; if (OPTIONS.alias && OPTIONS.alias[route]) { route = getAlias(route); } else { route = (OPTIONS.basePath + route).replace(/\/+/, '/'); } if (!route) { page = OPTIONS.homepage || 'README.md'; } else if (/\.md$/.test(route)) { page = route; } else if (/\/$/.test(route)) { page = route + "README.md"; } else { page = route + ".md"; } // Render Cover page if (OPTIONS.coverpage && page === OPTIONS.homepage) { load(OPTIONS.coverpage).then(renderCover); } cacheXhr && cacheXhr.abort && cacheXhr.abort(); // Render markdown file cacheXhr = load(page, 'GET', renderLoading); cacheXhr.then(function (result) { renderArticle(result); // clear cover if (OPTIONS.coverpage && page !== OPTIONS.homepage) { renderCover(); } // render sidebar if (OPTIONS.loadSidebar) { var renderSidebar$$1 = function (result) { renderSidebar(result); cb(); }; load(basePath + OPTIONS.loadSidebar).then(renderSidebar$$1, function (_) { return load(OPTIONS.loadSidebar).then(renderSidebar$$1); }); } else { cb(); } }, function (_) { return renderArticle(null); }); // Render navbar if (OPTIONS.loadNavbar) { load(basePath + OPTIONS.loadNavbar).then(renderNavbar, function (_) { return load(OPTIONS.loadNavbar).then(renderNavbar); }); } }; var Docsify = function () { setTimeout(function (_) { [].concat(OPTIONS.plugins).forEach(function (fn) { return typeof fn === 'function' && fn(hook); }); window.Docsify.hook.emit('init'); var dom = document.querySelector(OPTIONS.el) || document.body; var replace = dom !== document.body; var main = function () { mainRender(function (_) { scrollIntoView(); activeLink('nav'); }); }; // Render app renderApp(dom, replace); main(); if (!/^#\//.test(window.location.hash)) { window.location.hash = '#/'; } window.addEventListener('hashchange', main); window.Docsify.hook.emit('ready'); }, 0); }; var index = Docsify(); return index; }());