regexp_parser 2.10.0 → 2.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -1
  3. data/LICENSE +1 -1
  4. data/Rakefile +5 -3
  5. data/lib/regexp_parser/error.rb +2 -0
  6. data/lib/regexp_parser/expression/base.rb +2 -0
  7. data/lib/regexp_parser/expression/classes/alternation.rb +2 -0
  8. data/lib/regexp_parser/expression/classes/anchor.rb +2 -0
  9. data/lib/regexp_parser/expression/classes/backreference.rb +2 -0
  10. data/lib/regexp_parser/expression/classes/character_set/intersection.rb +2 -0
  11. data/lib/regexp_parser/expression/classes/character_set/range.rb +2 -0
  12. data/lib/regexp_parser/expression/classes/character_set.rb +2 -0
  13. data/lib/regexp_parser/expression/classes/character_type.rb +2 -0
  14. data/lib/regexp_parser/expression/classes/conditional.rb +2 -0
  15. data/lib/regexp_parser/expression/classes/escape_sequence.rb +3 -0
  16. data/lib/regexp_parser/expression/classes/free_space.rb +2 -0
  17. data/lib/regexp_parser/expression/classes/group.rb +2 -0
  18. data/lib/regexp_parser/expression/classes/keep.rb +2 -0
  19. data/lib/regexp_parser/expression/classes/literal.rb +2 -0
  20. data/lib/regexp_parser/expression/classes/posix_class.rb +2 -0
  21. data/lib/regexp_parser/expression/classes/root.rb +2 -0
  22. data/lib/regexp_parser/expression/classes/unicode_property.rb +2 -0
  23. data/lib/regexp_parser/expression/methods/construct.rb +2 -0
  24. data/lib/regexp_parser/expression/methods/escape_sequence_char.rb +2 -0
  25. data/lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb +8 -0
  26. data/lib/regexp_parser/expression/methods/human_name.rb +2 -0
  27. data/lib/regexp_parser/expression/methods/match.rb +2 -0
  28. data/lib/regexp_parser/expression/methods/match_length.rb +2 -0
  29. data/lib/regexp_parser/expression/methods/negative.rb +2 -0
  30. data/lib/regexp_parser/expression/methods/options.rb +2 -0
  31. data/lib/regexp_parser/expression/methods/parts.rb +2 -0
  32. data/lib/regexp_parser/expression/methods/printing.rb +2 -0
  33. data/lib/regexp_parser/expression/methods/referenced_expressions.rb +2 -0
  34. data/lib/regexp_parser/expression/methods/strfregexp.rb +2 -0
  35. data/lib/regexp_parser/expression/methods/tests.rb +2 -0
  36. data/lib/regexp_parser/expression/methods/traverse.rb +2 -0
  37. data/lib/regexp_parser/expression/quantifier.rb +3 -1
  38. data/lib/regexp_parser/expression/sequence.rb +2 -0
  39. data/lib/regexp_parser/expression/sequence_operation.rb +2 -0
  40. data/lib/regexp_parser/expression/shared.rb +6 -3
  41. data/lib/regexp_parser/expression/subexpression.rb +2 -0
  42. data/lib/regexp_parser/expression.rb +2 -0
  43. data/lib/regexp_parser/lexer.rb +2 -0
  44. data/lib/regexp_parser/parser.rb +3 -0
  45. data/lib/regexp_parser/scanner/errors/premature_end_error.rb +2 -0
  46. data/lib/regexp_parser/scanner/errors/scanner_error.rb +2 -0
  47. data/lib/regexp_parser/scanner/errors/validation_error.rb +2 -0
  48. data/lib/regexp_parser/scanner/properties/long.csv +32 -0
  49. data/lib/regexp_parser/scanner/properties/short.csv +12 -0
  50. data/lib/regexp_parser/scanner/scanner.rl +44 -8
  51. data/lib/regexp_parser/scanner.rb +786 -656
  52. data/lib/regexp_parser/syntax/any.rb +2 -0
  53. data/lib/regexp_parser/syntax/base.rb +2 -0
  54. data/lib/regexp_parser/syntax/token/anchor.rb +5 -3
  55. data/lib/regexp_parser/syntax/token/assertion.rb +4 -2
  56. data/lib/regexp_parser/syntax/token/backreference.rb +8 -6
  57. data/lib/regexp_parser/syntax/token/character_set.rb +3 -1
  58. data/lib/regexp_parser/syntax/token/character_type.rb +6 -4
  59. data/lib/regexp_parser/syntax/token/conditional.rb +5 -3
  60. data/lib/regexp_parser/syntax/token/escape.rb +9 -7
  61. data/lib/regexp_parser/syntax/token/group.rb +8 -6
  62. data/lib/regexp_parser/syntax/token/keep.rb +3 -1
  63. data/lib/regexp_parser/syntax/token/meta.rb +4 -2
  64. data/lib/regexp_parser/syntax/token/posix_class.rb +4 -2
  65. data/lib/regexp_parser/syntax/token/quantifier.rb +8 -6
  66. data/lib/regexp_parser/syntax/token/unicode_property.rb +134 -74
  67. data/lib/regexp_parser/syntax/token/virtual.rb +5 -3
  68. data/lib/regexp_parser/syntax/token.rb +5 -3
  69. data/lib/regexp_parser/syntax/version_lookup.rb +4 -2
  70. data/lib/regexp_parser/syntax/versions/1.8.6.rb +2 -0
  71. data/lib/regexp_parser/syntax/versions/1.9.1.rb +2 -0
  72. data/lib/regexp_parser/syntax/versions/1.9.3.rb +2 -0
  73. data/lib/regexp_parser/syntax/versions/2.0.0.rb +2 -0
  74. data/lib/regexp_parser/syntax/versions/2.2.0.rb +2 -0
  75. data/lib/regexp_parser/syntax/versions/2.3.0.rb +2 -0
  76. data/lib/regexp_parser/syntax/versions/2.4.0.rb +2 -0
  77. data/lib/regexp_parser/syntax/versions/2.4.1.rb +2 -0
  78. data/lib/regexp_parser/syntax/versions/2.5.0.rb +2 -0
  79. data/lib/regexp_parser/syntax/versions/2.6.0.rb +2 -0
  80. data/lib/regexp_parser/syntax/versions/2.6.2.rb +2 -0
  81. data/lib/regexp_parser/syntax/versions/2.6.3.rb +2 -0
  82. data/lib/regexp_parser/syntax/versions/3.1.0.rb +2 -0
  83. data/lib/regexp_parser/syntax/versions/3.2.0.rb +2 -0
  84. data/lib/regexp_parser/syntax/versions/3.5.0.rb +4 -0
  85. data/lib/regexp_parser/syntax/versions/4.0.0.rb +4 -0
  86. data/lib/regexp_parser/syntax/versions.rb +2 -0
  87. data/lib/regexp_parser/syntax.rb +2 -0
  88. data/lib/regexp_parser/token.rb +2 -0
  89. data/lib/regexp_parser/version.rb +3 -1
  90. data/lib/regexp_parser.rb +2 -0
  91. data/regexp_parser.gemspec +2 -0
  92. metadata +5 -6
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Regexp::Syntax
2
4
  # A syntax that always returns true, passing all tokens as implemented. This
3
5
  # is useful during development, testing, and should be useful for some types
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Regexp::Syntax
2
4
  class NotImplementedError < Regexp::Syntax::SyntaxError
3
5
  def initialize(syntax, type, token)
@@ -1,10 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Regexp::Syntax
2
4
  module Token
3
5
  module Anchor
4
- Basic = %i[bol eol]
6
+ Basic = %i[bol eol].freeze
5
7
  Extended = Basic + %i[word_boundary nonword_boundary]
6
- String = %i[bos eos eos_ob_eol]
7
- MatchStart = %i[match_start]
8
+ String = %i[bos eos eos_ob_eol].freeze
9
+ MatchStart = %i[match_start].freeze
8
10
 
9
11
  All = Extended + String + MatchStart
10
12
  Type = :anchor
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Regexp::Syntax
2
4
  module Token
3
5
  module Assertion
4
- Lookahead = %i[lookahead nlookahead]
5
- Lookbehind = %i[lookbehind nlookbehind]
6
+ Lookahead = %i[lookahead nlookahead].freeze
7
+ Lookbehind = %i[lookbehind nlookbehind].freeze
6
8
 
7
9
  All = Lookahead + Lookbehind
8
10
  Type = :assertion
@@ -1,12 +1,14 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Regexp::Syntax
2
4
  module Token
3
5
  module Backreference
4
- Plain = %i[number]
5
- NumberRef = %i[number_ref number_rel_ref]
6
+ Plain = %i[number].freeze
7
+ NumberRef = %i[number_ref number_rel_ref].freeze
6
8
  Number = Plain + NumberRef
7
- Name = %i[name_ref]
9
+ Name = %i[name_ref].freeze
8
10
 
9
- RecursionLevel = %i[name_recursion_ref number_recursion_ref]
11
+ RecursionLevel = %i[name_recursion_ref number_recursion_ref].freeze
10
12
 
11
13
  V1_8_6 = Plain
12
14
 
@@ -18,8 +20,8 @@ module Regexp::Syntax
18
20
 
19
21
  # Type is the same as Backreference so keeping it here, for now.
20
22
  module SubexpressionCall
21
- Name = %i[name_call]
22
- Number = %i[number_call number_rel_call]
23
+ Name = %i[name_call].freeze
24
+ Number = %i[number_call number_rel_call].freeze
23
25
 
24
26
  All = Name + Number
25
27
  end
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Regexp::Syntax
2
4
  module Token
3
5
  module CharacterSet
4
- Basic = %i[open close negate range]
6
+ Basic = %i[open close negate range].freeze
5
7
  Extended = Basic + %i[intersection]
6
8
 
7
9
  All = Extended
@@ -1,11 +1,13 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Regexp::Syntax
2
4
  module Token
3
5
  module CharacterType
4
- Basic = []
5
- Extended = %i[digit nondigit space nonspace word nonword]
6
- Hex = %i[hex nonhex]
6
+ Basic = [].freeze
7
+ Extended = %i[digit nondigit space nonspace word nonword].freeze
8
+ Hex = %i[hex nonhex].freeze
7
9
 
8
- Clustered = %i[linebreak xgrapheme]
10
+ Clustered = %i[linebreak xgrapheme].freeze
9
11
 
10
12
  All = Basic + Extended + Hex + Clustered
11
13
  Type = :type
@@ -1,10 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Regexp::Syntax
2
4
  module Token
3
5
  module Conditional
4
- Delimiters = %i[open close]
6
+ Delimiters = %i[open close].freeze
5
7
 
6
- Condition = %i[condition_open condition condition_close]
7
- Separator = %i[separator]
8
+ Condition = %i[condition_open condition condition_close].freeze
9
+ Separator = %i[separator].freeze
8
10
 
9
11
  All = Conditional::Delimiters + Conditional::Condition + Conditional::Separator
10
12
 
@@ -1,25 +1,27 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Regexp::Syntax
2
4
  module Token
3
5
  module Escape
4
- Basic = %i[backslash literal]
6
+ Basic = %i[backslash literal].freeze
5
7
 
6
- Control = %i[control meta_sequence]
8
+ Control = %i[control meta_sequence].freeze
7
9
 
8
10
  ASCII = %i[bell backspace escape form_feed newline carriage
9
- tab vertical_tab]
11
+ tab vertical_tab].freeze
10
12
 
11
- Unicode = %i[codepoint codepoint_list]
13
+ Unicode = %i[codepoint codepoint_list].freeze
12
14
 
13
15
  Meta = %i[dot alternation
14
16
  zero_or_one zero_or_more one_or_more
15
17
  bol eol
16
18
  group_open group_close
17
19
  interval_open interval_close
18
- set_open set_close]
20
+ set_open set_close].freeze
19
21
 
20
- Hex = %i[hex]
22
+ Hex = %i[hex utf8_hex].freeze
21
23
 
22
- Octal = %i[octal]
24
+ Octal = %i[octal].freeze
23
25
 
24
26
  All = Basic + Control + ASCII + Unicode + Meta + Hex + Octal
25
27
  Type = :escape
@@ -1,18 +1,20 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Regexp::Syntax
2
4
  module Token
3
5
  module Group
4
- Basic = %i[capture close]
6
+ Basic = %i[capture close].freeze
5
7
  Extended = Basic + %i[options options_switch]
6
8
 
7
- Named = %i[named]
8
- Atomic = %i[atomic]
9
- Passive = %i[passive]
10
- Comment = %i[comment]
9
+ Named = %i[named].freeze
10
+ Atomic = %i[atomic].freeze
11
+ Passive = %i[passive].freeze
12
+ Comment = %i[comment].freeze
11
13
 
12
14
  V1_8_6 = Group::Extended + Group::Named + Group::Atomic +
13
15
  Group::Passive + Group::Comment
14
16
 
15
- V2_4_1 = %i[absence]
17
+ V2_4_1 = %i[absence].freeze
16
18
 
17
19
  All = V1_8_6 + V2_4_1
18
20
  Type = :group
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Regexp::Syntax
2
4
  module Token
3
5
  module Keep
4
- Mark = %i[mark]
6
+ Mark = %i[mark].freeze
5
7
 
6
8
  All = Mark
7
9
  Type = :keep
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Regexp::Syntax
2
4
  module Token
3
5
  module Meta
4
- Basic = %i[dot]
5
- Alternation = %i[alternation]
6
+ Basic = %i[dot].freeze
7
+ Alternation = %i[alternation].freeze
6
8
  Extended = Basic + Alternation
7
9
 
8
10
  All = Extended
@@ -1,10 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Regexp::Syntax
2
4
  module Token
3
5
  module PosixClass
4
6
  Standard = %i[alnum alpha blank cntrl digit graph
5
- lower print punct space upper xdigit]
7
+ lower print punct space upper xdigit].freeze
6
8
 
7
- Extensions = %i[ascii word]
9
+ Extensions = %i[ascii word].freeze
8
10
 
9
11
  All = Standard + Extensions
10
12
  Type = :posixclass
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Regexp::Syntax
2
4
  module Token
3
5
  module Quantifier
@@ -5,23 +7,23 @@ module Regexp::Syntax
5
7
  zero_or_one
6
8
  zero_or_more
7
9
  one_or_more
8
- ]
10
+ ].freeze
9
11
 
10
12
  Reluctant = %i[
11
13
  zero_or_one_reluctant
12
14
  zero_or_more_reluctant
13
15
  one_or_more_reluctant
14
- ]
16
+ ].freeze
15
17
 
16
18
  Possessive = %i[
17
19
  zero_or_one_possessive
18
20
  zero_or_more_possessive
19
21
  one_or_more_possessive
20
- ]
22
+ ].freeze
21
23
 
22
- Interval = %i[interval]
23
- IntervalReluctant = %i[interval_reluctant]
24
- IntervalPossessive = %i[interval_possessive]
24
+ Interval = %i[interval].freeze
25
+ IntervalReluctant = %i[interval_reluctant].freeze
26
+ IntervalPossessive = %i[interval_possessive].freeze
25
27
 
26
28
  IntervalAll = Interval + IntervalReluctant + IntervalPossessive
27
29
 
@@ -1,37 +1,42 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Regexp::Syntax
2
4
  module Token
3
5
  module UnicodeProperty
4
- all = proc { |name| constants.grep(/#{name}/).flat_map(&method(:const_get)) }
6
+ def self.all(name)
7
+ constants.grep(/#{name}/).flat_map(&method(:const_get)).freeze
8
+ end
9
+ private_class_method :all
5
10
 
6
11
  CharType_V1_9_0 = %i[alnum alpha ascii blank cntrl digit graph
7
- lower print punct space upper word xdigit]
12
+ lower print punct space upper word xdigit].freeze
8
13
 
9
- CharType_V2_5_0 = %i[xposixpunct]
14
+ CharType_V2_5_0 = %i[xposixpunct].freeze
10
15
 
11
- POSIX = %i[any assigned newline]
16
+ POSIX = %i[any assigned newline].freeze
12
17
 
13
18
  module Category
14
19
  Letter = %i[letter uppercase_letter lowercase_letter
15
- titlecase_letter modifier_letter other_letter]
20
+ titlecase_letter modifier_letter other_letter].freeze
16
21
 
17
22
  Mark = %i[mark nonspacing_mark spacing_mark
18
- enclosing_mark]
23
+ enclosing_mark].freeze
19
24
 
20
25
  Number = %i[number decimal_number letter_number
21
- other_number]
26
+ other_number].freeze
22
27
 
23
28
  Punctuation = %i[punctuation connector_punctuation dash_punctuation
24
29
  open_punctuation close_punctuation initial_punctuation
25
- final_punctuation other_punctuation]
30
+ final_punctuation other_punctuation].freeze
26
31
 
27
32
  Symbol = %i[symbol math_symbol currency_symbol
28
- modifier_symbol other_symbol]
33
+ modifier_symbol other_symbol].freeze
29
34
 
30
35
  Separator = %i[separator space_separator line_separator
31
- paragraph_separator]
36
+ paragraph_separator].freeze
32
37
 
33
38
  Codepoint = %i[other control format
34
- surrogate private_use unassigned]
39
+ surrogate private_use unassigned].freeze
35
40
 
36
41
  All = Letter + Mark + Number + Punctuation +
37
42
  Symbol + Separator + Codepoint
@@ -39,29 +44,33 @@ module Regexp::Syntax
39
44
 
40
45
  Age_V1_9_3 = %i[age=1.1 age=2.0 age=2.1 age=3.0 age=3.1
41
46
  age=3.2 age=4.0 age=4.1 age=5.0 age=5.1
42
- age=5.2 age=6.0]
47
+ age=5.2 age=6.0].freeze
48
+
49
+ Age_V2_0_0 = %i[age=6.1].freeze
43
50
 
44
- Age_V2_0_0 = %i[age=6.1]
51
+ Age_V2_2_0 = %i[age=6.2 age=6.3 age=7.0].freeze
45
52
 
46
- Age_V2_2_0 = %i[age=6.2 age=6.3 age=7.0]
53
+ Age_V2_3_0 = %i[age=8.0].freeze
47
54
 
48
- Age_V2_3_0 = %i[age=8.0]
55
+ Age_V2_4_0 = %i[age=9.0].freeze
49
56
 
50
- Age_V2_4_0 = %i[age=9.0]
57
+ Age_V2_5_0 = %i[age=10.0].freeze
51
58
 
52
- Age_V2_5_0 = %i[age=10.0]
59
+ Age_V2_6_0 = %i[age=11.0].freeze
53
60
 
54
- Age_V2_6_0 = %i[age=11.0]
61
+ Age_V2_6_2 = %i[age=12.0].freeze
55
62
 
56
- Age_V2_6_2 = %i[age=12.0]
63
+ Age_V2_6_3 = %i[age=12.1].freeze
57
64
 
58
- Age_V2_6_3 = %i[age=12.1]
65
+ Age_V3_1_0 = %i[age=13.0].freeze
59
66
 
60
- Age_V3_1_0 = %i[age=13.0]
67
+ Age_V3_2_0 = %i[age=14.0 age=15.0].freeze
61
68
 
62
- Age_V3_2_0 = %i[age=14.0 age=15.0]
69
+ Age_V3_5_0 = %i[age=15.1].freeze
63
70
 
64
- Age = all[:Age_V]
71
+ Age_V4_0_0 = %i[age=16.0 age=17.0].freeze
72
+
73
+ Age = all(:Age_V)
65
74
 
66
75
  Derived_V1_9_0 = %i[
67
76
  ascii_hex_digit
@@ -115,22 +124,32 @@ module Regexp::Syntax
115
124
  white_space
116
125
  xid_start
117
126
  xid_continue
118
- ]
127
+ ].freeze
119
128
 
120
129
  Derived_V2_0_0 = %i[
121
130
  cased_letter
122
131
  combining_mark
123
- ]
132
+ ].freeze
124
133
 
125
134
  Derived_V2_4_0 = %i[
126
135
  prepended_concatenation_mark
127
- ]
136
+ ].freeze
128
137
 
129
138
  Derived_V2_5_0 = %i[
130
139
  regional_indicator
140
+ ].freeze
141
+
142
+ Derived_V3_5_0 = %i[
143
+ id_compat_math_continue
144
+ id_compat_math_start
145
+ ids_unary_operator
146
+ ].freeze
147
+
148
+ Derived_V4_0_0 = %i[
149
+ modifier_combining_mark
131
150
  ]
132
151
 
133
- Derived = all[:Derived_V]
152
+ Derived = all(:Derived_V)
134
153
 
135
154
  Script_V1_9_0 = %i[
136
155
  arabic
@@ -226,13 +245,13 @@ module Regexp::Syntax
226
245
  inherited
227
246
  common
228
247
  unknown
229
- ]
248
+ ].freeze
230
249
 
231
250
  Script_V1_9_3 = %i[
232
251
  brahmi
233
252
  batak
234
253
  mandaic
235
- ]
254
+ ].freeze
236
255
 
237
256
  Script_V2_0_0 = %i[
238
257
  chakma
@@ -242,7 +261,7 @@ module Regexp::Syntax
242
261
  sharada
243
262
  sora_sompeng
244
263
  takri
245
- ]
264
+ ].freeze
246
265
 
247
266
  Script_V2_2_0 = %i[
248
267
  caucasian_albanian
@@ -268,7 +287,7 @@ module Regexp::Syntax
268
287
  khudawadi
269
288
  tirhuta
270
289
  warang_citi
271
- ]
290
+ ].freeze
272
291
 
273
292
  Script_V2_3_0 = %i[
274
293
  ahom
@@ -277,7 +296,7 @@ module Regexp::Syntax
277
296
  multani
278
297
  old_hungarian
279
298
  signwriting
280
- ]
299
+ ].freeze
281
300
 
282
301
  Script_V2_4_0 = %i[
283
302
  adlam
@@ -286,14 +305,14 @@ module Regexp::Syntax
286
305
  newa
287
306
  osage
288
307
  tangut
289
- ]
308
+ ].freeze
290
309
 
291
310
  Script_V2_5_0 = %i[
292
311
  masaram_gondi
293
312
  nushu
294
313
  soyombo
295
314
  zanabazar_square
296
- ]
315
+ ].freeze
297
316
 
298
317
  Script_V2_6_0 = %i[
299
318
  dogra
@@ -303,21 +322,21 @@ module Regexp::Syntax
303
322
  medefaidrin
304
323
  old_sogdian
305
324
  sogdian
306
- ]
325
+ ].freeze
307
326
 
308
327
  Script_V2_6_2 = %i[
309
328
  elymaic
310
329
  nandinagari
311
330
  nyiakeng_puachue_hmong
312
331
  wancho
313
- ]
332
+ ].freeze
314
333
 
315
334
  Script_V3_1_0 = %i[
316
335
  chorasmian
317
336
  dives_akuru
318
337
  khitan_small_script
319
338
  yezidi
320
- ]
339
+ ].freeze
321
340
 
322
341
  Script_V3_2_0 = %i[
323
342
  cypro_minoan
@@ -327,9 +346,23 @@ module Regexp::Syntax
327
346
  tangsa
328
347
  toto
329
348
  vithkuqi
330
- ]
331
-
332
- Script = all[:Script_V]
349
+ ].freeze
350
+
351
+ Script_V4_0_0 = %i[
352
+ beria_erfe
353
+ garay
354
+ gurung_khema
355
+ kirat_rai
356
+ ol_onal
357
+ sidetic
358
+ sunuwar
359
+ tai_yo
360
+ todhri
361
+ tolong_siki
362
+ tulu_tigalari
363
+ ].freeze
364
+
365
+ Script = all(:Script_V)
333
366
 
334
367
  UnicodeBlock_V1_9_0 = %i[
335
368
  in_alphabetic_presentation_forms
@@ -428,7 +461,7 @@ module Regexp::Syntax
428
461
  in_yi_radicals
429
462
  in_yi_syllables
430
463
  in_yijing_hexagram_symbols
431
- ]
464
+ ].freeze
432
465
 
433
466
  UnicodeBlock_V2_0_0 = %i[
434
467
  in_aegean_numbers
@@ -556,7 +589,7 @@ module Regexp::Syntax
556
589
  in_variation_selectors_supplement
557
590
  in_vedic_extensions
558
591
  in_vertical_forms
559
- ]
592
+ ].freeze
560
593
 
561
594
  UnicodeBlock_V2_2_0 = %i[
562
595
  in_bassa_vah
@@ -591,7 +624,7 @@ module Regexp::Syntax
591
624
  in_supplemental_arrows_c
592
625
  in_tirhuta
593
626
  in_warang_citi
594
- ]
627
+ ].freeze
595
628
 
596
629
  UnicodeBlock_V2_3_0 = %i[
597
630
  in_ahom
@@ -604,7 +637,7 @@ module Regexp::Syntax
604
637
  in_old_hungarian
605
638
  in_supplemental_symbols_and_pictographs
606
639
  in_sutton_signwriting
607
- ]
640
+ ].freeze
608
641
 
609
642
  UnicodeBlock_V2_4_0 = %i[
610
643
  in_adlam
@@ -618,7 +651,7 @@ module Regexp::Syntax
618
651
  in_osage
619
652
  in_tangut
620
653
  in_tangut_components
621
- ]
654
+ ].freeze
622
655
 
623
656
  UnicodeBlock_V2_5_0 = %i[
624
657
  in_cjk_unified_ideographs_extension_f
@@ -628,7 +661,7 @@ module Regexp::Syntax
628
661
  in_soyombo
629
662
  in_syriac_supplement
630
663
  in_zanabazar_square
631
- ]
664
+ ].freeze
632
665
 
633
666
  UnicodeBlock_V2_6_0 = %i[
634
667
  in_chess_symbols
@@ -642,7 +675,7 @@ module Regexp::Syntax
642
675
  in_medefaidrin
643
676
  in_old_sogdian
644
677
  in_sogdian
645
- ]
678
+ ].freeze
646
679
 
647
680
  UnicodeBlock_V2_6_2 = %i[
648
681
  in_egyptian_hieroglyph_format_controls
@@ -654,7 +687,7 @@ module Regexp::Syntax
654
687
  in_symbols_and_pictographs_extended_a
655
688
  in_tamil_supplement
656
689
  in_wancho
657
- ]
690
+ ].freeze
658
691
 
659
692
  UnicodeBlock_V3_1_0 = %i[
660
693
  in_chorasmian
@@ -665,7 +698,7 @@ module Regexp::Syntax
665
698
  in_symbols_for_legacy_computing
666
699
  in_tangut_supplement
667
700
  in_yezidi
668
- ]
701
+ ].freeze
669
702
 
670
703
  UnicodeBlock_V3_2_0 = %i[
671
704
  in_arabic_extended_b
@@ -687,9 +720,34 @@ module Regexp::Syntax
687
720
  in_unified_canadian_aboriginal_syllabics_extended_a
688
721
  in_vithkuqi
689
722
  in_znamenny_musical_notation
690
- ]
691
-
692
- UnicodeBlock = all[:UnicodeBlock_V]
723
+ ].freeze
724
+
725
+ UnicodeBlock_V3_5_0 = %i[
726
+ in_cjk_unified_ideographs_extension_i
727
+ ].freeze
728
+
729
+ UnicodeBlock_V4_0_0 = %i[
730
+ in_beria_erfe
731
+ in_cjk_unified_ideographs_extension_j
732
+ in_egyptian_hieroglyphs_extended_a
733
+ in_garay
734
+ in_gurung_khema
735
+ in_kirat_rai
736
+ in_miscellaneous_symbols_supplement
737
+ in_myanmar_extended_c
738
+ in_ol_onal
739
+ in_sharada_supplement
740
+ in_sidetic
741
+ in_sunuwar
742
+ in_symbols_for_legacy_computing_supplement
743
+ in_tai_yo
744
+ in_tangut_components_supplement
745
+ in_todhri
746
+ in_tolong_siki
747
+ in_tulu_tigalari
748
+ ].freeze
749
+
750
+ UnicodeBlock = all(:UnicodeBlock_V)
693
751
 
694
752
  Emoji_V2_5_0 = %i[
695
753
  emoji
@@ -697,11 +755,11 @@ module Regexp::Syntax
697
755
  emoji_modifier
698
756
  emoji_modifier_base
699
757
  emoji_presentation
700
- ]
758
+ ].freeze
701
759
 
702
760
  Emoji_V2_6_0 = %i[
703
761
  extended_pictographic
704
- ]
762
+ ].freeze
705
763
 
706
764
  Enumerated_V2_4_0 = %i[
707
765
  grapheme_cluster_break=control
@@ -717,26 +775,28 @@ module Regexp::Syntax
717
775
  grapheme_cluster_break=t
718
776
  grapheme_cluster_break=v
719
777
  grapheme_cluster_break=zwj
720
- ]
721
-
722
- Enumerated = all[:Enumerated_V]
723
-
724
- Emoji = all[:Emoji_V]
725
-
726
- V1_9_0 = Category::All + POSIX + all[:V1_9_0]
727
- V1_9_3 = all[:V1_9_3]
728
- V2_0_0 = all[:V2_0_0]
729
- V2_2_0 = all[:V2_2_0]
730
- V2_3_0 = all[:V2_3_0]
731
- V2_4_0 = all[:V2_4_0]
732
- V2_5_0 = all[:V2_5_0]
733
- V2_6_0 = all[:V2_6_0]
734
- V2_6_2 = all[:V2_6_2]
735
- V2_6_3 = all[:V2_6_3]
736
- V3_1_0 = all[:V3_1_0]
737
- V3_2_0 = all[:V3_2_0]
738
-
739
- All = all[/^V\d+_\d+_\d+$/]
778
+ ].freeze
779
+
780
+ Enumerated = all(:Enumerated_V)
781
+
782
+ Emoji = all(:Emoji_V)
783
+
784
+ V1_9_0 = Category::All + POSIX + all(:V1_9_0)
785
+ V1_9_3 = all(:V1_9_3)
786
+ V2_0_0 = all(:V2_0_0)
787
+ V2_2_0 = all(:V2_2_0)
788
+ V2_3_0 = all(:V2_3_0)
789
+ V2_4_0 = all(:V2_4_0)
790
+ V2_5_0 = all(:V2_5_0)
791
+ V2_6_0 = all(:V2_6_0)
792
+ V2_6_2 = all(:V2_6_2)
793
+ V2_6_3 = all(:V2_6_3)
794
+ V3_1_0 = all(:V3_1_0)
795
+ V3_2_0 = all(:V3_2_0)
796
+ V3_5_0 = all(:V3_5_0)
797
+ V4_0_0 = all(:V4_0_0)
798
+
799
+ All = all(/^V\d+_\d+_\d+$/)
740
800
 
741
801
  Type = :property
742
802
  NonType = :nonproperty