Skip to content

Commit 4aa9167

Browse files
committed
Add RegExp.flags function with tests
1 parent 2410129 commit 4aa9167

File tree

6 files changed

+86
-3
lines changed

6 files changed

+86
-3
lines changed

src/Core__RegExp.res

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,4 @@ module Result = {
2222
@get external source: t => string = "source"
2323
@get external sticky: t => bool = "sticky"
2424
@get external unicode: t => bool = "unicode"
25+
@get external flags: t => string = "flags"

src/Core__RegExp.resi

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,3 +288,20 @@ Console.log(regexp2->RegExp.unicode) // Logs `true`, since `u` is set
288288
*/
289289
@get
290290
external unicode: t => bool = "unicode"
291+
292+
/**
293+
`flags(regexp)` returns a string consisting of the flags of this `RegExp`.
294+
295+
See [`RegExp.flags`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/flags) on MDN.
296+
297+
## Examples
298+
```rescript
299+
let regexp1 = RegExp.fromStringWithFlags("\\w+", ~flags="gi")
300+
Console.log(regexp1->RegExp.flags) // Logs `"gi"`, the flags of the RegExp
301+
302+
let regexp2 = RegExp.fromStringWithFlags("\\w+", ~flags="myu")
303+
Console.log(regexp2->RegExp.flags) // Logs `"muy"`, the flags sorted alphabetically
304+
```
305+
*/
306+
@get
307+
external flags: t => string = "flags"

test/RegExpTests.mjs

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
// Generated by ReScript, PLEASE EDIT WITH CARE
2+
3+
import * as Test from "./Test.mjs";
4+
import * as Caml_obj from "rescript/lib/es6/caml_obj.js";
5+
6+
var eq = Caml_obj.equal;
7+
8+
Test.run([
9+
[
10+
"RegExpTests.res",
11+
7,
12+
13,
13+
33
14+
],
15+
"RegExp.flags basic"
16+
], new RegExp("\\w+", "gi").flags, eq, "gi");
17+
18+
Test.run([
19+
[
20+
"RegExpTests.res",
21+
15,
22+
13,
23+
35
24+
],
25+
"RegExp.flags sorting"
26+
], new RegExp("\\w+", "igd").flags, eq, "dgi");
27+
28+
Test.run([
29+
[
30+
"RegExpTests.res",
31+
22,
32+
20,
33+
40
34+
],
35+
"RegExp.flags empty"
36+
], new RegExp("\\w+").flags, eq, "");
37+
38+
export {
39+
eq ,
40+
}
41+
/* Not a pure module */

test/RegExpTests.res

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
open RescriptCore
2+
3+
let eq = (a, b) => a == b
4+
5+
// Test for RegExp.flags
6+
Test.run(
7+
__POS_OF__("RegExp.flags basic"),
8+
RegExp.fromStringWithFlags("\\w+", ~flags="gi")->RegExp.flags,
9+
eq,
10+
"gi",
11+
)
12+
13+
// Test for alphabetical sorting of flags
14+
Test.run(
15+
__POS_OF__("RegExp.flags sorting"),
16+
RegExp.fromStringWithFlags("\\w+", ~flags="igd")->RegExp.flags,
17+
eq,
18+
"dgi",
19+
)
20+
21+
// Test with no flags
22+
Test.run(__POS_OF__("RegExp.flags empty"), RegExp.fromString("\\w+")->RegExp.flags, eq, "")

test/TestSuite.mjs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import * as ErrorTests from "./ErrorTests.mjs";
99
import * as FloatTests from "./FloatTests.mjs";
1010
import * as ObjectTests from "./ObjectTests.mjs";
1111
import * as PromiseTest from "./PromiseTest.mjs";
12+
import * as RegExpTests from "./RegExpTests.mjs";
1213
import * as ResultTests from "./ResultTests.mjs";
1314
import * as IteratorTests from "./IteratorTests.mjs";
1415
import * as NullableTests from "./NullableTests.mjs";
@@ -72,8 +73,6 @@ var decodeJsonTest = JsonTests.decodeJsonTest;
7273

7374
var shouldHandleNullableValues = NullableTests.shouldHandleNullableValues;
7475

75-
var eq = IteratorTests.eq;
76-
7776
var iterator = IteratorTests.iterator;
7877

7978
var syncResult = IteratorTests.syncResult;
@@ -82,6 +81,8 @@ var asyncResult = IteratorTests.asyncResult;
8281

8382
var asyncIterator = IteratorTests.asyncIterator;
8483

84+
var eq = RegExpTests.eq;
85+
8586
export {
8687
bign ,
8788
TestError ,
@@ -112,10 +113,10 @@ export {
112113
o ,
113114
decodeJsonTest ,
114115
shouldHandleNullableValues ,
115-
eq ,
116116
iterator ,
117117
syncResult ,
118118
asyncResult ,
119119
asyncIterator ,
120+
eq ,
120121
}
121122
/* IntTests Not a pure module */

test/TestSuite.res

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,4 @@ include JsonTests
1111
include NullableTests
1212
include DictTests
1313
include IteratorTests
14+
include RegExpTests

0 commit comments

Comments
 (0)