mutant 0.11.5 → 0.11.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 162764a3b1bf798bc41ada84a438c93ff262c1e470bd03ca4577667577f3d12d
4
- data.tar.gz: 8949ae97fb1af8e30393518cac0c2affd0b962539c048db30ce61ab34ba6ad4c
3
+ metadata.gz: 8f0916d0fcbcaf139a30b5f323fa1c259c63527e4b2ef490f87bbf040a5a1462
4
+ data.tar.gz: a24c306ae706361b4cd7ced9836d3e2124ef27b88ddc77f55f41b10a43b04056
5
5
  SHA512:
6
- metadata.gz: 8328c5f209244d2cee86828cc9923ddf649ccc7fa2ffd921b484468c77b8d8cf0c23ad58605286c25b9a58f98c92a8212eec2641cb00ead46dfaba92aef865f3
7
- data.tar.gz: 415018adeaea5c01d3ecbda5a8896e66de1facb819336093859cb5dc1b45d70e99e01bae63b355930dfffa22ad9bb23092aee97b14fff0fbe188b817a52783d6
6
+ metadata.gz: 344a97dca1c196102a2ff67e466a82eced65ca0f993f377bd732de46d93c67239704b86ffb352793a211a806c8c9ade8d7445521a166f33b10a2b2eced9cd993
7
+ data.tar.gz: a7da63e824aa6153471b7ab1845748ff90acfc1247355df81147df3d92e23991b6d720374b375647bb1e10878c6112799f3493bccca40f91c9f3089ea112eb54
@@ -36,13 +36,44 @@ module Mutant
36
36
  class ASTToExpression < Transformer::ASTToExpression
37
37
  include LookupTable
38
38
 
39
+ properties = ::Regexp::Syntax
40
+ .version_class("ruby/#{RUBY_VERSION}")
41
+ .features.fetch(:property)
42
+ .flat_map do |property|
43
+ property_specifier = "\\p{#{property}}"
44
+ non_property_specifier = "\\P{#{property}}"
45
+
46
+ property_regex = /#{property_specifier}/
47
+ non_property_regex = /#{non_property_specifier}/
48
+
49
+ [
50
+ [
51
+ :"regexp_#{property}_property",
52
+ [
53
+ :property,
54
+ property.to_sym,
55
+ property_specifier
56
+ ],
57
+ ::Regexp::Parser.parse(property_regex).expressions.first.class
58
+ ],
59
+ [
60
+ :"regexp_#{property}_nonproperty",
61
+ [
62
+ :nonproperty,
63
+ property.to_sym,
64
+ non_property_specifier
65
+ ],
66
+ ::Regexp::Parser.parse(non_property_regex).expressions.first.class
67
+ ]
68
+ ]
69
+ end
70
+
39
71
  # rubocop:disable Layout/LineLength
40
72
  TABLE = Table.create(
73
+ *properties,
41
74
  [:regexp_alnum_posixclass, [:posixclass, :alnum, '[:alnum:]'], ::Regexp::Expression::PosixClass],
42
75
  [:regexp_alpha_posixclass, [:posixclass, :alpha, '[:alpha:]'], ::Regexp::Expression::PosixClass],
43
- [:regexp_alpha_property, [:property, :alpha, '\p{Alpha}'], ::Regexp::Expression::UnicodeProperty::Alpha],
44
76
  [:regexp_alternation_escape, [:escape, :alternation, '\|'], ::Regexp::Expression::EscapeSequence::Literal],
45
- [:regexp_arabic_property, [:property, :arabic, '\p{Arabic}'], ::Regexp::Expression::UnicodeProperty::Script],
46
77
  [:regexp_ascii_posixclass, [:posixclass, :ascii, '[:ascii:]'], ::Regexp::Expression::PosixClass],
47
78
  [:regexp_backspace_escape, [:escape, :backspace, '\b'], ::Regexp::Expression::EscapeSequence::Backspace],
48
79
  [:regexp_bell_escape, [:escape, :bell, '\a'], ::Regexp::Expression::EscapeSequence::Literal],
@@ -65,16 +96,10 @@ module Mutant
65
96
  [:regexp_graph_posixclass, [:posixclass, :graph, '[:graph:]'], ::Regexp::Expression::PosixClass],
66
97
  [:regexp_group_close_escape, [:escape, :group_close, '\)'], ::Regexp::Expression::EscapeSequence::Literal],
67
98
  [:regexp_group_open_escape, [:escape, :group_open, '\('], ::Regexp::Expression::EscapeSequence::Literal],
68
- [:regexp_han_property, [:property, :han, '\p{Han}'], ::Regexp::Expression::UnicodeProperty::Script],
69
- [:regexp_hangul_property, [:property, :hangul, '\p{Hangul}'], ::Regexp::Expression::UnicodeProperty::Script],
70
99
  [:regexp_hex_type, [:type, :hex, '\h'], ::Regexp::Expression::CharacterType::Hex],
71
- [:regexp_hiragana_property, [:property, :hiragana, '\p{Hiragana}'], ::Regexp::Expression::UnicodeProperty::Script],
72
100
  [:regexp_interval_close_escape, [:escape, :interval_close, '\}'], ::Regexp::Expression::EscapeSequence::Literal],
73
101
  [:regexp_interval_open_escape, [:escape, :interval_open, '\{'], ::Regexp::Expression::EscapeSequence::Literal],
74
- [:regexp_katakana_property, [:property, :katakana, '\p{Katakana}'], ::Regexp::Expression::UnicodeProperty::Script],
75
- [:regexp_letter_property, [:property, :letter, '\p{L}'], ::Regexp::Expression::UnicodeProperty::Letter::Any],
76
102
  [:regexp_linebreak_type, [:type, :linebreak, '\R'], ::Regexp::Expression::CharacterType::Linebreak],
77
- [:regexp_latin_property, [:property, :latin, '\p{Latin}'], ::Regexp::Expression::UnicodeProperty::Script],
78
103
  [:regexp_lower_posixclass, [:posixclass, :lower, '[:lower:]'], ::Regexp::Expression::PosixClass],
79
104
  [:regexp_mark_keep, [:keep, :mark, '\K'], ::Regexp::Expression::Keep::Mark],
80
105
  [:regexp_match_start_anchor, [:anchor, :match_start, '\\G'], ::Regexp::Expression::Anchor::MatchStart],
@@ -86,10 +111,8 @@ module Mutant
86
111
  [:regexp_nonword_type, [:type, :nonword, '\W'], ::Regexp::Expression::CharacterType::NonWord],
87
112
  [:regexp_one_or_more_escape, [:escape, :one_or_more, '\+'], ::Regexp::Expression::EscapeSequence::Literal],
88
113
  [:regexp_print_nonposixclass, [:nonposixclass, :print, '[:^print:]'], ::Regexp::Expression::PosixClass],
89
- [:regexp_print_nonproperty, [:nonproperty, :print, '\P{Print}'], ::Regexp::Expression::UnicodeProperty::Print],
90
114
  [:regexp_print_posixclass, [:posixclass, :print, '[:print:]'], ::Regexp::Expression::PosixClass],
91
115
  [:regexp_print_posixclass, [:posixclass, :print, '[:print:]'], ::Regexp::Expression::PosixClass],
92
- [:regexp_print_property, [:property, :print, '\p{Print}'], ::Regexp::Expression::UnicodeProperty::Print],
93
116
  [:regexp_punct_posixclass, [:posixclass, :punct, '[:punct:]'], ::Regexp::Expression::PosixClass],
94
117
  [:regexp_set_close_escape, [:escape, :set_close, '\]'], ::Regexp::Expression::EscapeSequence::Literal],
95
118
  [:regexp_set_open_escape, [:escape, :set_open, '\['], ::Regexp::Expression::EscapeSequence::Literal],