in srs_extension/extension.js [196:266]
var stripReqTags = function () {
var text = loadText();
if (text) {
var editor = vscode.window.activeTextEditor;
var document = editor.document;
// Matches SRS requirements
var regexStartRequirements = /\*\*[A-Z0-9_: \[\]]*\*\* ?/g;
var regexEndRequirements = / ?\*\*\]\*\* ?/g;
var rangesWithReqTags = new Array();
var positionIterator = editor.selection.start;
var stopLine = editor.selection.end.line;
while (positionIterator.line <= stopLine) {
var line = document.lineAt(positionIterator);
// Attempt to remove requirement from each line
if (!line.isEmptyOrWhitespace) {
var lineStart = positionIterator;
var startMatches = line.text.match(regexStartRequirements);
if (startMatches != null) {
startMatches.forEach(function (value, index, array){
var start = line.text.indexOf(value);
var end = start + value.length;
rangesWithReqTags.push(new vscode.Range(lineStart.translate(0, start), lineStart.translate(0, end)));
});
}
var endMatches = line.text.match(regexEndRequirements);
if (endMatches != null) {
endMatches.forEach(function (value, index, array){
var start = line.text.indexOf(value);
var end = start + value.length;
rangesWithReqTags.push(new vscode.Range(lineStart.translate(0, start), lineStart.translate(0, end)));
});
}
}
positionIterator = positionIterator.with(positionIterator.line + 1, 0);
}
var task = null;
if (rangesWithReqTags.length != 0) {
rangesWithReqTags.reverse().forEach(function (value, index, array){
var doRemove = function (e) {
// remove the tags
e.delete(value);
};
if (task == null) {
task = editor.edit(doRemove);
} else {
task = task.then(function(status) {
if (status) {
return editor.edit(doRemove);
}
return status;
});
}
});
}
if (task == null) {
return editor.edit(function (e) {}).then(function(status) { return status; });
} else {
return task.then(function(status) { return status; });
}
} else {
return editor.edit(function (e) {}).then(function(status) { return status; });
}
};