Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var myString = "testFunction( initTask(arg1, arg2) + middlewareTask(arg3) + testEnv(arg6) )";
- var Parser = (function(str) {
- var moreBrackets = function(part) {
- if (part.indexOf('(') != -1) {
- return true;
- } else {
- return false;
- }
- }
- var moreHard = function(part) {
- if (part.indexOf('+') != -1) {
- return true;
- } else {
- return false;
- }
- }
- var ArgsCheck = function(subpart) {
- if (subpart.indexOf(',') != -1) {
- return subpart
- .split(',')
- .map(function(rawArg){
- return rawArg.trim();
- });
- } else {
- return subpart.trim();
- }
- }
- var nextCheck = function(part) {
- var workingSubParts = [];
- if (moreHard(part)) {
- workingSubParts = part
- .split('+')
- .map(function(item){ return item.trim(); });
- } else {
- if (moreBrackets(part)) {
- workingSubParts = [part];
- } else {
- workingSubParts = part;
- }
- }
- if (typeof(workingSubParts) == typeof([])) {
- return workingSubParts.map(function(parted){
- return common(parted);
- });
- } else {
- return ArgsCheck(workingSubParts);
- }
- }
- var common = function(part) {
- var tmpLevel = 0;
- var inBrackets = 0;
- var key = "";
- var value = "";
- for (var i = 0; i < part.length; i++) {
- let char = part[i];
- if ( (char != '(') && (char != ')') ) {
- if (!inBrackets) {
- key = key + char;
- } else {
- value = value + char;
- }
- } else {
- if ( (!inBrackets) && (tmpLevel == 0) ) {
- // dats first `(`
- inBrackets = 1;
- tmpLevel = 1;
- } else {
- if (char == '(')
- tmpLevel += 1;
- else {
- tmpLevel -= 1;
- if (tmpLevel == 0)
- break;
- }
- value = value + char;
- }
- }
- }
- return [key.trim(), nextCheck(value.trim())];
- }
- return common(str);
- })(myString);
- console.log(myString);
- console.dir(Parser);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement