var stripReqTags = function()

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