From 29b6af4af319f55310526a5ba277f790fd9a5678 Mon Sep 17 00:00:00 2001 From: Pete LePage Date: Thu, 8 Aug 2024 13:05:23 -0400 Subject: [PATCH 1/3] Add RegExp methods --- features/regexp.yml | 44 ++++++ features/regexp.yml.dist | 287 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 331 insertions(+) create mode 100644 features/regexp.yml create mode 100644 features/regexp.yml.dist diff --git a/features/regexp.yml b/features/regexp.yml new file mode 100644 index 00000000000..91d86ab3aac --- /dev/null +++ b/features/regexp.yml @@ -0,0 +1,44 @@ +name: Regular Expressions (RegExp) +description: The RegExp object is used for matching text with a regular expression. +spec: https://tc39.es/ecma262/multipage/text-processing.html#sec-regexp-regular-expression-objects +status: + compute_from: javascript.builtins.RegExp +compat_features: + - javascript.builtins.RegExp + - javascript.builtins.RegExp.RegExp + - javascript.builtins.RegExp.compile + - javascript.builtins.RegExp.dotAll + - javascript.builtins.RegExp.exec + - javascript.builtins.RegExp.flags + - javascript.builtins.RegExp.global + - javascript.builtins.RegExp.global.prototype_accessor + - javascript.builtins.RegExp.hasIndices + - javascript.builtins.RegExp.ignoreCase + - javascript.builtins.RegExp.ignoreCase.prototype_accessor + - javascript.builtins.RegExp.input + - javascript.builtins.RegExp.lastIndex + - javascript.builtins.RegExp.lastMatch + - javascript.builtins.RegExp.lastParen + - javascript.builtins.RegExp.leftContext + - javascript.builtins.RegExp.multiline + - javascript.builtins.RegExp.multiline.prototype_accessor + - javascript.builtins.RegExp.n + - javascript.builtins.RegExp.rightContext + - javascript.builtins.RegExp.source + - javascript.builtins.RegExp.source.empty_regex_string + - javascript.builtins.RegExp.source.escaping + - javascript.builtins.RegExp.source.prototype_accessor + - javascript.builtins.RegExp.sticky + - javascript.builtins.RegExp.sticky.anchored_sticky_flag + - javascript.builtins.RegExp.sticky.prototype_accessor + - javascript.builtins.RegExp.test + - javascript.builtins.RegExp.toString + - javascript.builtins.RegExp.toString.escaping + - javascript.builtins.RegExp.unicode + - javascript.builtins.RegExp.unicodeSets + - javascript.builtins.RegExp.@@match + - javascript.builtins.RegExp.@@matchAll + - javascript.builtins.RegExp.@@replace + - javascript.builtins.RegExp.@@search + - javascript.builtins.RegExp.@@species + - javascript.builtins.RegExp.@@split diff --git a/features/regexp.yml.dist b/features/regexp.yml.dist new file mode 100644 index 00000000000..bad58d8d6cb --- /dev/null +++ b/features/regexp.yml.dist @@ -0,0 +1,287 @@ +# Generated from: regexp.yml +# Do not edit this file by hand. Edit the source file instead! + +status: + baseline: high + baseline_low_date: 2015-07-29 + baseline_high_date: 2018-01-29 + support: + chrome: "1" + chrome_android: "18" + edge: "12" + firefox: "1" + firefox_android: "4" + safari: "1" + safari_ios: "1" +compat_features: + # ⬇️ Same status as overall feature ⬇️ + # baseline: high + # baseline_low_date: 2015-07-29 + # baseline_high_date: 2018-01-29 + # support: + # chrome: "1" + # chrome_android: "18" + # edge: "12" + # firefox: "1" + # firefox_android: "4" + # safari: "1" + # safari_ios: "1" + - javascript.builtins.RegExp + - javascript.builtins.RegExp.RegExp + - javascript.builtins.RegExp.exec + - javascript.builtins.RegExp.global + - javascript.builtins.RegExp.ignoreCase + - javascript.builtins.RegExp.lastIndex + - javascript.builtins.RegExp.multiline + - javascript.builtins.RegExp.source + - javascript.builtins.RegExp.test + - javascript.builtins.RegExp.toString + + # baseline: high + # baseline_low_date: 2015-07-29 + # baseline_high_date: 2018-01-29 + # support: + # chrome: "6" + # chrome_android: "18" + # edge: "12" + # firefox: "38" + # firefox_android: "38" + # safari: "5" + # safari_ios: "4.2" + - javascript.builtins.RegExp.source.empty_regex_string + + # baseline: high + # baseline_low_date: 2016-01-26 + # baseline_high_date: 2018-07-26 + # support: + # chrome: "48" + # chrome_android: "48" + # edge: "12" + # firefox: "38" + # firefox_android: "38" + # safari: "1.3" + # safari_ios: "1" + - javascript.builtins.RegExp.global.prototype_accessor + - javascript.builtins.RegExp.ignoreCase.prototype_accessor + - javascript.builtins.RegExp.multiline.prototype_accessor + + # baseline: high + # baseline_low_date: 2016-01-26 + # baseline_high_date: 2018-07-26 + # support: + # chrome: "48" + # chrome_android: "48" + # edge: "12" + # firefox: "41" + # firefox_android: "41" + # safari: "1.3" + # safari_ios: "1" + - javascript.builtins.RegExp.source.prototype_accessor + + # baseline: high + # baseline_low_date: 2016-09-20 + # baseline_high_date: 2019-03-20 + # support: + # chrome: "49" + # chrome_android: "49" + # edge: "13" + # firefox: "3" + # firefox_android: "4" + # safari: "10" + # safari_ios: "10" + - javascript.builtins.RegExp.sticky + + # baseline: high + # baseline_low_date: 2016-09-20 + # baseline_high_date: 2019-03-20 + # support: + # chrome: "49" + # chrome_android: "49" + # edge: "13" + # firefox: "38" + # firefox_android: "38" + # safari: "10" + # safari_ios: "10" + - javascript.builtins.RegExp.sticky.prototype_accessor + + # baseline: high + # baseline_low_date: 2016-09-20 + # baseline_high_date: 2019-03-20 + # support: + # chrome: "49" + # chrome_android: "49" + # edge: "13" + # firefox: "44" + # firefox_android: "44" + # safari: "10" + # safari_ios: "10" + - javascript.builtins.RegExp.sticky.anchored_sticky_flag + + # baseline: high + # baseline_low_date: 2016-09-20 + # baseline_high_date: 2019-03-20 + # support: + # chrome: "50" + # chrome_android: "50" + # edge: "12" + # firefox: "46" + # firefox_android: "46" + # safari: "10" + # safari_ios: "10" + - javascript.builtins.RegExp.unicode + + # baseline: high + # baseline_low_date: 2016-09-20 + # baseline_high_date: 2019-03-20 + # support: + # chrome: "50" + # chrome_android: "50" + # edge: "13" + # firefox: "49" + # firefox_android: "49" + # safari: "10" + # safari_ios: "10" + - javascript.builtins.RegExp.@@match + - javascript.builtins.RegExp.@@search + + # baseline: high + # baseline_low_date: 2016-09-20 + # baseline_high_date: 2019-03-20 + # support: + # chrome: "51" + # chrome_android: "51" + # edge: "13" + # firefox: "49" + # firefox_android: "49" + # safari: "10" + # safari_ios: "10" + - javascript.builtins.RegExp.@@species + + # baseline: high + # baseline_low_date: 2019-03-12 + # baseline_high_date: 2021-09-12 + # support: + # chrome: "73" + # chrome_android: "73" + # edge: "12" + # firefox: "38" + # firefox_android: "38" + # safari: "6" + # safari_ios: "6" + - javascript.builtins.RegExp.source.escaping + - javascript.builtins.RegExp.toString.escaping + + # baseline: high + # baseline_low_date: 2020-01-15 + # baseline_high_date: 2022-07-15 + # support: + # chrome: "49" + # chrome_android: "49" + # edge: "79" + # firefox: "37" + # firefox_android: "37" + # safari: "9" + # safari_ios: "9" + - javascript.builtins.RegExp.flags + + # baseline: high + # baseline_low_date: 2020-01-15 + # baseline_high_date: 2022-07-15 + # support: + # chrome: "50" + # chrome_android: "50" + # edge: "79" + # firefox: "49" + # firefox_android: "49" + # safari: "10" + # safari_ios: "10" + - javascript.builtins.RegExp.@@replace + - javascript.builtins.RegExp.@@split + + # baseline: high + # baseline_low_date: 2020-01-15 + # baseline_high_date: 2022-07-15 + # support: + # chrome: "73" + # chrome_android: "73" + # edge: "79" + # firefox: "67" + # firefox_android: "67" + # safari: "13" + # safari_ios: "13" + - javascript.builtins.RegExp.@@matchAll + + # baseline: high + # baseline_low_date: 2020-07-28 + # baseline_high_date: 2023-01-28 + # support: + # chrome: "62" + # chrome_android: "62" + # edge: "79" + # firefox: "78" + # firefox_android: "79" + # safari: "11.1" + # safari_ios: "11.3" + - javascript.builtins.RegExp.dotAll + + # baseline: high + # baseline_low_date: 2021-09-20 + # baseline_high_date: 2024-03-20 + # support: + # chrome: "90" + # chrome_android: "90" + # edge: "90" + # firefox: "88" + # firefox_android: "88" + # safari: "15" + # safari_ios: "15" + - javascript.builtins.RegExp.hasIndices + + # baseline: low + # baseline_low_date: 2023-09-18 + # support: + # chrome: "112" + # chrome_android: "112" + # edge: "112" + # firefox: "116" + # firefox_android: "116" + # safari: "17" + # safari_ios: "17" + - javascript.builtins.RegExp.unicodeSets + + # baseline: false + # support: + # chrome: "1" + # chrome_android: "18" + # edge: "12" + # firefox: "1" + # firefox_android: "4" + # safari: "1" + # safari_ios: "1" + - javascript.builtins.RegExp.n + + # baseline: false + # support: + # chrome: "1" + # chrome_android: "18" + # edge: "12" + # firefox: "1" + # firefox_android: "4" + # safari: "3" + # safari_ios: "1" + - javascript.builtins.RegExp.input + - javascript.builtins.RegExp.lastMatch + - javascript.builtins.RegExp.lastParen + - javascript.builtins.RegExp.leftContext + - javascript.builtins.RegExp.rightContext + + # baseline: false + # support: + # chrome: "1" + # chrome_android: "18" + # edge: "12" + # firefox: "1" + # firefox_android: "4" + # safari: "3.1" + # safari_ios: "2" + - javascript.builtins.RegExp.compile From 441e16f1a9cc72b85db30f2fffe43a9a78e7edbf Mon Sep 17 00:00:00 2001 From: Pete LePage Date: Tue, 13 Aug 2024 10:15:37 -0400 Subject: [PATCH 2/3] Update features/regexp.yml Co-authored-by: Daniel D. Beck --- features/regexp.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/features/regexp.yml b/features/regexp.yml index 91d86ab3aac..c8e4ac5a7e3 100644 --- a/features/regexp.yml +++ b/features/regexp.yml @@ -1,5 +1,5 @@ -name: Regular Expressions (RegExp) -description: The RegExp object is used for matching text with a regular expression. +name: Regular expressions +description: The `RegExp` object represents a regular expression, a notation for matching text patterns. spec: https://tc39.es/ecma262/multipage/text-processing.html#sec-regexp-regular-expression-objects status: compute_from: javascript.builtins.RegExp From 982244f196bf5462eee2445f359480d759a662d1 Mon Sep 17 00:00:00 2001 From: Pete LePage Date: Tue, 13 Aug 2024 10:25:40 -0400 Subject: [PATCH 3/3] Remove deprecated & add builtins --- features/regexp.yml | 42 +++++++++++++------- features/regexp.yml.dist | 83 +++++++++++++++++++++++++--------------- 2 files changed, 80 insertions(+), 45 deletions(-) diff --git a/features/regexp.yml b/features/regexp.yml index c8e4ac5a7e3..36e69da1708 100644 --- a/features/regexp.yml +++ b/features/regexp.yml @@ -5,8 +5,12 @@ status: compute_from: javascript.builtins.RegExp compat_features: - javascript.builtins.RegExp - - javascript.builtins.RegExp.RegExp - - javascript.builtins.RegExp.compile + - javascript.builtins.RegExp.@@match + - javascript.builtins.RegExp.@@matchAll + - javascript.builtins.RegExp.@@replace + - javascript.builtins.RegExp.@@search + - javascript.builtins.RegExp.@@species + - javascript.builtins.RegExp.@@split - javascript.builtins.RegExp.dotAll - javascript.builtins.RegExp.exec - javascript.builtins.RegExp.flags @@ -15,15 +19,10 @@ compat_features: - javascript.builtins.RegExp.hasIndices - javascript.builtins.RegExp.ignoreCase - javascript.builtins.RegExp.ignoreCase.prototype_accessor - - javascript.builtins.RegExp.input - javascript.builtins.RegExp.lastIndex - - javascript.builtins.RegExp.lastMatch - - javascript.builtins.RegExp.lastParen - - javascript.builtins.RegExp.leftContext - javascript.builtins.RegExp.multiline - javascript.builtins.RegExp.multiline.prototype_accessor - - javascript.builtins.RegExp.n - - javascript.builtins.RegExp.rightContext + - javascript.builtins.RegExp.RegExp - javascript.builtins.RegExp.source - javascript.builtins.RegExp.source.empty_regex_string - javascript.builtins.RegExp.source.escaping @@ -36,9 +35,24 @@ compat_features: - javascript.builtins.RegExp.toString.escaping - javascript.builtins.RegExp.unicode - javascript.builtins.RegExp.unicodeSets - - javascript.builtins.RegExp.@@match - - javascript.builtins.RegExp.@@matchAll - - javascript.builtins.RegExp.@@replace - - javascript.builtins.RegExp.@@search - - javascript.builtins.RegExp.@@species - - javascript.builtins.RegExp.@@split + - javascript.grammar.regular_expression_literals + - javascript.regular_expressions.backreference + - javascript.regular_expressions.capturing_group + - javascript.regular_expressions.character_class + - javascript.regular_expressions.character_class_escape + - javascript.regular_expressions.character_escape + - javascript.regular_expressions.character_escape.unicode + - javascript.regular_expressions.disjunction + - javascript.regular_expressions.input_boundary_assertion + - javascript.regular_expressions.literal_character + - javascript.regular_expressions.lookahead_assertion + - javascript.regular_expressions.lookbehind_assertion + - javascript.regular_expressions.modifier + - javascript.regular_expressions.named_backreference + - javascript.regular_expressions.named_capturing_group + - javascript.regular_expressions.named_capturing_group.duplicate_named_capturing_groups + - javascript.regular_expressions.non_capturing_group + - javascript.regular_expressions.quantifier + - javascript.regular_expressions.unicode_character_class_escape + - javascript.regular_expressions.wildcard + - javascript.regular_expressions.word_boundary_assertion diff --git a/features/regexp.yml.dist b/features/regexp.yml.dist index bad58d8d6cb..843e8507a47 100644 --- a/features/regexp.yml.dist +++ b/features/regexp.yml.dist @@ -36,6 +36,20 @@ compat_features: - javascript.builtins.RegExp.source - javascript.builtins.RegExp.test - javascript.builtins.RegExp.toString + - javascript.grammar.regular_expression_literals + - javascript.regular_expressions.backreference + - javascript.regular_expressions.capturing_group + - javascript.regular_expressions.character_class + - javascript.regular_expressions.character_class_escape + - javascript.regular_expressions.character_escape + - javascript.regular_expressions.disjunction + - javascript.regular_expressions.input_boundary_assertion + - javascript.regular_expressions.literal_character + - javascript.regular_expressions.lookahead_assertion + - javascript.regular_expressions.non_capturing_group + - javascript.regular_expressions.quantifier + - javascript.regular_expressions.wildcard + - javascript.regular_expressions.word_boundary_assertion # baseline: high # baseline_low_date: 2015-07-29 @@ -129,6 +143,7 @@ compat_features: # safari: "10" # safari_ios: "10" - javascript.builtins.RegExp.unicode + - javascript.regular_expressions.character_escape.unicode # baseline: high # baseline_low_date: 2016-09-20 @@ -224,6 +239,21 @@ compat_features: # safari_ios: "11.3" - javascript.builtins.RegExp.dotAll + # baseline: high + # baseline_low_date: 2020-07-28 + # baseline_high_date: 2023-01-28 + # support: + # chrome: "64" + # chrome_android: "64" + # edge: "79" + # firefox: "78" + # firefox_android: "79" + # safari: "11.1" + # safari_ios: "11.3" + - javascript.regular_expressions.named_backreference + - javascript.regular_expressions.named_capturing_group + - javascript.regular_expressions.unicode_character_class_escape + # baseline: high # baseline_low_date: 2021-09-20 # baseline_high_date: 2024-03-20 @@ -237,6 +267,18 @@ compat_features: # safari_ios: "15" - javascript.builtins.RegExp.hasIndices + # baseline: low + # baseline_low_date: 2023-03-27 + # support: + # chrome: "62" + # chrome_android: "62" + # edge: "79" + # firefox: "78" + # firefox_android: "79" + # safari: "16.4" + # safari_ios: "16.4" + - javascript.regular_expressions.lookbehind_assertion + # baseline: low # baseline_low_date: 2023-09-18 # support: @@ -251,37 +293,16 @@ compat_features: # baseline: false # support: - # chrome: "1" - # chrome_android: "18" - # edge: "12" - # firefox: "1" - # firefox_android: "4" - # safari: "1" - # safari_ios: "1" - - javascript.builtins.RegExp.n - - # baseline: false - # support: - # chrome: "1" - # chrome_android: "18" - # edge: "12" - # firefox: "1" - # firefox_android: "4" - # safari: "3" - # safari_ios: "1" - - javascript.builtins.RegExp.input - - javascript.builtins.RegExp.lastMatch - - javascript.builtins.RegExp.lastParen - - javascript.builtins.RegExp.leftContext - - javascript.builtins.RegExp.rightContext + # chrome: "125" + # chrome_android: "125" + # edge: "125" + # safari: "17" + # safari_ios: "17" + - javascript.regular_expressions.named_capturing_group.duplicate_named_capturing_groups # baseline: false # support: - # chrome: "1" - # chrome_android: "18" - # edge: "12" - # firefox: "1" - # firefox_android: "4" - # safari: "3.1" - # safari_ios: "2" - - javascript.builtins.RegExp.compile + # chrome: "125" + # chrome_android: "125" + # edge: "125" + - javascript.regular_expressions.modifier