mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 07:17:35 +00:00
LibJS: Implement RegExp.prototype.hasIndices proposal
https://tc39.es/proposal-regexp-match-indices/
This commit is contained in:
parent
d1e06b00e3
commit
6c67de8186
3 changed files with 152 additions and 3 deletions
|
@ -0,0 +1,53 @@
|
|||
test("basic functionality", () => {
|
||||
const str = "foo bar foo";
|
||||
|
||||
var regex = new RegExp("bar");
|
||||
expect(regex.hasIndices).toBeFalse();
|
||||
expect(regex.exec(str).indices).toBeUndefined();
|
||||
|
||||
regex = new RegExp("foo", "gd");
|
||||
expect(regex.hasIndices).toBeTrue();
|
||||
expect(regex.exec(str).indices[0]).toEqual([0, 3]);
|
||||
expect(regex.exec(str).indices[0]).toEqual([8, 11]);
|
||||
|
||||
regex = new RegExp("(foo)", "gd");
|
||||
expect(regex.hasIndices).toBeTrue();
|
||||
{
|
||||
var result = regex.exec(str).indices;
|
||||
expect(result.length).toBe(2);
|
||||
expect(result[0]).toEqual([0, 3]);
|
||||
expect(result[1]).toEqual([0, 3]);
|
||||
expect(result.groups).toBeUndefined();
|
||||
}
|
||||
{
|
||||
var result = regex.exec(str).indices;
|
||||
expect(result.length).toBe(2);
|
||||
expect(result[0]).toEqual([8, 11]);
|
||||
expect(result[1]).toEqual([8, 11]);
|
||||
expect(result.groups).toBeUndefined();
|
||||
}
|
||||
|
||||
regex = new RegExp("(?<group_name>foo)", "gd");
|
||||
expect(regex.hasIndices).toBeTrue();
|
||||
{
|
||||
var result = regex.exec(str).indices;
|
||||
expect(result.length).toBe(2);
|
||||
expect(result[0]).toEqual([0, 3]);
|
||||
expect(result[1]).toEqual([0, 3]);
|
||||
expect(result.groups).toEqual({ group_name: [0, 3] });
|
||||
}
|
||||
{
|
||||
var result = regex.exec(str).indices;
|
||||
expect(result.length).toBe(2);
|
||||
expect(result[0]).toEqual([8, 11]);
|
||||
expect(result[1]).toEqual([8, 11]);
|
||||
expect(result.groups).toEqual({ group_name: [8, 11] });
|
||||
}
|
||||
|
||||
regex = /(?<keyword>let|const|var)\s+(?<id>[a-zA-Z_$][0-9a-zA-Z_$]*)/d;
|
||||
expect(regex.hasIndices).toBeTrue();
|
||||
{
|
||||
var result = regex.exec("let foo").indices;
|
||||
expect(result.groups).toEqual({ keyword: [0, 3], id: [4, 7] });
|
||||
}
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue