UNPKG

cbml

Version:
1 lines 5.83 kB
!function(e,t){if("object"==typeof module&&"object"==typeof module.exports){var n=t(require,exports);void 0!==n&&(module.exports=n)}else"function"==typeof define&&define.amd?define(["require","exports"],t):t(null,e.cbml={})}(this,function(e,t){"use strict";function n(e){return e.replace(/&((quot|lt|gt|amp|nbsp)|#x([a-f\d]+)|#(\d+));/gi,function(e,t,n,o,r){return n?s[n.toLowerCase()]:o?String.fromCharCode(parseInt(o,16)):String.fromCharCode(r)})}function o(e,t){var n=e.slice(0,t).split("\n");return{line:n.length,column:n[n.length-1].length+1}}function r(e,t,n,r){return{source:r?e.slice(t,n):null,start:o(e,t),end:o(e,n)}}function l(e){var t;return Object.keys(u).some(function(n){if(u[n].pattern.indexOf(e)>=0)return t=n,!0}),t}function c(e,t,c){function a(n){t.loc?n.loc=r(e,i,s,t.source):n.loc=null,n.range=[i,s],c(n),i=s}for(var i=0,s=0;i<e.length&&"break"!==function(){var t=e.slice(i).match(/(<!--|\/\*<|\(\*<|'''<|--\[\[<)(\/?)([\w_]+[\w_-]*[\w_]|[\w_]+)\s*|(<\/)([\w_]+[\w_-]*[\w_]|[\w_]+)(>\*\/|>\*\)|>'''|>\]\]|-->)/);if((s=t?i+t.index:e.length)>i&&a({type:"TextNode",content:e.slice(i,s),loc:null}),!t)return"break";var r=t[3];if(s+=t[0].length,!r)return r=t[5],a({type:"RightCommentTokenizer",attributes:null,tag:r,language:l(t[6])}),"continue";var c=l(t[1]);if("/"===t[2]){var g=u[c].closed;if(!(t=e.slice(s).match(g)))throw"Uncaught SyntaxError: Can't match "+g+". (line: "+(m=o(e,s)).line+", col: "+m.column+")";return s+=t[0].length,a({type:"RightBlockTokenizer",attributes:null,tag:r,language:c}),"continue"}for(var d={};t=e.slice(s).match(/^\s*([\w_]+[\w_-]*[\w_]|[\w_]+)\s*/);){s+=t[0].length;var f=t[1],p={value:"",quoted:""},h="";switch((t=e.slice(s).match(/^\s*=\s*('([^']*)'|"([^"]*)"|([^'"\s\/>]+))\s*/))&&(s+=t[0].length,h=t[1]),h[0]){case'"':case"'":p.quoted=h[0],h=h.slice(1,-1)}p.value=n(h),void 0===d[f]&&(d[f]=p)}var y=u[c].closed2;if(!(t=e.slice(s).match(y))){if("xml"===c)return(t=e.slice(s).match(/^[^]*?-->/))?s+=t[0].length:s=e.length,a({type:"TextNode",content:e.slice(i,s),loc:null}),"continue";if("c"===c&&Object.keys(d).some(function(e){var t=d[e];return""===t.quoted&&/^\s*\{/.test(t.value)}))return(t=e.slice(s).match(/^[^]*?>\*\//))?s+=t[0].length:s=e.length,a({type:"TextNode",content:e.slice(i,s),loc:null}),"continue";var m=o(e,s);throw"Uncaught SyntaxError: Can't match "+y+". (line: "+m.line+", col: "+m.column+")"}s+=t[0].length;a(">"===t[1]?{type:"LeftCommentTokenizer",attributes:d,tag:r,language:c,body:[]}:"/"===t[1][0]?{type:"VoidElement",attributes:d,tag:r,language:c}:{type:"LeftBlockTokenizer",attributes:d,tag:r,language:c,body:[]})}(););}function a(e,t){if(t&&t.body)for(var n=t.body.length-1;n>=0;n--){var o=t.body[n];if(a(e,o),["LeftBlockTokenizer","LeftCommentTokenizer"].indexOf(o.type)>=0){var r=o,l={type:"TextNode",loc:o.loc,content:e.slice(r.range[0],r.range[1]),range:r.range};o=t.body[n]=l;var c=r.body[0];if(c){r.body[r.body.length-1];o.loc&&(o.loc.end={line:c.loc.start.line,column:c.loc.start.column});var i=[n+1,0];i.push.apply(i,r.body),i.splice.apply(t.body,i)}}var s=t.body[n+1];if(s&&"TextNode"===o.type&&"TextNode"===s.type){var u=o;s.range[0]=u.range[0],s.loc&&(s.loc.start={line:o.loc.start.line,column:o.loc.start.column},s.loc.source&&(s.loc.source=e.slice(s.range[0],s.range[1]))),s.content=e.slice(s.range[0],s.range[1]),t.body.splice(n,1)}}}function i(e){delete e.range,e.body&&e.body.forEach(function(e){i(e)})}Object.defineProperty(t,"__esModule",{value:!0});var s={quot:'"',lt:"<",gt:">",amp:"&",nbsp:" "},u={xml:{pattern:["\x3c!--","--\x3e"],closed:/^\s*(\/?-->)/,closed2:/^\s*(\/?-->|>)/},c:{pattern:["/*<",">*/"],closed:/^\s*(\/?>\*\/)/,closed2:/^\s*(\/?>\*\/|>)/},pascal:{pattern:["(*<",">*)"],closed:/^\s*(\/?>\*\))/,closed2:/^\s*(\/?>\*\)|>)/},python:{pattern:["'''<",">'''"],closed:/^\s*(\/?>''')/,closed2:/^\s*(\/?>'''|>)/},lua:{pattern:["--[[<",">]]"],closed:/^\s*(\/?>\]\])/,closed2:/^\s*(\/?>\]\]|>)/}};t.parse=function(e,t){if(null===e||void 0===e)return null;(t=t||{}).loc=void 0===t.loc||t.loc,t.source=void 0===t.source||t.source,t.range=void 0!==t.range&&t.range,e=String(e);var n={language:"cbml",tag:"#cbml",attributes:{},type:"CBMLElement",body:[],loc:t.loc?r(e,0,e.length,t.source):null,range:[0,e.length]};if(!e)return n;var o=[],l=n;return c(e,t,function(t){switch(t.type){case"VoidElement":case"TextNode":l.body.push(t),l.range[1]=t.range[1];break;case"LeftBlockTokenizer":case"LeftCommentTokenizer":l.body.push(t);var r=t;o.push(r),l=r;break;case"RightBlockTokenizer":case"RightCommentTokenizer":for(var c=t,a=o.length-1;;a--){var i=o[a],s=o[a-1];if(!i)throw"No start tag. ("+c.tag+")";if(i.tag==c.tag&&i.language==c.language&&i.type.slice("Left".length)===t.type.slice("Right".length)){"RightBlockTokenizer"===t.type?i.type="BlockElement":i.type="CommentElement",i.range[1]=c.range[1],i.loc&&(i.loc.end={line:c.loc.end.line,column:c.loc.end.column},i.loc.source&&(i.loc.source=e.slice(i.range[0],i.range[1]))),l=s||n,o=o.slice(0,a);break}if(s){var u=i;o[a]={type:"TextNode",content:e.slice(u.range[0],u.range[1]),loc:u.loc,range:u.range}}}}}),a(e,n),t.range||i(n),n},t.querySelector=function(e,t){function n(e){var t=!1;return e?(l&&e.tag!==l||(t=Object.keys(a).every(function(t){return!!e.attributes[t]&&(!a[t]&&""!==a[t]||e.attributes[t].value===a[t])})),t):t}function o(e){if(n(e))return i.push(e),!0;var t=e;t.body&&t.body.some(function(e){return o(e)&&!c})}if(!e||!t)return null;var r=t.match(/^\s*([\w_-]*)((\s*\[[\w_-]+\s*(=\s*("([^\\"]*(\\.)*)*"|'([^\\']*(\\.)*)*'|[^\[\]]*))?\])*)\s*(\*?)$/);if(!r)throw JSON.stringify(t)+" is not a valid selector.";var l=r[1],c="*"===r[10],a={};r[2].replace(/\s*\[([\w_-]+)\s*(=\s*("([^\\"]*(\\.)*)*"|'([^\\']*(\\.)*)*'|[^\[\]]*))?\]/g,function(e,t,n,o){return/^['"]/.test(o)&&(o=new Function("return ("+o+");")()),a[t]=o,""});var i=[];return o(e),c?i:i[0]||null}});