regexp_parser 2.2.0 → 2.2.1

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 (88) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +14 -2
  3. data/LICENSE +1 -1
  4. data/README.md +2 -2
  5. data/Rakefile +5 -8
  6. data/lib/regexp_parser/expression/classes/escape_sequence.rb +12 -7
  7. data/lib/regexp_parser/expression/methods/strfregexp.rb +1 -1
  8. data/lib/regexp_parser/scanner/properties/long.csv +604 -0
  9. data/lib/regexp_parser/scanner/properties/short.csv +242 -0
  10. data/lib/regexp_parser/scanner/scanner.rl +6 -4
  11. data/lib/regexp_parser/scanner.rb +126 -124
  12. data/lib/regexp_parser/syntax/base.rb +3 -5
  13. data/lib/regexp_parser/syntax/token/backreference.rb +7 -2
  14. data/lib/regexp_parser/syntax/versions/1.8.6.rb +2 -2
  15. data/lib/regexp_parser/syntax/versions/1.9.1.rb +1 -1
  16. data/lib/regexp_parser/version.rb +1 -1
  17. data/regexp_parser.gemspec +20 -22
  18. metadata +11 -143
  19. data/lib/regexp_parser/scanner/properties/long.yml +0 -607
  20. data/lib/regexp_parser/scanner/properties/short.yml +0 -245
  21. data/spec/expression/base_spec.rb +0 -104
  22. data/spec/expression/clone_spec.rb +0 -152
  23. data/spec/expression/conditional_spec.rb +0 -89
  24. data/spec/expression/free_space_spec.rb +0 -27
  25. data/spec/expression/methods/match_length_spec.rb +0 -161
  26. data/spec/expression/methods/match_spec.rb +0 -25
  27. data/spec/expression/methods/strfregexp_spec.rb +0 -224
  28. data/spec/expression/methods/tests_spec.rb +0 -99
  29. data/spec/expression/methods/traverse_spec.rb +0 -161
  30. data/spec/expression/options_spec.rb +0 -128
  31. data/spec/expression/subexpression_spec.rb +0 -50
  32. data/spec/expression/to_h_spec.rb +0 -26
  33. data/spec/expression/to_s_spec.rb +0 -108
  34. data/spec/lexer/all_spec.rb +0 -22
  35. data/spec/lexer/conditionals_spec.rb +0 -53
  36. data/spec/lexer/delimiters_spec.rb +0 -68
  37. data/spec/lexer/escapes_spec.rb +0 -14
  38. data/spec/lexer/keep_spec.rb +0 -10
  39. data/spec/lexer/literals_spec.rb +0 -64
  40. data/spec/lexer/nesting_spec.rb +0 -99
  41. data/spec/lexer/refcalls_spec.rb +0 -60
  42. data/spec/parser/all_spec.rb +0 -43
  43. data/spec/parser/alternation_spec.rb +0 -88
  44. data/spec/parser/anchors_spec.rb +0 -17
  45. data/spec/parser/conditionals_spec.rb +0 -179
  46. data/spec/parser/errors_spec.rb +0 -30
  47. data/spec/parser/escapes_spec.rb +0 -133
  48. data/spec/parser/free_space_spec.rb +0 -130
  49. data/spec/parser/groups_spec.rb +0 -108
  50. data/spec/parser/keep_spec.rb +0 -6
  51. data/spec/parser/options_spec.rb +0 -28
  52. data/spec/parser/posix_classes_spec.rb +0 -8
  53. data/spec/parser/properties_spec.rb +0 -117
  54. data/spec/parser/quantifiers_spec.rb +0 -68
  55. data/spec/parser/refcalls_spec.rb +0 -117
  56. data/spec/parser/set/intersections_spec.rb +0 -127
  57. data/spec/parser/set/ranges_spec.rb +0 -121
  58. data/spec/parser/sets_spec.rb +0 -178
  59. data/spec/parser/types_spec.rb +0 -18
  60. data/spec/scanner/all_spec.rb +0 -18
  61. data/spec/scanner/anchors_spec.rb +0 -21
  62. data/spec/scanner/conditionals_spec.rb +0 -128
  63. data/spec/scanner/delimiters_spec.rb +0 -52
  64. data/spec/scanner/errors_spec.rb +0 -67
  65. data/spec/scanner/escapes_spec.rb +0 -73
  66. data/spec/scanner/free_space_spec.rb +0 -165
  67. data/spec/scanner/groups_spec.rb +0 -61
  68. data/spec/scanner/keep_spec.rb +0 -10
  69. data/spec/scanner/literals_spec.rb +0 -39
  70. data/spec/scanner/meta_spec.rb +0 -18
  71. data/spec/scanner/options_spec.rb +0 -36
  72. data/spec/scanner/properties_spec.rb +0 -64
  73. data/spec/scanner/quantifiers_spec.rb +0 -25
  74. data/spec/scanner/refcalls_spec.rb +0 -55
  75. data/spec/scanner/sets_spec.rb +0 -151
  76. data/spec/scanner/types_spec.rb +0 -14
  77. data/spec/spec_helper.rb +0 -28
  78. data/spec/support/capturing_stderr.rb +0 -9
  79. data/spec/support/shared_examples.rb +0 -77
  80. data/spec/syntax/syntax_spec.rb +0 -48
  81. data/spec/syntax/syntax_token_map_spec.rb +0 -23
  82. data/spec/syntax/versions/1.8.6_spec.rb +0 -17
  83. data/spec/syntax/versions/1.9.1_spec.rb +0 -10
  84. data/spec/syntax/versions/1.9.3_spec.rb +0 -9
  85. data/spec/syntax/versions/2.0.0_spec.rb +0 -13
  86. data/spec/syntax/versions/2.2.0_spec.rb +0 -9
  87. data/spec/syntax/versions/aliases_spec.rb +0 -38
  88. data/spec/token/token_spec.rb +0 -85
@@ -1,5 +1,3 @@
1
- require 'set'
2
-
3
1
  module Regexp::Syntax
4
2
  class NotImplementedError < Regexp::Syntax::SyntaxError
5
3
  def initialize(syntax, type, token)
@@ -23,15 +21,15 @@ module Regexp::Syntax
23
21
  end
24
22
 
25
23
  def implementations(type)
26
- @implements[type] ||= Set.new
24
+ @implements[type] ||= []
27
25
  end
28
26
 
29
27
  def implements(type, tokens)
30
- implementations(type).merge(Array(tokens))
28
+ implementations(type).concat(Array(tokens))
31
29
  end
32
30
 
33
31
  def excludes(type, tokens)
34
- implementations(type).subtract(Array(tokens))
32
+ Array(tokens).each { |tok| implementations(type).delete(tok) }
35
33
  end
36
34
 
37
35
  def implements?(type, token)
@@ -2,12 +2,17 @@ module Regexp::Syntax
2
2
  module Token
3
3
  module Backreference
4
4
  Plain = %i[number]
5
- Number = Plain + %i[number_ref number_rel_ref]
5
+ NumberRef = %i[number_ref number_rel_ref]
6
+ Number = Plain + NumberRef
6
7
  Name = %i[name_ref]
7
8
 
8
9
  RecursionLevel = %i[name_recursion_ref number_recursion_ref]
9
10
 
10
- All = Name + Number + RecursionLevel
11
+ V1_8_6 = Plain
12
+
13
+ V1_9_1 = Name + NumberRef + RecursionLevel
14
+
15
+ All = V1_8_6 + V1_9_1
11
16
  Type = :backref
12
17
  end
13
18
 
@@ -5,9 +5,9 @@ module Regexp::Syntax
5
5
 
6
6
  implements :anchor, Anchor::All
7
7
  implements :assertion, Assertion::Lookahead
8
- implements :backref, Backreference::Plain
8
+ implements :backref, Backreference::V1_8_6
9
9
  implements :posixclass, PosixClass::Standard
10
- implements :group, Group::All
10
+ implements :group, Group::V1_8_6
11
11
  implements :meta, Meta::Extended
12
12
  implements :set, CharacterSet::All
13
13
  implements :type, CharacterType::Extended
@@ -4,7 +4,7 @@ module Regexp::Syntax
4
4
  super
5
5
 
6
6
  implements :assertion, Assertion::Lookbehind
7
- implements :backref, Backreference::All + SubexpressionCall::All
7
+ implements :backref, Backreference::V1_9_1 + SubexpressionCall::All
8
8
  implements :posixclass, PosixClass::Extensions
9
9
  implements :nonposixclass, PosixClass::All
10
10
  implements :escape, Escape::Unicode + Escape::Hex + Escape::Octal
@@ -1,5 +1,5 @@
1
1
  class Regexp
2
2
  class Parser
3
- VERSION = '2.2.0'
3
+ VERSION = '2.2.1'
4
4
  end
5
5
  end
@@ -2,35 +2,33 @@ $:.unshift File.join(File.dirname(__FILE__), 'lib')
2
2
 
3
3
  require 'regexp_parser/version'
4
4
 
5
- Gem::Specification.new do |gem|
6
- gem.name = 'regexp_parser'
7
- gem.version = ::Regexp::Parser::VERSION
5
+ Gem::Specification.new do |spec|
6
+ spec.name = 'regexp_parser'
7
+ spec.version = ::Regexp::Parser::VERSION
8
8
 
9
- gem.summary = "Scanner, lexer, parser for ruby's regular expressions"
10
- gem.description = 'A library for tokenizing, lexing, and parsing Ruby regular expressions.'
11
- gem.homepage = 'https://github.com/ammar/regexp_parser'
9
+ spec.summary = "Scanner, lexer, parser for ruby's regular expressions"
10
+ spec.description = 'A library for tokenizing, lexing, and parsing Ruby regular expressions.'
11
+ spec.homepage = 'https://github.com/ammar/regexp_parser'
12
12
 
13
- if gem.respond_to?(:metadata)
14
- gem.metadata = { 'issue_tracker' => 'https://github.com/ammar/regexp_parser/issues' }
15
- end
13
+ spec.metadata['bug_tracker_uri'] = "#{spec.homepage}/issues"
14
+ spec.metadata['changelog_uri'] = "#{spec.homepage}/blob/master/CHANGELOG.md"
15
+ spec.metadata['homepage_uri'] = spec.homepage
16
+ spec.metadata['source_code_uri'] = spec.homepage
17
+ spec.metadata['wiki_uri'] = "#{spec.homepage}/wiki"
16
18
 
17
- gem.authors = ['Ammar Ali']
18
- gem.email = ['ammarabuali@gmail.com']
19
+ spec.authors = ['Ammar Ali']
20
+ spec.email = ['ammarabuali@gmail.com']
19
21
 
20
- gem.license = 'MIT'
22
+ spec.license = 'MIT'
21
23
 
22
- gem.require_paths = ['lib']
24
+ spec.require_paths = ['lib']
23
25
 
24
- gem.files = Dir.glob('{lib,spec}/**/*.rb') +
25
- Dir.glob('lib/**/*.rl') +
26
- Dir.glob('lib/**/*.yml') +
27
- %w(Gemfile Rakefile LICENSE README.md CHANGELOG.md regexp_parser.gemspec)
26
+ spec.files = Dir.glob('lib/**/*.{csv,rb,rl}') +
27
+ %w[Gemfile Rakefile LICENSE README.md CHANGELOG.md regexp_parser.gemspec]
28
28
 
29
- gem.test_files = Dir.glob('spec/**/*.rb')
29
+ spec.rdoc_options = ["--inline-source", "--charset=UTF-8"]
30
30
 
31
- gem.rdoc_options = ["--inline-source", "--charset=UTF-8"]
31
+ spec.platform = Gem::Platform::RUBY
32
32
 
33
- gem.platform = Gem::Platform::RUBY
34
-
35
- gem.required_ruby_version = '>= 2.0.0'
33
+ spec.required_ruby_version = '>= 2.0.0'
36
34
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: regexp_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ammar Ali
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-12-04 00:00:00.000000000 Z
11
+ date: 2022-02-11 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A library for tokenizing, lexing, and parsing Ruby regular expressions.
14
14
  email:
@@ -56,8 +56,8 @@ files:
56
56
  - lib/regexp_parser/parser.rb
57
57
  - lib/regexp_parser/scanner.rb
58
58
  - lib/regexp_parser/scanner/char_type.rl
59
- - lib/regexp_parser/scanner/properties/long.yml
60
- - lib/regexp_parser/scanner/properties/short.yml
59
+ - lib/regexp_parser/scanner/properties/long.csv
60
+ - lib/regexp_parser/scanner/properties/short.csv
61
61
  - lib/regexp_parser/scanner/property.rl
62
62
  - lib/regexp_parser/scanner/scanner.rl
63
63
  - lib/regexp_parser/syntax.rb
@@ -95,79 +95,15 @@ files:
95
95
  - lib/regexp_parser/token.rb
96
96
  - lib/regexp_parser/version.rb
97
97
  - regexp_parser.gemspec
98
- - spec/expression/base_spec.rb
99
- - spec/expression/clone_spec.rb
100
- - spec/expression/conditional_spec.rb
101
- - spec/expression/free_space_spec.rb
102
- - spec/expression/methods/match_length_spec.rb
103
- - spec/expression/methods/match_spec.rb
104
- - spec/expression/methods/strfregexp_spec.rb
105
- - spec/expression/methods/tests_spec.rb
106
- - spec/expression/methods/traverse_spec.rb
107
- - spec/expression/options_spec.rb
108
- - spec/expression/subexpression_spec.rb
109
- - spec/expression/to_h_spec.rb
110
- - spec/expression/to_s_spec.rb
111
- - spec/lexer/all_spec.rb
112
- - spec/lexer/conditionals_spec.rb
113
- - spec/lexer/delimiters_spec.rb
114
- - spec/lexer/escapes_spec.rb
115
- - spec/lexer/keep_spec.rb
116
- - spec/lexer/literals_spec.rb
117
- - spec/lexer/nesting_spec.rb
118
- - spec/lexer/refcalls_spec.rb
119
- - spec/parser/all_spec.rb
120
- - spec/parser/alternation_spec.rb
121
- - spec/parser/anchors_spec.rb
122
- - spec/parser/conditionals_spec.rb
123
- - spec/parser/errors_spec.rb
124
- - spec/parser/escapes_spec.rb
125
- - spec/parser/free_space_spec.rb
126
- - spec/parser/groups_spec.rb
127
- - spec/parser/keep_spec.rb
128
- - spec/parser/options_spec.rb
129
- - spec/parser/posix_classes_spec.rb
130
- - spec/parser/properties_spec.rb
131
- - spec/parser/quantifiers_spec.rb
132
- - spec/parser/refcalls_spec.rb
133
- - spec/parser/set/intersections_spec.rb
134
- - spec/parser/set/ranges_spec.rb
135
- - spec/parser/sets_spec.rb
136
- - spec/parser/types_spec.rb
137
- - spec/scanner/all_spec.rb
138
- - spec/scanner/anchors_spec.rb
139
- - spec/scanner/conditionals_spec.rb
140
- - spec/scanner/delimiters_spec.rb
141
- - spec/scanner/errors_spec.rb
142
- - spec/scanner/escapes_spec.rb
143
- - spec/scanner/free_space_spec.rb
144
- - spec/scanner/groups_spec.rb
145
- - spec/scanner/keep_spec.rb
146
- - spec/scanner/literals_spec.rb
147
- - spec/scanner/meta_spec.rb
148
- - spec/scanner/options_spec.rb
149
- - spec/scanner/properties_spec.rb
150
- - spec/scanner/quantifiers_spec.rb
151
- - spec/scanner/refcalls_spec.rb
152
- - spec/scanner/sets_spec.rb
153
- - spec/scanner/types_spec.rb
154
- - spec/spec_helper.rb
155
- - spec/support/capturing_stderr.rb
156
- - spec/support/shared_examples.rb
157
- - spec/syntax/syntax_spec.rb
158
- - spec/syntax/syntax_token_map_spec.rb
159
- - spec/syntax/versions/1.8.6_spec.rb
160
- - spec/syntax/versions/1.9.1_spec.rb
161
- - spec/syntax/versions/1.9.3_spec.rb
162
- - spec/syntax/versions/2.0.0_spec.rb
163
- - spec/syntax/versions/2.2.0_spec.rb
164
- - spec/syntax/versions/aliases_spec.rb
165
- - spec/token/token_spec.rb
166
98
  homepage: https://github.com/ammar/regexp_parser
167
99
  licenses:
168
100
  - MIT
169
101
  metadata:
170
- issue_tracker: https://github.com/ammar/regexp_parser/issues
102
+ bug_tracker_uri: https://github.com/ammar/regexp_parser/issues
103
+ changelog_uri: https://github.com/ammar/regexp_parser/blob/master/CHANGELOG.md
104
+ homepage_uri: https://github.com/ammar/regexp_parser
105
+ source_code_uri: https://github.com/ammar/regexp_parser
106
+ wiki_uri: https://github.com/ammar/regexp_parser/wiki
171
107
  post_install_message:
172
108
  rdoc_options:
173
109
  - "--inline-source"
@@ -185,76 +121,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
185
121
  - !ruby/object:Gem::Version
186
122
  version: '0'
187
123
  requirements: []
188
- rubygems_version: 3.3.0.dev
124
+ rubygems_version: 3.3.3
189
125
  signing_key:
190
126
  specification_version: 4
191
127
  summary: Scanner, lexer, parser for ruby's regular expressions
192
- test_files:
193
- - spec/expression/base_spec.rb
194
- - spec/expression/clone_spec.rb
195
- - spec/expression/conditional_spec.rb
196
- - spec/expression/free_space_spec.rb
197
- - spec/expression/methods/match_length_spec.rb
198
- - spec/expression/methods/match_spec.rb
199
- - spec/expression/methods/strfregexp_spec.rb
200
- - spec/expression/methods/tests_spec.rb
201
- - spec/expression/methods/traverse_spec.rb
202
- - spec/expression/options_spec.rb
203
- - spec/expression/subexpression_spec.rb
204
- - spec/expression/to_h_spec.rb
205
- - spec/expression/to_s_spec.rb
206
- - spec/lexer/all_spec.rb
207
- - spec/lexer/conditionals_spec.rb
208
- - spec/lexer/delimiters_spec.rb
209
- - spec/lexer/escapes_spec.rb
210
- - spec/lexer/keep_spec.rb
211
- - spec/lexer/literals_spec.rb
212
- - spec/lexer/nesting_spec.rb
213
- - spec/lexer/refcalls_spec.rb
214
- - spec/parser/all_spec.rb
215
- - spec/parser/alternation_spec.rb
216
- - spec/parser/anchors_spec.rb
217
- - spec/parser/conditionals_spec.rb
218
- - spec/parser/errors_spec.rb
219
- - spec/parser/escapes_spec.rb
220
- - spec/parser/free_space_spec.rb
221
- - spec/parser/groups_spec.rb
222
- - spec/parser/keep_spec.rb
223
- - spec/parser/options_spec.rb
224
- - spec/parser/posix_classes_spec.rb
225
- - spec/parser/properties_spec.rb
226
- - spec/parser/quantifiers_spec.rb
227
- - spec/parser/refcalls_spec.rb
228
- - spec/parser/set/intersections_spec.rb
229
- - spec/parser/set/ranges_spec.rb
230
- - spec/parser/sets_spec.rb
231
- - spec/parser/types_spec.rb
232
- - spec/scanner/all_spec.rb
233
- - spec/scanner/anchors_spec.rb
234
- - spec/scanner/conditionals_spec.rb
235
- - spec/scanner/delimiters_spec.rb
236
- - spec/scanner/errors_spec.rb
237
- - spec/scanner/escapes_spec.rb
238
- - spec/scanner/free_space_spec.rb
239
- - spec/scanner/groups_spec.rb
240
- - spec/scanner/keep_spec.rb
241
- - spec/scanner/literals_spec.rb
242
- - spec/scanner/meta_spec.rb
243
- - spec/scanner/options_spec.rb
244
- - spec/scanner/properties_spec.rb
245
- - spec/scanner/quantifiers_spec.rb
246
- - spec/scanner/refcalls_spec.rb
247
- - spec/scanner/sets_spec.rb
248
- - spec/scanner/types_spec.rb
249
- - spec/spec_helper.rb
250
- - spec/support/capturing_stderr.rb
251
- - spec/support/shared_examples.rb
252
- - spec/syntax/syntax_spec.rb
253
- - spec/syntax/syntax_token_map_spec.rb
254
- - spec/syntax/versions/1.8.6_spec.rb
255
- - spec/syntax/versions/1.9.1_spec.rb
256
- - spec/syntax/versions/1.9.3_spec.rb
257
- - spec/syntax/versions/2.0.0_spec.rb
258
- - spec/syntax/versions/2.2.0_spec.rb
259
- - spec/syntax/versions/aliases_spec.rb
260
- - spec/token/token_spec.rb
128
+ test_files: []