import Foundation
let pattern = #"\/\*[\s\S]*?\*\/"#
let regex = try! NSRegularExpression(pattern: pattern)
let testString = #"""
var ExecutionScript = (function () {
function ExecutionScript() {
}
ExecutionScript.prototype.RemoveSchemes = function (e) {
var _this = this;
debugger;
return new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
var selectedRole, currentSchemes, schemesToRemove, tempSchemes, filteredSchemes, _loop_1, newSchemes, _i, schemesToRemove_1, selectedScheme, _a, _b, scheme_1, newSchemes, _c, newSchemes_1, s;
return __generator(this, function (_d) {
switch (_d.label) {
case 0://test
selectedRole = e.data.Role_Variable.currentItem.Role.currentItem;
currentSchemes = selectedRole.Scheme.value;
schemesToRemove = e.plugins.Schemes_From_Data_Grid.SelectedItems;
tempSchemes = e.data.Temp_Role_Variable.currentItem.Scheme;
_loop_1 = function (selectedScheme) {
var _i, filteredSchemes_1, scheme, _a, newSchemes_2, s;
return __generator(this, function (_b) {
switch (_b.label) {
case 0:
filteredSchemes = currentSchemes.filter(function (scheme) { return scheme.ID !== selectedScheme.ID; });
_i = 0, filteredSchemes_1 = filteredSchemes;
_b.label = 1;/*
* testing multline comment
*/case 1:
if (!(_i < filteredSchemes_1.length)) return [3 /*break*/, 4];
scheme = filteredSchemes_1[_i];/*
* testing multline comment
*/
return [4 /*yield*/, tempSchemes.create(1, false, e.data.Temp_Role_Variable.currentItem)];
case 2:
/*
* testing multline comment
*/
newSchemes = _b.sent();
for (_a = 0, newSchemes_2 = newSchemes; _a < newSchemes_2.length; _a++) {
s = newSchemes_2[_a];
s.Active = scheme.Active;
s.Description = scheme.Description;
s.DisplayName = scheme.DisplayName;
s.Name = scheme.Name;
s.Role = scheme.Role;
s.SchemeId = scheme.SchemeId;
}
debugger;
tempSchemes.addItems(newSchemes);
_b.label = 3;
case 3://
_i++;
return [3 /*break*/, 1];
case 4: return [2 /*return*/];
}
});
};//
_i = 0, schemesToRemove_1 = schemesToRemove;
_d.label = 1;
case 1:
if (!(_i < schemesToRemove_1.length)) return [3 /*break*/, 4];
selectedScheme = schemesToRemove_1[_i];
return [5 /*yield**/, _loop_1(selectedScheme)];
case 2:
_d.sent();
_d.label = 3;
case 3:
_i++;
return [3 /*break*/, 1];
case 4:
// }
selectedRole.Scheme.clear();
_a = 0, _b = tempSchemes.value;
_d.label = 5;
case 5:
if (!(_a < _b.length)) return [3 /*break*/, 8];
scheme_1 = _b[_a];
return [4 /*yield*/, selectedRole.Scheme.create(1, false, e.data.Role_Variable.currentItem)];
case 6:
newSchemes = _d.sent();
for (_c = 0, newSchemes_1 = newSchemes; _c < newSchemes_1.length; _c++) {
s = newSchemes_1[_c];
s.Active = scheme_1.Active;
s.Description = scheme_1.Description;
s.DisplayName = scheme_1.DisplayName;
s.Name = scheme_1.Name;
s.Role = scheme_1.Role;
s.SchemeId = scheme_1.SchemeId;
}
selectedRole.Scheme.addItems(newSchemes);
_d.label = 7;
case 7:
_a++;
return [3 /*break*/, 5];
case 8:
e.data.Role_Variable.currentItem;
selectedRole.ConfiguredStatus = 'Complete';
resolve();
return [2 /*return*/];
}
});
}); });
};
ExecutionScript.prototype.S_On_Previous = function (e) {
e.data.currentUser.currentItem.Role.clear();
};
return ExecutionScript;
}());
"""#
let stringRange = NSRange(location: 0, length: testString.utf16.count)
let matches = regex.matches(in: testString, range: stringRange)
var result: [[String]] = []
for match in matches {
var groups: [String] = []
for rangeIndex in 1 ..< match.numberOfRanges {
let nsRange = match.range(at: rangeIndex)
guard !NSEqualRanges(nsRange, NSMakeRange(NSNotFound, 0)) else { continue }
let string = (testString as NSString).substring(with: nsRange)
groups.append(string)
}
if !groups.isEmpty {
result.append(groups)
}
}
print(result)
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Swift 5.2, please visit: https://developer.apple.com/documentation/foundation/nsregularexpression