docsify
Version:
A magical documentation generator.
9 lines (8 loc) • 5.3 kB
JavaScript
/*!
* Docsify Plugin: front-matter v5.0.0
* https://docsify.js.org
* (c) 2017-2026
* MIT license
*/
!function(){"use strict";var e=[],n=[],t=0,r={regLevel:new RegExp("^([\\s\\-]+)"),invalidLine:new RegExp("^\\-\\-\\-|^\\.\\.\\.|^\\s*#.*|^\\s*$"),dashesString:new RegExp('^\\s*\\"([^\\"]*)\\"\\s*$'),quotesString:new RegExp("^\\s*\\'([^\\']*)\\'\\s*$"),float:new RegExp("^[+-]?[0-9]+\\.[0-9]+(e[+-]?[0-9]+(\\.[0-9]+)?)?$"),integer:new RegExp("^[+-]?[0-9]+$"),array:new RegExp("\\[\\s*(.*)\\s*\\]"),map:new RegExp("\\{\\s*(.*)\\s*\\}"),key_value:new RegExp("([a-z0-9_-][ a-z0-9_-]*):( .+)","i"),single_key_value:new RegExp("^([a-z0-9_-][ a-z0-9_-]*):( .+?)$","i"),key:new RegExp("([a-z0-9_-][ a-z0-9_-]+):( .+)?","i"),item:new RegExp("^-\\s+"),trim:new RegExp("^\\s+|\\s+$"),comment:new RegExp("([^\\'\\\"#]+([\\'\\\"][^\\'\\\"]*[\\'\\\"])*)*(#.*)?")};function i(e){return{parent:null,length:0,level:e,lines:[],children:[],addChild:function(e){this.children.push(e),e.parent=this,++this.length}}}function l(e){var n=null;if("true"==(e=e.replace(r.trim,"")))return!0;if("false"==e)return!1;if(".NaN"==e)return Number.NaN;if("null"==e)return null;if(".inf"==e)return Number.POSITIVE_INFINITY;if("-.inf"==e)return Number.NEGATIVE_INFINITY;if(n=e.match(r.dashesString))return n[1];if(n=e.match(r.quotesString))return n[1];if(n=e.match(r.float))return parseFloat(n[0]);if(n=e.match(r.integer))return parseInt(n[0]);if(isNaN(n=Date.parse(e))){if(n=e.match(r.single_key_value))return(u={})[n[1]]=l(n[2]),u;if(n=e.match(r.array)){for(var t=0,i=" ",u=[],s="",a=!1,f=0,o=n[1].length;f<o;++f){if("'"==(i=n[1][f])||'"'==i){if(!1===a){a=i,s+=i;continue}if("'"==i&&"'"==a||'"'==i&&'"'==a){a=!1,s+=i;continue}}else if(!1!==a||"["!=i&&"{"!=i)if(!1!==a||"]"!=i&&"}"!=i){if(!1===a&&0==t&&","==i){u.push(l(s)),s="";continue}}else--t;else++t;s+=i}return s.length>0&&u.push(l(s)),u}if(n=e.match(r.map)){for(t=0,i=" ",u=[],s="",a=!1,f=0,o=n[1].length;f<o;++f){if("'"==(i=n[1][f])||'"'==i){if(!1===a){a=i,s+=i;continue}if("'"==i&&"'"==a||'"'==i&&'"'==a){a=!1,s+=i;continue}}else if(!1!==a||"["!=i&&"{"!=i)if(!1!==a||"]"!=i&&"}"!=i){if(!1===a&&0==t&&","==i){u.push(s),s="";continue}}else--t;else++t;s+=i}s.length>0&&u.push(s);var h={};for(f=0,o=u.length;f<o;++f)(n=u[f].match(r.key_value))&&(h[n[1]]=l(n[2]));return h}return e}return new Date(n)}function u(e){for(var n=e.lines,t=e.children,r=[n.join(" ")],i=0,l=t.length;i<l;++i)r.push(u(t[i]));return r.join("\n")}function s(e){for(var n=e.lines,t=e.children,r=n.join("\n"),i=0,l=t.length;i<l;++i)r+=s(t[i]);return r}function a(t){for(var i=null,f={},o=null,h=null,c=null,p=-1,g=[],d=!0,v=0,m=t.length;v<m;++v)if(-1==p||p==t[v].level){g.push(v),p=t[v].level,o=t[v].lines,h=t[v].children,c=null;for(var w=0,E=o.length;w<E;++w){var y=o[w];if(i=y.match(r.key)){var b=i[1];if("-"==b[0]&&(b=b.replace(r.item,""),d&&(d=!1,void 0===f.length&&(f=[])),null!=c&&f.push(c),c={},d=!0),void 0!==i[2]){var x=i[2].replace(r.trim,"");if("&"==x[0]){var R=a(h);null!=c?c[b]=R:f[b]=R,n[x.substr(1)]=R}else if("|"==x[0])null!=c?c[b]=s(h.shift()):f[b]=s(h.shift());else if("*"==x[0]){var $=x.substr(1),N={};if(void 0===n[$])e.push("Reference '"+$+"' not found!");else{for(var _ in n[$])N[_]=n[$][_];null!=c?c[b]=N:f[b]=N}}else">"==x[0]?null!=c?c[b]=u(h.shift()):f[b]=u(h.shift()):null!=c?c[b]=l(x):f[b]=l(x)}else null!=c?c[b]=a(h):f[b]=a(h)}else{if(y.match(/^-\s*$/)){d&&(d=!1,void 0===f.length&&(f=[])),null!=c&&f.push(c),c={},d=!0;continue}if(i=y.match(/^-\s*(.*)/)){null!=c?c.push(l(i[1])):(d&&(d=!1,void 0===f.length&&(f=[])),f.push(l(i[1])));continue}}}null!=c&&(d&&(d=!1,void 0===f.length&&(f=[])),f.push(c))}for(v=g.length-1;v>=0;--v)t.splice.call(t,g[v],1);return f}function f(e){return a(e.children)}function o(l){e=[],n=[],t=(new Date).getTime();var u=function(n){var t,l=r.regLevel,u=r.invalidLine,s=n.split("\n"),a=0,f=0,o=[],h=new i(-1),c=new i(0);h.addChild(c);var p=[],g="";o.push(c),p.push(a);for(var d=0,v=s.length;d<v;++d)if(!(g=s[d]).match(u)){if((a=(t=l.exec(g))?t[1].length:0)>f){var m=c;c=new i(a),m.addChild(c),o.push(c),p.push(a)}else if(a<f){for(var w=!1,E=p.length-1;E>=0;--E)if(p[E]==a){c=new i(a),o.push(c),p.push(a),null!=o[E].parent&&o[E].parent.addChild(c),w=!0;break}if(!w)return void e.push("Error: Invalid indentation at line "+d+": "+g)}c.lines.push(g.replace(r.trim,"")),f=a}return h}(function(e){var n,t=e.split("\n"),i=r.comment;for(var l in t)(n=t[l].match(i))&&void 0!==n[3]&&(t[l]=n[0].substr(0,n[0].length-n[3].length));return t.join("\n")}(l)),s=f(u);return t=(new Date).getTime()-t,s}const h=new RegExp("^(\\ufeff?(= yaml =|---)$([\\s\\S]*?)(?:\\2|\\.\\.\\.)$(?:\\n)?)","m");function c(e){const n=(e=e||"").split(/(\r?\n)/);return n[0]&&/= yaml =|---/.test(n[0])?function(e){const n=h.exec(e);if(!n)return{attributes:{},body:e};const t=n[n.length-1].replace(/^\s+|\s+$/g,""),r=o(t)||{},i=e.replace(n[0],"");return{attributes:r,body:i,frontmatter:t}}(e):{attributes:{},body:e}}window.$docsify=window.$docsify||{},window.$docsify.plugins=[function(e,n){n.config.frontMatter={},n.config.frontMatter.installed=!0,n.config.frontMatter.parseMarkdown=function(e){const{body:n}=c(e);return n},e.beforeEach((e=>{const{attributes:t,body:r}=c(e);return n.frontmatter=t,r}))},...window.$docsify?.plugins||[]]}();
//# sourceMappingURL=front-matter.min.js.map