UNPKG

projen

Version:

CDK for software projects

1 lines 2.64 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"parseDocument",{enumerable:!0,get:function(){return parseDocument}});var _characters=require("../characters.js"),_index=require("../unescape/index.js"),isWhitespace=function(e){return e===_characters.CH_SPACE||e===_characters.CH_TAB||e===_characters.CH_FF},countTrailingBackslashes=function(e,r){for(var a=0,c=r-1;c>=0&&e.charCodeAt(c)===_characters.CH_BACKSLASH;)a++,c--;return a},parseDocument=function(e){var r="string"==typeof e?e:e.toString(),a=r.length,c=0,t=a>0&&r.charCodeAt(0)===_characters.CH_BOM;t&&(c=1);for(var s="\n",i=c;i<a;i++){var n=r.charCodeAt(i);if(n===_characters.CH_CR){s=i+1<a&&r.charCodeAt(i+1)===_characters.CH_LF?"\r\n":"\r";break}if(n===_characters.CH_LF){s="\n";break}}for(var h=(c>0?r.slice(c):r).split(/\r\n|\r|\n/),o=[],l=0,_=h.length;l<_;){for(var C=h[l],p=l+1,u=0,d=C.length;u<d&&isWhitespace(C.charCodeAt(u));)u++;if(u>=d){var v={type:"blank",rawLine:C,lineNumber:p};o.push(v),l++}else{var f=C.charCodeAt(u);if(f!==_characters.CH_HASH&&f!==_characters.CH_BANG){for(var A=[C],H=p,g=u>0?C.slice(0,u):"",L=countTrailingBackslashes(C,d),b=L%2==1;b&&l+1<_;){var m=h[++l];A.push(m);var S=m.length;b=(L=countTrailingBackslashes(m,S))%2==1}var y=l+1,B=b,O=void 0;if(1===A.length){var k=u>0?C.slice(u):C;O=B?k.slice(0,-1):k}else{for(var x=[],W=0;W<A.length;W++){var N=A[W],j=void 0,T=void 0;if(0===W)j=u,T=N.length-1;else{j=0;for(var E=N.length;j<E&&isWhitespace(N.charCodeAt(j));)j++;T=W===A.length-1&&!B?E:E-1}x.push(N.slice(j,T))}O=x.join("")}for(var F=O.length,w=0,D=!1;w<F;){var K=O.charCodeAt(w);if(K!==_characters.CH_BACKSLASH){if(!D&&(K===_characters.CH_EQUALS||K===_characters.CH_COLON||isWhitespace(K)))break;D=!1,w++}else D=!D,w++}var P=O.slice(0,w),Q="",U=void 0,q="",M=w;if(M<F){for(var G=M;M<F&&isWhitespace(O.charCodeAt(M));)M++;if(M<F){var R=O.charCodeAt(M);if(R===_characters.CH_EQUALS||R===_characters.CH_COLON){Q=O.slice(G,M),U=R===_characters.CH_EQUALS?"=":":";for(var V=++M;M<F&&isWhitespace(O.charCodeAt(M));)M++;q=O.slice(V,M)}else Q=O.slice(G,M)}else Q=O.slice(G,M)}var z=O.slice(M),I={type:"property",rawLines:A,leadingWhitespace:g,key:-1!==P.indexOf("\\")?(0,_index.unescapeContent)(P):P,escapedKey:P,separatorLeading:Q,separatorChar:U,separatorTrailing:q,value:-1!==z.indexOf("\\")?(0,_index.unescapeContent)(z):z,escapedValue:z,startingLineNumber:H,endingLineNumber:y};o.push(I),l++}else{var J={type:"comment",rawLine:C,leadingWhitespace:u>0?C.slice(0,u):"",delimiter:f===_characters.CH_HASH?"#":"!",body:C.slice(u+1),lineNumber:p};o.push(J),l++}}}return{hasBom:t,eolCharacter:s,nodes:o}};