@filbert-js/css-ast
Version:
> CSS to AST transformer for filbert-js.
2 lines (1 loc) • 1.26 kB
JavaScript
var r=";",t=":",e="{",n="}";function a(r){var t=r.children;void 0===t&&(t=[]);var e=r.rules;void 0===e&&(e=[]);var n=r.start;void 0===n&&(n=-1);var a=r.end;void 0===a&&(a=-1);var i=r.raw,s=r.parent;this.children=t,this.rules=e,this.start=n,this.end=a,this.raw=i,this.raw_selector=void 0,this.parent=s}var i=/(url\(|"|').*?(\)|"|')/g;function s(r){for(var t=new a({start:0,end:r.length-1,raw:r}),i=t,s=0;s<r.length;s++){if(r[s]===e){var l=new a({start:s,parent:i});i.children.push(l),i=l}if(r[s]===n){var u=i;u.end=s,u.raw=r.substring(u.start+1,u.end),i=u.parent,v(u,r)}}return v(i,r),t}function v(e,n){var a,s,v="$_"+Date.now(),l=e.raw;e.children.forEach(function(t,e){var a=n.substring(t.start,t.end+1);l=l.replace(a,""+v+e+r)}),a=function(r){for(var t,e={},n=0;null!==(t=i.exec(r));){var a="_"+ ++n+"_",s=t[0];r=r.replace(s,a),e[a]=s.toString()}return[r,e]}(l),s=a[1];var u=(l=a[0]).split(r).reduce(function(n,a){if(!a.trim())return n;if(-1===a.indexOf(v)){var i=a.split(t),u=i[0],o=i[1];u=u.trim(),o=o.trim(),n.push({name:u.trim(),value:void 0!==s[o]?s[o]:o})}else{var c=a.split(v);e.children[c[1]].raw_selector=c[0].trim(),l=l.replace(""+a+r,"")}return n},[]);e.rules=u}export{n as CLOSE_BRACKET,e as OPEN_BRACKET,r as RULE_END,t as RULE_SEPARATOR,s as toAST};