[JS] Add the function AFExactMatch

This commit is contained in:
Calixte Denizet 2022-09-29 14:23:56 -10:00
parent 294db228bc
commit 330048ad6b
2 changed files with 25 additions and 1 deletions

View File

@ -683,6 +683,14 @@ class AForm {
eMailValidate(str) { eMailValidate(str) {
return this._emailRegex.test(str); return this._emailRegex.test(str);
} }
AFExactMatch(rePatterns, str) {
if (rePatterns instanceof RegExp) {
return str.match(rePatterns)?.[0] === str || 0;
}
return rePatterns.findIndex(re => str.match(re)?.[0] === str) + 1;
}
} }
export { AForm }; export { AForm };

View File

@ -1035,7 +1035,7 @@ describe("Scripting", function () {
}); });
}); });
describe("ASSimple_Calculate", function () { describe("AFSimple_Calculate", function () {
it("should compute the sum of several fields", async () => { it("should compute the sum of several fields", async () => {
const refIds = [0, 1, 2, 3].map(_ => getId()); const refIds = [0, 1, 2, 3].map(_ => getId());
const data = { const data = {
@ -1429,5 +1429,21 @@ describe("Scripting", function () {
expect(value).toEqual(false); expect(value).toEqual(false);
}); });
}); });
describe("AFExactMatch", function () {
it("should check matching between regexs and a string", async () => {
let value = await myeval(`AFExactMatch(/\\d+/, "123")`);
expect(value).toEqual(true);
value = await myeval(`AFExactMatch(/\\d+/, "foo")`);
expect(value).toEqual(0);
value = await myeval(`AFExactMatch([/\\d+/, /[fo]*/], "foo")`);
expect(value).toEqual(2);
value = await myeval(`AFExactMatch([/\\d+/, /[fo]*/], "bar")`);
expect(value).toEqual(0);
});
});
}); });
}); });