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});
}
}