easy-api.ts
Version:
A powerful library to create your own API with ease.
1 lines • 1.79 kB
JavaScript
function isLetter(e){return/[a-zA-Z]/.test(e)}function isSkippable(e){return[" ","\n"].includes(e)}function isEnd(e){return["]"].includes(e)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.ReaderV2=exports.ReaderV1=exports.ReaderType=void 0;class ReaderType{static FunctionName="FUNCTION_NAME";static FunctionParams="FUNCTION_PARAMETERS";static Text="TEXT"}exports.ReaderType=ReaderType;class ReaderV1{static read(e,t=!0){let a=ReaderType.Text,r=0,n=!1,p=[],s=[...e.split("\n").map(e=>t?e.trim():e).join("\n")];for(let e=0;e<s.length;e++){var i=s[e];if("["===i?r++:"]"===i&&r--,"$"===i&&a===ReaderType.Text&&":"!==s.at(e+1))a=ReaderType.FunctionName;else if("$"===i||a!==ReaderType.FunctionName||/[a-zA-Z]/.test(""+s.at(e))||":"===i)if(":"===i&&/[a-zA-Z]/.test(""+s.at(e+1))&&a===ReaderType.FunctionName)a=ReaderType.Text;else if(":"!==i||/[a-zA-Z]/.test(""+s.at(e+1))||a!==ReaderType.FunctionName||!1!==n){if("]"===i&&a===ReaderType.FunctionParams&&0===r){p.push({type:a,value:i}),a=ReaderType.Text,n=!1;continue}" "!==i&&"\n"!==i||!/[a-zA-Z]/.test(""+s[e+1])||0!==r||(a=ReaderType.Text)}else n=!0,a=ReaderType.FunctionParams;else a=ReaderType.Text;p.push({type:a,value:i})}return p}}exports.ReaderV1=ReaderV1;class ReaderV2{static read(t,e=!0){let a=ReaderType.Text,r=0,n=[];e&&(t=t.split("\n").map(e=>e.trim()).join("\n"));for(let e=0;e<t.length;e++){var p=t[e],s=t[e+1];"["===p?r++:"]"===p&&r--,a===ReaderType.Text?("$"===p&&isLetter(s)&&(a=ReaderType.FunctionName),n.push({type:a,value:p})):a===ReaderType.FunctionName?("["===p?a=ReaderType.FunctionParams:isLetter(p)||(a=ReaderType.Text),n.push({type:a,value:p})):a===ReaderType.FunctionParams&&("]"===p&&0===r?(n.push({type:a,value:p}),a=ReaderType.Text):n.push({type:a,value:p}))}return n}}exports.ReaderV2=ReaderV2;