regexp_parser 0.3.3 → 0.3.4
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.
- checksums.yaml +4 -4
- data/ChangeLog +10 -0
- data/README.md +1 -1
- data/Rakefile +10 -1
- data/lib/regexp_parser/expression.rb +1 -0
- data/lib/regexp_parser/scanner.rb +1 -0
- data/lib/regexp_parser/syntax.rb +3 -0
- data/lib/regexp_parser/syntax/ruby/1.9.1.rb +3 -1
- data/lib/regexp_parser/syntax/ruby/2.1.9.rb +13 -0
- data/lib/regexp_parser/syntax/ruby/2.1.rb +2 -2
- data/lib/regexp_parser/syntax/ruby/2.2.5.rb +13 -0
- data/lib/regexp_parser/syntax/ruby/2.2.rb +2 -2
- data/lib/regexp_parser/syntax/ruby/2.3.1.rb +13 -0
- data/lib/regexp_parser/syntax/ruby/2.3.rb +2 -2
- data/lib/regexp_parser/version.rb +1 -1
- data/test/parser/test_all.rb +1 -1
- data/test/parser/test_types.rb +33 -0
- data/test/syntax/ruby/test_1.9.1.rb +4 -0
- data/test/syntax/ruby/test_files.rb +25 -3
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e3cfa8eca93da452bed80baa13cb98349eca9dcf
|
4
|
+
data.tar.gz: 8a60f4b22945ab450723a9aac0443a9d2ae9bb3d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ad557e665cf6bfa3a5adb025c1fd44756213579427f99e2c47e38ca2de95edc1c068ef5d0328c3c7d6522f8f0a268a85cd5348884f7f6652c3db4e580c31f4a7
|
7
|
+
data.tar.gz: 2eed59b10fd17a36d41cf3ae702b5fcb54303c050c46884dc2a4bda3a745531fc4870a9afd254dfc69aaab48cf36683797dcaa550426b464ccb3cd705f4da965
|
data/ChangeLog
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
Wed May 25 2016 Ammar Ali <ammarabuali@gmail.com>
|
2
|
+
|
3
|
+
* Thanks to John Backus (https://github.com/backus):
|
4
|
+
- Fix warnings (PR #19)
|
5
|
+
* Thanks to Dana Scheider (https://github.com/danascheider):
|
6
|
+
- Correct error in README (PR #20)
|
7
|
+
* Fixed mistyped \h and \H character types (issue #21)
|
8
|
+
* Added ancestry syntax files for latest rubies (issue #22)
|
9
|
+
* Bumped version to 0.3.4
|
10
|
+
|
1
11
|
Tue Apr 26 2016 Ammar Ali <ammarabuali@gmail.com>
|
2
12
|
|
3
13
|
* Thanks to John Backus (https://github.com/backus):
|
data/README.md
CHANGED
@@ -201,7 +201,7 @@ syntax, and prints the token objects' text indented to their level.
|
|
201
201
|
```ruby
|
202
202
|
require 'regexp_parser'
|
203
203
|
|
204
|
-
Regexp::Lexer.
|
204
|
+
Regexp::Lexer.lex /a?(b(c))*[d]+/, 'ruby/1.9' do |token|
|
205
205
|
puts "#{' ' * token.level}#{token.text}"
|
206
206
|
end
|
207
207
|
|
data/Rakefile
CHANGED
@@ -53,8 +53,17 @@ namespace :ragel do
|
|
53
53
|
desc "Process the ragel source files and output ruby code"
|
54
54
|
task :rb do |t|
|
55
55
|
RAGEL_SOURCE_FILES.each do |file|
|
56
|
+
output_file = "#{RAGEL_OUTPUT_DIR}/#{file}.rb"
|
56
57
|
# using faster flat table driven FSM, about 25% larger code, but about 30% faster
|
57
|
-
sh "ragel -F1 -R #{RAGEL_SOURCE_DIR}/#{file}.rl -o #{
|
58
|
+
sh "ragel -F1 -R #{RAGEL_SOURCE_DIR}/#{file}.rl -o #{output_file}"
|
59
|
+
|
60
|
+
contents = File.read(output_file)
|
61
|
+
|
62
|
+
File.open(output_file, 'r+') do |file|
|
63
|
+
contents = "# -*- warn-indent:false; -*-\n" + contents
|
64
|
+
|
65
|
+
file.write(contents)
|
66
|
+
end
|
58
67
|
end
|
59
68
|
end
|
60
69
|
|
data/lib/regexp_parser/syntax.rb
CHANGED
@@ -72,6 +72,7 @@ module Regexp::Syntax
|
|
72
72
|
when 'ruby/2.1.6'; syntax = Regexp::Syntax::Ruby::V216.new
|
73
73
|
when 'ruby/2.1.7'; syntax = Regexp::Syntax::Ruby::V217.new
|
74
74
|
when 'ruby/2.1.8'; syntax = Regexp::Syntax::Ruby::V218.new
|
75
|
+
when 'ruby/2.1.9'; syntax = Regexp::Syntax::Ruby::V219.new
|
75
76
|
|
76
77
|
# aliases for the latest 2.1 implementations
|
77
78
|
when 'ruby/2.1'; syntax = Regexp::Syntax::Ruby::V21.new
|
@@ -82,12 +83,14 @@ module Regexp::Syntax
|
|
82
83
|
when 'ruby/2.2.2'; syntax = Regexp::Syntax::Ruby::V222.new
|
83
84
|
when 'ruby/2.2.3'; syntax = Regexp::Syntax::Ruby::V223.new
|
84
85
|
when 'ruby/2.2.4'; syntax = Regexp::Syntax::Ruby::V224.new
|
86
|
+
when 'ruby/2.2.5'; syntax = Regexp::Syntax::Ruby::V225.new
|
85
87
|
|
86
88
|
# aliases for the latest 2.2 implementations
|
87
89
|
when 'ruby/2.2'; syntax = Regexp::Syntax::Ruby::V22.new
|
88
90
|
|
89
91
|
# Ruby 2.3.x
|
90
92
|
when 'ruby/2.3.0'; syntax = Regexp::Syntax::Ruby::V230.new
|
93
|
+
when 'ruby/2.3.1'; syntax = Regexp::Syntax::Ruby::V231.new
|
91
94
|
|
92
95
|
# alias for the latest 2.3 implementation
|
93
96
|
when 'ruby/2.3'; syntax = Regexp::Syntax::Ruby::V23.new
|
@@ -15,7 +15,9 @@ module Regexp::Syntax
|
|
15
15
|
implements :backref, Backreference::All +
|
16
16
|
SubexpressionCall::All
|
17
17
|
|
18
|
-
implements :escape,
|
18
|
+
implements :escape, Escape::Unicode
|
19
|
+
|
20
|
+
implements :type, CharacterType::Hex
|
19
21
|
|
20
22
|
implements :property,
|
21
23
|
UnicodeProperty::V190
|
@@ -1,8 +1,8 @@
|
|
1
|
-
require File.expand_path('../2.1.
|
1
|
+
require File.expand_path('../2.1.9', __FILE__)
|
2
2
|
|
3
3
|
module Regexp::Syntax
|
4
4
|
module Ruby
|
5
5
|
# uses the latest 2.1 release
|
6
|
-
class V21 < Regexp::Syntax::Ruby::
|
6
|
+
class V21 < Regexp::Syntax::Ruby::V219; end
|
7
7
|
end
|
8
8
|
end
|
@@ -1,8 +1,8 @@
|
|
1
|
-
require File.expand_path('../2.2.
|
1
|
+
require File.expand_path('../2.2.5', __FILE__)
|
2
2
|
|
3
3
|
module Regexp::Syntax
|
4
4
|
module Ruby
|
5
5
|
# uses the latest 2.2 release
|
6
|
-
class V22 < Regexp::Syntax::Ruby::
|
6
|
+
class V22 < Regexp::Syntax::Ruby::V225; end
|
7
7
|
end
|
8
8
|
end
|
@@ -1,8 +1,8 @@
|
|
1
|
-
require File.expand_path('../2.3.
|
1
|
+
require File.expand_path('../2.3.1', __FILE__)
|
2
2
|
|
3
3
|
module Regexp::Syntax
|
4
4
|
module Ruby
|
5
5
|
# uses the latest 2.3 release
|
6
|
-
class V23 < Regexp::Syntax::Ruby::
|
6
|
+
class V23 < Regexp::Syntax::Ruby::V231; end
|
7
7
|
end
|
8
8
|
end
|
data/test/parser/test_all.rb
CHANGED
@@ -2,7 +2,7 @@ require File.expand_path("../../helpers", __FILE__)
|
|
2
2
|
|
3
3
|
%w{
|
4
4
|
alternation anchors errors escapes free_space groups
|
5
|
-
properties quantifiers refcalls sets
|
5
|
+
properties quantifiers refcalls sets types
|
6
6
|
}.each do|tc|
|
7
7
|
require File.expand_path("../test_#{tc}", __FILE__)
|
8
8
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require File.expand_path("../../helpers", __FILE__)
|
2
|
+
|
3
|
+
class TestParserTypes < Test::Unit::TestCase
|
4
|
+
|
5
|
+
tests = {
|
6
|
+
/a\dc/ => [1, :type, :digit, CharacterType::Digit],
|
7
|
+
/a\Dc/ => [1, :type, :nondigit, CharacterType::NonDigit],
|
8
|
+
|
9
|
+
/a\sc/ => [1, :type, :space, CharacterType::Space],
|
10
|
+
/a\Sc/ => [1, :type, :nonspace, CharacterType::NonSpace],
|
11
|
+
|
12
|
+
/a\hc/ => [1, :type, :hex, CharacterType::Hex],
|
13
|
+
/a\Hc/ => [1, :type, :nonhex, CharacterType::NonHex],
|
14
|
+
|
15
|
+
/a\wc/ => [1, :type, :word, CharacterType::Word],
|
16
|
+
/a\Wc/ => [1, :type, :nonword, CharacterType::NonWord],
|
17
|
+
}
|
18
|
+
|
19
|
+
count = 0
|
20
|
+
tests.each do |pattern, test|
|
21
|
+
define_method "test_parse_type_#{test[2]}_#{count+=1}" do
|
22
|
+
root = RP.parse(pattern, 'ruby/1.9')
|
23
|
+
exp = root.expressions[test[0]]
|
24
|
+
|
25
|
+
assert( exp.is_a?( test[3] ),
|
26
|
+
"Expected #{test[3]}, but got #{exp.class.name}")
|
27
|
+
|
28
|
+
assert_equal( test[1], exp.type )
|
29
|
+
assert_equal( test[2], exp.token )
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
@@ -13,6 +13,10 @@ class TestSyntaxRuby_V191 < Test::Unit::TestCase
|
|
13
13
|
Escape::Backreference + Escape::ASCII + Escape::Meta + Escape::Unicode
|
14
14
|
].flatten,
|
15
15
|
|
16
|
+
:type => [
|
17
|
+
CharacterType::Hex
|
18
|
+
].flatten,
|
19
|
+
|
16
20
|
:quantifier => [
|
17
21
|
Quantifier::Greedy + Quantifier::Reluctant +
|
18
22
|
Quantifier::Possessive
|
@@ -111,10 +111,17 @@ class TestSyntaxFiles < Test::Unit::TestCase
|
|
111
111
|
assert syntax.kind_of?(Regexp::Syntax::Ruby::V217)
|
112
112
|
end
|
113
113
|
|
114
|
+
def test_syntax_file_2_1_9
|
115
|
+
syntax = Regexp::Syntax.new 'ruby/2.1.9'
|
116
|
+
|
117
|
+
assert syntax.kind_of?(Regexp::Syntax::Ruby::V218)
|
118
|
+
assert syntax.kind_of?(Regexp::Syntax::Ruby::V219)
|
119
|
+
end
|
120
|
+
|
114
121
|
def test_syntax_file_2_1_alias
|
115
122
|
syntax = Regexp::Syntax.new 'ruby/2.1'
|
116
123
|
|
117
|
-
assert syntax.kind_of?(Regexp::Syntax::Ruby::
|
124
|
+
assert syntax.kind_of?(Regexp::Syntax::Ruby::V219)
|
118
125
|
end
|
119
126
|
|
120
127
|
|
@@ -149,10 +156,17 @@ class TestSyntaxFiles < Test::Unit::TestCase
|
|
149
156
|
assert syntax.kind_of?(Regexp::Syntax::Ruby::V224)
|
150
157
|
end
|
151
158
|
|
159
|
+
def test_syntax_file_2_2_5
|
160
|
+
syntax = Regexp::Syntax.new 'ruby/2.2.5'
|
161
|
+
|
162
|
+
assert syntax.kind_of?(Regexp::Syntax::Ruby::V224)
|
163
|
+
assert syntax.kind_of?(Regexp::Syntax::Ruby::V225)
|
164
|
+
end
|
165
|
+
|
152
166
|
def test_syntax_file_2_2_alias
|
153
167
|
syntax = Regexp::Syntax.new 'ruby/2.2'
|
154
168
|
|
155
|
-
assert syntax.kind_of?(Regexp::Syntax::Ruby::
|
169
|
+
assert syntax.kind_of?(Regexp::Syntax::Ruby::V225)
|
156
170
|
end
|
157
171
|
|
158
172
|
# 2.3 syntax files
|
@@ -160,11 +174,19 @@ class TestSyntaxFiles < Test::Unit::TestCase
|
|
160
174
|
syntax = Regexp::Syntax.new 'ruby/2.3.0'
|
161
175
|
|
162
176
|
assert syntax.kind_of?(Regexp::Syntax::Ruby::V22)
|
177
|
+
assert syntax.kind_of?(Regexp::Syntax::Ruby::V230)
|
178
|
+
end
|
179
|
+
|
180
|
+
def test_syntax_file_2_3_1
|
181
|
+
syntax = Regexp::Syntax.new 'ruby/2.3.1'
|
182
|
+
|
183
|
+
assert syntax.kind_of?(Regexp::Syntax::Ruby::V230)
|
184
|
+
assert syntax.kind_of?(Regexp::Syntax::Ruby::V231)
|
163
185
|
end
|
164
186
|
|
165
187
|
def test_syntax_file_2_3_alias
|
166
188
|
syntax = Regexp::Syntax.new 'ruby/2.3'
|
167
189
|
|
168
|
-
assert syntax.kind_of?(Regexp::Syntax::Ruby::
|
190
|
+
assert syntax.kind_of?(Regexp::Syntax::Ruby::V231)
|
169
191
|
end
|
170
192
|
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: 0.3.
|
4
|
+
version: 0.3.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ammar Ali
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-05-25 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: A library for tokenizing, lexing, and parsing Ruby regular expressions.
|
14
14
|
email:
|
@@ -66,14 +66,17 @@ files:
|
|
66
66
|
- lib/regexp_parser/syntax/ruby/2.1.6.rb
|
67
67
|
- lib/regexp_parser/syntax/ruby/2.1.7.rb
|
68
68
|
- lib/regexp_parser/syntax/ruby/2.1.8.rb
|
69
|
+
- lib/regexp_parser/syntax/ruby/2.1.9.rb
|
69
70
|
- lib/regexp_parser/syntax/ruby/2.1.rb
|
70
71
|
- lib/regexp_parser/syntax/ruby/2.2.0.rb
|
71
72
|
- lib/regexp_parser/syntax/ruby/2.2.1.rb
|
72
73
|
- lib/regexp_parser/syntax/ruby/2.2.2.rb
|
73
74
|
- lib/regexp_parser/syntax/ruby/2.2.3.rb
|
74
75
|
- lib/regexp_parser/syntax/ruby/2.2.4.rb
|
76
|
+
- lib/regexp_parser/syntax/ruby/2.2.5.rb
|
75
77
|
- lib/regexp_parser/syntax/ruby/2.2.rb
|
76
78
|
- lib/regexp_parser/syntax/ruby/2.3.0.rb
|
79
|
+
- lib/regexp_parser/syntax/ruby/2.3.1.rb
|
77
80
|
- lib/regexp_parser/syntax/ruby/2.3.rb
|
78
81
|
- lib/regexp_parser/syntax/tokens.rb
|
79
82
|
- lib/regexp_parser/syntax/tokens/anchor.rb
|
@@ -123,6 +126,7 @@ files:
|
|
123
126
|
- test/parser/test_quantifiers.rb
|
124
127
|
- test/parser/test_refcalls.rb
|
125
128
|
- test/parser/test_sets.rb
|
129
|
+
- test/parser/test_types.rb
|
126
130
|
- test/scanner/test_all.rb
|
127
131
|
- test/scanner/test_anchors.rb
|
128
132
|
- test/scanner/test_conditionals.rb
|
@@ -211,6 +215,7 @@ test_files:
|
|
211
215
|
- test/parser/test_quantifiers.rb
|
212
216
|
- test/parser/test_refcalls.rb
|
213
217
|
- test/parser/test_sets.rb
|
218
|
+
- test/parser/test_types.rb
|
214
219
|
- test/scanner/test_all.rb
|
215
220
|
- test/scanner/test_anchors.rb
|
216
221
|
- test/scanner/test_conditionals.rb
|