Skip to content

Commit 9116fcd

Browse files
committed
migrations for Js_re
1 parent 7a25a64 commit 9116fcd

File tree

6 files changed

+220
-2
lines changed

6 files changed

+220
-2
lines changed

packages/@rescript/runtime/Js_re.res

Lines changed: 70 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,16 +40,31 @@ type result
4040
An `array` of the match and captures, the first is the full match and the
4141
remaining are the substring captures.
4242
*/
43+
@deprecated({
44+
reason: "Use `RegExp.Result.matches` instead.",
45+
migrate: RegExp.Result.matches(),
46+
})
4347
external captures: result => array<Js_null_undefined.t<string>> = "%identity"
4448

45-
@deprecated("Use Js.Re.captures instead")
49+
@deprecated({
50+
reason: "Use `RegExp.Result.matches` instead.",
51+
migrate: RegExp.Result.matches(),
52+
})
4653
external matches: result => array<string> = "%identity"
4754

4855
/** 0-based index of the match in the input string. */
56+
@deprecated({
57+
reason: "Use `RegExp.Result.index` instead.",
58+
migrate: RegExp.Result.index(),
59+
})
4960
@get
5061
external index: result => int = "index"
5162

5263
/** The original input string. */
64+
@deprecated({
65+
reason: "Use `RegExp.Result.input` instead.",
66+
migrate: RegExp.Result.input(),
67+
})
5368
@get
5469
external input: result => string = "input"
5570

@@ -74,6 +89,10 @@ let firstReScriptFileExtension = (filename, content) => {
7489
firstReScriptFileExtension("School", "School.res School.resi Main.js School.bs.js")
7590
```
7691
*/
92+
@deprecated({
93+
reason: "Use `RegExp.fromString` instead.",
94+
migrate: RegExp.fromString(),
95+
})
7796
@new
7897
external fromString: string => t = "RegExp"
7998

@@ -89,18 +108,34 @@ Valid flags:
89108
- **u** unicode (es2015)
90109
- **y** sticky (es2015)
91110
*/
111+
@deprecated({
112+
reason: "Use `RegExp.fromString` instead.",
113+
migrate: RegExp.fromString(),
114+
})
92115
@new
93116
external fromStringWithFlags: (string, ~flags: string) => t = "RegExp"
94117

95118
/** Returns the enabled flags as a string. */
119+
@deprecated({
120+
reason: "Use `RegExp.flags` instead.",
121+
migrate: RegExp.flags(),
122+
})
96123
@get
97124
external flags: t => string = "flags"
98125

99126
/** Returns a `bool` indicating whether the global flag is set. */
127+
@deprecated({
128+
reason: "Use `RegExp.global` instead.",
129+
migrate: RegExp.global(),
130+
})
100131
@get
101132
external global: t => bool = "global"
102133

103134
/** Returns a `bool` indicating whether the ignoreCase flag is set. */
135+
@deprecated({
136+
reason: "Use `RegExp.ignoreCase` instead.",
137+
migrate: RegExp.ignoreCase(),
138+
})
104139
@get
105140
external ignoreCase: t => bool = "ignoreCase"
106141

@@ -132,26 +167,50 @@ See
132167
[`RegExp: lastIndex`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/lastIndex)
133168
on MDN.
134169
*/
170+
@deprecated({
171+
reason: "Use `RegExp.lastIndex` instead.",
172+
migrate: RegExp.lastIndex(),
173+
})
135174
@get
136175
external lastIndex: t => int = "lastIndex"
137176

138177
/** Sets the index at which the next match will start its search from. */
178+
@deprecated({
179+
reason: "Use `RegExp.setLastIndex` instead.",
180+
migrate: RegExp.setLastIndex(),
181+
})
139182
@set
140183
external setLastIndex: (t, int) => unit = "lastIndex"
141184

142185
/** Returns a `bool` indicating whether the multiline flag is set. */
186+
@deprecated({
187+
reason: "Use `RegExp.multiline` instead.",
188+
migrate: RegExp.multiline(),
189+
})
143190
@get
144191
external multiline: t => bool = "multiline"
145192

146193
/** Returns the pattern as a `string`. */
194+
@deprecated({
195+
reason: "Use `RegExp.source` instead.",
196+
migrate: RegExp.source(),
197+
})
147198
@get
148199
external source: t => string = "source"
149200

150201
/** Returns a `bool` indicating whether the sticky flag is set. */
202+
@deprecated({
203+
reason: "Use `RegExp.sticky` instead.",
204+
migrate: RegExp.sticky(),
205+
})
151206
@get
152207
external sticky: t => bool = "sticky"
153208

154209
/** Returns a `bool` indicating whether the unicode flag is set. */
210+
@deprecated({
211+
reason: "Use `RegExp.unicode` instead.",
212+
migrate: RegExp.unicode(),
213+
})
155214
@get
156215
external unicode: t => bool = "unicode"
157216

@@ -174,7 +233,12 @@ let result = Js.Re.exec_(re, "The Quick Brown Fox Jumps Over The Lazy Dog")
174233
See [`RegExp.prototype.exec()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec)
175234
on MDN.
176235
*/
177-
@send @return(null_to_opt)
236+
@deprecated({
237+
reason: "Use `RegExp.exec` instead.",
238+
migrate: RegExp.exec(),
239+
})
240+
@send
241+
@return(null_to_opt)
178242
external exec_: (t, string) => option<result> = "exec"
179243

180244
/**
@@ -196,5 +260,9 @@ Js.log(str->startsWith("hello")) /* prints "true" */
196260
See [`RegExp.prototype.test()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test)
197261
on MDN.
198262
*/
263+
@deprecated({
264+
reason: "Use `RegExp.test` instead.",
265+
migrate: RegExp.test(),
266+
})
199267
@send
200268
external test_: (t, string) => bool = "test"
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
let re2 = RegExp.fromString("foo", ~flags="gi")
2+
3+
let capture_access = switch re2->RegExp.exec("Foo") {
4+
| None => 0
5+
| Some(r) =>
6+
switch RegExp.Result.matches(r) {
7+
| [Value(full), _] => String.length(full)
8+
| _ => 0
9+
}
10+
}
11+
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
let re1 = RegExp.fromString("foo")
2+
let re2 = RegExp.fromString("foo", ~flags="gi")
3+
4+
let flags1 = re2->RegExp.flags
5+
let flags2 = RegExp.flags(re2)
6+
7+
let g1 = re2->RegExp.global
8+
let g2 = RegExp.global(re2)
9+
10+
let ic1 = re2->RegExp.ignoreCase
11+
let ic2 = RegExp.ignoreCase(re2)
12+
13+
let m1 = re2->RegExp.multiline
14+
let m2 = RegExp.multiline(re2)
15+
16+
let u1 = re2->RegExp.unicode
17+
let u2 = RegExp.unicode(re2)
18+
19+
let y1 = re2->RegExp.sticky
20+
let y2 = RegExp.sticky(re2)
21+
22+
let src1 = re2->RegExp.source
23+
let src2 = RegExp.source(re2)
24+
25+
let li1 = re2->RegExp.lastIndex
26+
let () = re2->RegExp.setLastIndex(0)
27+
28+
let exec1 = re2->RegExp.exec("Foo bar")
29+
let exec2 = RegExp.exec(re2, "Foo bar")
30+
31+
let test1 = re2->RegExp.test("Foo bar")
32+
let test2 = RegExp.test(re2, "Foo bar")
33+
34+
let result_index = switch re2->RegExp.exec("Foo bar") {
35+
| None => 0
36+
| Some(r) => RegExp.Result.index(r)
37+
}
38+
39+
let result_input = switch re2->RegExp.exec("Foo bar") {
40+
| None => ""
41+
| Some(r) => RegExp.Result.input(r)
42+
}
43+
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
let re2 = Js.Re.fromStringWithFlags("foo", ~flags="gi")
2+
3+
let capture_access = switch re2->Js.Re.exec_("Foo") {
4+
| None => 0
5+
| Some(r) =>
6+
switch Js.Re.captures(r) {
7+
| [Value(full), _] => String.length(full)
8+
| _ => 0
9+
}
10+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
let re1 = Js.Re.fromString("foo")
2+
let re2 = Js.Re.fromStringWithFlags("foo", ~flags="gi")
3+
4+
let flags1 = re2->Js.Re.flags
5+
let flags2 = Js.Re.flags(re2)
6+
7+
let g1 = re2->Js.Re.global
8+
let g2 = Js.Re.global(re2)
9+
10+
let ic1 = re2->Js.Re.ignoreCase
11+
let ic2 = Js.Re.ignoreCase(re2)
12+
13+
let m1 = re2->Js.Re.multiline
14+
let m2 = Js.Re.multiline(re2)
15+
16+
let u1 = re2->Js.Re.unicode
17+
let u2 = Js.Re.unicode(re2)
18+
19+
let y1 = re2->Js.Re.sticky
20+
let y2 = Js.Re.sticky(re2)
21+
22+
let src1 = re2->Js.Re.source
23+
let src2 = Js.Re.source(re2)
24+
25+
let li1 = re2->Js.Re.lastIndex
26+
let () = re2->Js.Re.setLastIndex(0)
27+
28+
let exec1 = re2->Js.Re.exec_("Foo bar")
29+
let exec2 = Js.Re.exec_(re2, "Foo bar")
30+
31+
let test1 = re2->Js.Re.test_("Foo bar")
32+
let test2 = Js.Re.test_(re2, "Foo bar")
33+
34+
let result_index = switch re2->Js.Re.exec_("Foo bar") {
35+
| None => 0
36+
| Some(r) => Js.Re.index(r)
37+
}
38+
39+
let result_input = switch re2->Js.Re.exec_("Foo bar") {
40+
| None => ""
41+
| Some(r) => Js.Re.input(r)
42+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
// This file is autogenerated so it can be type checked.
2+
// It's the migrated version of src/migrate/StdlibMigration_Js_Re.res.
3+
let re1 = RegExp.fromString("foo")
4+
let re2 = RegExp.fromString("foo", ~flags="gi")
5+
6+
let flags1 = re2->RegExp.flags
7+
let flags2 = RegExp.flags(re2)
8+
9+
let g1 = re2->RegExp.global
10+
let g2 = RegExp.global(re2)
11+
12+
let ic1 = re2->RegExp.ignoreCase
13+
let ic2 = RegExp.ignoreCase(re2)
14+
15+
let m1 = re2->RegExp.multiline
16+
let m2 = RegExp.multiline(re2)
17+
18+
let u1 = re2->RegExp.unicode
19+
let u2 = RegExp.unicode(re2)
20+
21+
let y1 = re2->RegExp.sticky
22+
let y2 = RegExp.sticky(re2)
23+
24+
let src1 = re2->RegExp.source
25+
let src2 = RegExp.source(re2)
26+
27+
let li1 = re2->RegExp.lastIndex
28+
let () = re2->RegExp.setLastIndex(0)
29+
30+
let exec1 = re2->RegExp.exec("Foo bar")
31+
let exec2 = RegExp.exec(re2, "Foo bar")
32+
33+
let test1 = re2->RegExp.test("Foo bar")
34+
let test2 = RegExp.test(re2, "Foo bar")
35+
36+
let result_index = switch re2->RegExp.exec("Foo bar") {
37+
| None => 0
38+
| Some(r) => RegExp.Result.index(r)
39+
}
40+
41+
let result_input = switch re2->RegExp.exec("Foo bar") {
42+
| None => ""
43+
| Some(r) => RegExp.Result.input(r)
44+
}

0 commit comments

Comments
 (0)