jweinst1
8/31/2017 - 5:08 AM

javascript parser for curly braces

javascript parser for curly braces

//parse out one layer of parenthesis

//counts and balances amounts of parenthesis

function carveParen(string)
{
  //state of parser
  var mode = 0;
  var newStr = [];
  //parenthesis counters
  var left = 0;
  var right = 0;
  for(var i=0;i<string.length;i++)
  {
    switch(mode)
    {
      case 0:
        if(string[i] == '{')
        {
          mode = 1;
        }
        break;
      case 1:
        if(left == right)
        {
          if(string[i] == '}')
          {
            //finds the end of parenthis and joins inner string
            return newStr.join("");
          }
          else if(string[i] == '{')
          {
            newStr.push(string[i]);
            left++;
          }
          else newStr.push(string[i]);
        }
        else 
        {
          if(left != right && i == string.length-1) { console.log("Error: unclosed parenthesis"); return null; }
          if(string[i] == '{') left++;
          if(string[i] == '}') right++;
          newStr.push(string[i]);
        }
        break;
    }
  }
}