diff --git a/src/Core__RegExp.res b/src/Core__RegExp.res index 9f19af8..2cc48ca 100644 --- a/src/Core__RegExp.res +++ b/src/Core__RegExp.res @@ -22,3 +22,4 @@ module Result = { @get external source: t => string = "source" @get external sticky: t => bool = "sticky" @get external unicode: t => bool = "unicode" +@get external flags: t => string = "flags" diff --git a/src/Core__RegExp.resi b/src/Core__RegExp.resi index 3e12dae..4e13fe6 100644 --- a/src/Core__RegExp.resi +++ b/src/Core__RegExp.resi @@ -288,3 +288,20 @@ Console.log(regexp2->RegExp.unicode) // Logs `true`, since `u` is set */ @get external unicode: t => bool = "unicode" + +/** +`flags(regexp)` returns a string consisting of the flags of this `RegExp`. + +See [`RegExp.flags`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/flags) on MDN. + +## Examples +```rescript +let regexp1 = RegExp.fromStringWithFlags("\\w+", ~flags="gi") +Console.log(regexp1->RegExp.flags) // Logs `"gi"`, the flags of the RegExp + +let regexp2 = RegExp.fromStringWithFlags("\\w+", ~flags="myu") +Console.log(regexp2->RegExp.flags) // Logs `"muy"`, the flags sorted alphabetically +``` +*/ +@get +external flags: t => string = "flags" diff --git a/test/RegExpTests.mjs b/test/RegExpTests.mjs new file mode 100644 index 0000000..706b54e --- /dev/null +++ b/test/RegExpTests.mjs @@ -0,0 +1,41 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE + +import * as Test from "./Test.mjs"; +import * as Caml_obj from "rescript/lib/es6/caml_obj.js"; + +var eq = Caml_obj.equal; + +Test.run([ + [ + "RegExpTests.res", + 7, + 13, + 33 + ], + "RegExp.flags basic" + ], new RegExp("\\w+", "gi").flags, eq, "gi"); + +Test.run([ + [ + "RegExpTests.res", + 15, + 13, + 35 + ], + "RegExp.flags sorting" + ], new RegExp("\\w+", "igd").flags, eq, "dgi"); + +Test.run([ + [ + "RegExpTests.res", + 22, + 20, + 40 + ], + "RegExp.flags empty" + ], new RegExp("\\w+").flags, eq, ""); + +export { + eq , +} +/* Not a pure module */ diff --git a/test/RegExpTests.res b/test/RegExpTests.res new file mode 100644 index 0000000..29dfda3 --- /dev/null +++ b/test/RegExpTests.res @@ -0,0 +1,22 @@ +open RescriptCore + +let eq = (a, b) => a == b + +// Test for RegExp.flags +Test.run( + __POS_OF__("RegExp.flags basic"), + RegExp.fromStringWithFlags("\\w+", ~flags="gi")->RegExp.flags, + eq, + "gi", +) + +// Test for alphabetical sorting of flags +Test.run( + __POS_OF__("RegExp.flags sorting"), + RegExp.fromStringWithFlags("\\w+", ~flags="igd")->RegExp.flags, + eq, + "dgi", +) + +// Test with no flags +Test.run(__POS_OF__("RegExp.flags empty"), RegExp.fromString("\\w+")->RegExp.flags, eq, "") diff --git a/test/TestSuite.mjs b/test/TestSuite.mjs index 00c9cb7..03e41dd 100644 --- a/test/TestSuite.mjs +++ b/test/TestSuite.mjs @@ -9,6 +9,7 @@ import * as ErrorTests from "./ErrorTests.mjs"; import * as FloatTests from "./FloatTests.mjs"; import * as ObjectTests from "./ObjectTests.mjs"; import * as PromiseTest from "./PromiseTest.mjs"; +import * as RegExpTests from "./RegExpTests.mjs"; import * as ResultTests from "./ResultTests.mjs"; import * as IteratorTests from "./IteratorTests.mjs"; import * as NullableTests from "./NullableTests.mjs"; @@ -72,8 +73,6 @@ var decodeJsonTest = JsonTests.decodeJsonTest; var shouldHandleNullableValues = NullableTests.shouldHandleNullableValues; -var eq = IteratorTests.eq; - var iterator = IteratorTests.iterator; var syncResult = IteratorTests.syncResult; @@ -82,6 +81,8 @@ var asyncResult = IteratorTests.asyncResult; var asyncIterator = IteratorTests.asyncIterator; +var eq = RegExpTests.eq; + export { bign , TestError , @@ -112,10 +113,10 @@ export { o , decodeJsonTest , shouldHandleNullableValues , - eq , iterator , syncResult , asyncResult , asyncIterator , + eq , } /* IntTests Not a pure module */ diff --git a/test/TestSuite.res b/test/TestSuite.res index 4b3496e..f810174 100644 --- a/test/TestSuite.res +++ b/test/TestSuite.res @@ -11,3 +11,4 @@ include JsonTests include NullableTests include DictTests include IteratorTests +include RegExpTests