mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 00:17:46 +00:00
parent
9708b86d65
commit
7849950383
15 changed files with 82 additions and 88 deletions
|
@ -68,7 +68,7 @@ ThrowCompletionOr<void> set_legacy_regexp_static_property(VM& vm, RegExpConstruc
|
|||
}
|
||||
|
||||
// UpdateLegacyRegExpStaticProperties ( C, S, startIndex, endIndex, capturedValues ), https://github.com/tc39/proposal-regexp-legacy-features#updatelegacyregexpstaticproperties--c-s-startindex-endindex-capturedvalues-
|
||||
ThrowCompletionOr<void> update_legacy_regexp_static_properties(VM& vm, RegExpConstructor& constructor, Utf16String const& string, size_t start_index, size_t end_index, Vector<Utf16String> const& captured_values)
|
||||
void update_legacy_regexp_static_properties(RegExpConstructor& constructor, Utf16String const& string, size_t start_index, size_t end_index, Vector<Utf16String> const& captured_values)
|
||||
{
|
||||
auto& legacy_static_properties = constructor.legacy_static_properties();
|
||||
|
||||
|
@ -92,7 +92,7 @@ ThrowCompletionOr<void> update_legacy_regexp_static_properties(VM& vm, RegExpCon
|
|||
|
||||
// 8. Set the value of C’s [[RegExpLastMatch]] internal slot to a String whose length is endIndex - startIndex and containing the code units from S with indices startIndex through endIndex - 1, in ascending order.
|
||||
auto last_match = string.view().substring_view(start_index, end_index - start_index);
|
||||
legacy_static_properties.set_last_match(TRY(Utf16String::create(vm, last_match)));
|
||||
legacy_static_properties.set_last_match(Utf16String::create(last_match));
|
||||
|
||||
// 9. If n > 0, set the value of C’s [[RegExpLastParen]] internal slot to the last element of capturedValues.
|
||||
if (group_count > 0) {
|
||||
|
@ -101,22 +101,22 @@ ThrowCompletionOr<void> update_legacy_regexp_static_properties(VM& vm, RegExpCon
|
|||
}
|
||||
// 10. Else, set the value of C’s [[RegExpLastParen]] internal slot to the empty String.
|
||||
else {
|
||||
legacy_static_properties.set_last_paren(TRY(Utf16String::create(vm)));
|
||||
legacy_static_properties.set_last_paren(Utf16String::create());
|
||||
}
|
||||
|
||||
// 11. Set the value of C’s [[RegExpLeftContext]] internal slot to a String whose length is startIndex and containing the code units from S with indices 0 through startIndex - 1, in ascending order.
|
||||
auto left_context = string.view().substring_view(0, start_index);
|
||||
legacy_static_properties.set_left_context(TRY(Utf16String::create(vm, left_context)));
|
||||
legacy_static_properties.set_left_context(Utf16String::create(left_context));
|
||||
|
||||
// 12. Set the value of C’s [[RegExpRightContext]] internal slot to a String whose length is len - endIndex and containing the code units from S with indices endIndex through len - 1, in ascending order.
|
||||
auto right_context = string.view().substring_view(end_index, len - end_index);
|
||||
legacy_static_properties.set_right_context(TRY(Utf16String::create(vm, right_context)));
|
||||
legacy_static_properties.set_right_context(Utf16String::create(right_context));
|
||||
|
||||
// 13. For each integer i such that 1 ≤ i ≤ 9
|
||||
for (size_t i = 1; i <= 9; i++) {
|
||||
// i. If i ≤ n, set the value of C’s [[RegExpPareni]] internal slot to the ith element of capturedValues.
|
||||
// ii. Else, set the value of C’s [[RegExpPareni]] internal slot to the empty String.
|
||||
auto value = (i <= group_count) ? captured_values[i - 1] : TRY(Utf16String::create(vm));
|
||||
auto value = (i <= group_count) ? captured_values[i - 1] : Utf16String::create();
|
||||
|
||||
if (i == 1) {
|
||||
legacy_static_properties.set_$1(move(value));
|
||||
|
@ -138,8 +138,6 @@ ThrowCompletionOr<void> update_legacy_regexp_static_properties(VM& vm, RegExpCon
|
|||
legacy_static_properties.set_$9(move(value));
|
||||
}
|
||||
}
|
||||
|
||||
return {};
|
||||
}
|
||||
|
||||
// InvalidateLegacyRegExpStaticProperties ( C ), https://github.com/tc39/proposal-regexp-legacy-features#invalidatelegacyregexpstaticproperties--c
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue