var fillGaps = function()

in src/parser/WDL/hermes/wdl_parser.js [384:415]


  var fillGaps = function(braces, text) {
    var pre = /^\((\?.)?/.exec(text);
    pre = pre == null ? '' : pre[0];
    var post = /\)$/.exec(text);
    post = post == null ? '' : post[0];
    var i = 0;
    if (braces.length > 0) {
      fillGaps(braces[0].children, braces[0].text);
    }
    if (braces.length > 0 && braces[0].pos > pre.length) {
      braces.splice(0, 0, {type: 'raw', pos: pre.length, length: braces[0].pos, text: text.substring(pre.length, braces[0].pos)});
      i++;
    }
    for(i++ ;i < braces.length; i++) {
      fillGaps(braces[i].children, braces[i].text);
      if (braces[i].pos > braces[i-1].pos + braces[i-1].length) {
        braces.splice(i, 0, {type:'raw', pos: braces[i-1].pos + braces[i-1].length,
          length: braces[i].pos - (braces[i-1].pos + braces[i-1].length),
          text: text.substring(braces[i-1].pos + braces[i-1].length,
            braces[i].pos)});
        i++;
      }
    }
    if (braces.length == 0)
    {
      braces.push({type:'raw', pos: pre.length, length: text.length - post.length - pre.length, text: text.substring(pre.length, text.length - post.length)});
    } else if (braces[braces.length - 1].pos + braces[braces.length - 1].length < text.length - post.length) {
      var pos = braces[braces.length - 1].pos + braces[braces.length - 1].length;
      var txt = text.substring(pos, text.length - post.length);
      braces.push({type:'raw', pos: pos, length: txt.length, text: txt});
    }
  }