regexp_parser 0.1.1 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. checksums.yaml +7 -0
  2. data/ChangeLog +45 -0
  3. data/Rakefile +12 -44
  4. data/VERSION.yml +5 -0
  5. data/lib/regexp_parser.rb +5 -38
  6. data/lib/regexp_parser/expression.rb +68 -221
  7. data/lib/regexp_parser/expression/classes/alternation.rb +47 -0
  8. data/lib/regexp_parser/expression/classes/anchor.rb +26 -0
  9. data/lib/regexp_parser/expression/classes/backref.rb +42 -0
  10. data/lib/regexp_parser/expression/classes/escape.rb +27 -0
  11. data/lib/regexp_parser/expression/classes/group.rb +67 -0
  12. data/lib/regexp_parser/expression/classes/literal.rb +7 -0
  13. data/lib/regexp_parser/expression/{property.rb → classes/property.rb} +1 -1
  14. data/lib/regexp_parser/expression/classes/root.rb +26 -0
  15. data/lib/regexp_parser/expression/classes/set.rb +100 -0
  16. data/lib/regexp_parser/expression/classes/type.rb +17 -0
  17. data/lib/regexp_parser/expression/quantifier.rb +26 -0
  18. data/lib/regexp_parser/expression/subexpression.rb +69 -0
  19. data/lib/regexp_parser/lexer.rb +4 -4
  20. data/lib/regexp_parser/parser.rb +31 -13
  21. data/lib/regexp_parser/scanner.rb +1849 -1488
  22. data/lib/regexp_parser/scanner/property.rl +7 -2
  23. data/lib/regexp_parser/scanner/scanner.rl +377 -191
  24. data/lib/regexp_parser/syntax.rb +7 -0
  25. data/lib/regexp_parser/syntax/ruby/1.8.6.rb +4 -4
  26. data/lib/regexp_parser/syntax/ruby/1.9.1.rb +9 -9
  27. data/lib/regexp_parser/syntax/ruby/2.0.0.rb +16 -0
  28. data/lib/regexp_parser/syntax/ruby/2.1.0.rb +13 -0
  29. data/lib/regexp_parser/syntax/tokens.rb +21 -320
  30. data/lib/regexp_parser/syntax/tokens/anchor.rb +17 -0
  31. data/lib/regexp_parser/syntax/tokens/assertion.rb +15 -0
  32. data/lib/regexp_parser/syntax/tokens/backref.rb +26 -0
  33. data/lib/regexp_parser/syntax/tokens/character_set.rb +48 -0
  34. data/lib/regexp_parser/syntax/tokens/character_type.rb +16 -0
  35. data/lib/regexp_parser/syntax/tokens/escape.rb +29 -0
  36. data/lib/regexp_parser/syntax/tokens/group.rb +22 -0
  37. data/lib/regexp_parser/syntax/tokens/meta.rb +15 -0
  38. data/lib/regexp_parser/syntax/tokens/quantifier.rb +37 -0
  39. data/lib/regexp_parser/syntax/tokens/unicode_property.rb +204 -0
  40. data/lib/regexp_parser/token.rb +37 -0
  41. data/test/expression/test_all.rb +7 -0
  42. data/test/expression/test_base.rb +72 -0
  43. data/test/expression/test_clone.rb +144 -0
  44. data/test/{parser/test_expression.rb → expression/test_to_s.rb} +10 -10
  45. data/test/helpers.rb +1 -0
  46. data/test/parser/test_all.rb +1 -1
  47. data/test/parser/test_alternation.rb +35 -0
  48. data/test/parser/test_anchors.rb +2 -2
  49. data/test/parser/test_refcalls.rb +1 -1
  50. data/test/parser/test_sets.rb +54 -8
  51. data/test/scanner/test_anchors.rb +2 -2
  52. data/test/scanner/test_conditionals.rb +31 -0
  53. data/test/scanner/test_errors.rb +88 -8
  54. data/test/scanner/test_escapes.rb +4 -4
  55. data/test/scanner/test_groups.rb +7 -0
  56. data/test/scanner/test_quoting.rb +29 -0
  57. data/test/scanner/test_sets.rb +1 -0
  58. data/test/syntax/ruby/test_1.8.rb +3 -3
  59. data/test/test_all.rb +1 -1
  60. metadata +62 -48
  61. data/lib/regexp_parser/expression/set.rb +0 -59
@@ -3,8 +3,8 @@ require File.expand_path("../../helpers", __FILE__)
3
3
  class ScannerAnchors < Test::Unit::TestCase
4
4
 
5
5
  tests = {
6
- '^abc' => [0, :anchor, :beginning_of_line, '^', 0, 1],
7
- 'abc$' => [1, :anchor, :end_of_line, '$', 3, 4],
6
+ '^abc' => [0, :anchor, :bol, '^', 0, 1],
7
+ 'abc$' => [1, :anchor, :eol, '$', 3, 4],
8
8
 
9
9
  '\Aabc' => [0, :anchor, :bos, '\A', 0, 2],
10
10
  'abc\z' => [1, :anchor, :eos, '\z', 3, 5],
@@ -0,0 +1,31 @@
1
+ require File.expand_path("../../helpers", __FILE__)
2
+
3
+ class ScannerConditionals < Test::Unit::TestCase
4
+
5
+ tests = {
6
+ /(?(1)Y|N)/ => [0, :conditional, :open, '(?(', 0, 3],
7
+ /(?(2)Y|N)/ => [1, :conditional, :condition, '2', 3, 4],
8
+ /(?(3)Y|N)/ => [2, :conditional, :yes, 'Y', 5, 6],
9
+
10
+ #"(?(<name>)Y|N)" => [0, :conditional, :condition, '(?(<name>)Y|N)', 0, 14],
11
+ #"(?('name')Y|N)" => [0, :conditional, :yes, "(?('name')Y|N)", 0, 14],
12
+ }
13
+
14
+ count = 0
15
+ tests.each do |pattern, test|
16
+ define_method "test_scan_#{test[1]}_#{test[2]}_#{count+=1}" do
17
+
18
+ tokens = RS.scan(pattern)
19
+ token = tokens[test[0]]
20
+ assert_equal( test[1,5], token )
21
+
22
+ end
23
+ end
24
+
25
+ #def test_scanner_quote
26
+ # tokens = RS.scan('a\QX\Eb\QX\Ec')
27
+ # puts tokens.inspect
28
+ # #assert_equal( tokens[0] )
29
+ #end
30
+
31
+ end
@@ -3,34 +3,114 @@ require File.expand_path("../../helpers", __FILE__)
3
3
  class ScannerErrors < Test::Unit::TestCase
4
4
 
5
5
  def test_scanner_unbalanced_set
6
- assert_raise( Regexp::Scanner::PrematureEndError ) { RS.scan('[[:alpha:]') }
6
+ assert_raise( RS::PrematureEndError ) { RS.scan('[[:alpha:]') }
7
7
  end
8
8
 
9
9
  def test_scanner_unbalanced_group
10
- assert_raise( Regexp::Scanner::PrematureEndError ) { RS.scan('(abc') }
10
+ assert_raise( RS::PrematureEndError ) { RS.scan('(abc') }
11
11
  end
12
12
 
13
13
  def test_scanner_unbalanced_interval
14
- assert_raise( Regexp::Scanner::PrematureEndError ) { RS.scan('a{1,2') }
14
+ assert_raise( RS::PrematureEndError ) { RS.scan('a{1,2') }
15
+ end
16
+
17
+ def test_scanner_eof_in_property
18
+ assert_raise( RS::PrematureEndError ) { RS.scan('\p{asci') }
15
19
  end
16
20
 
17
21
  def test_scanner_incomplete_property
18
- assert_raise( Regexp::Scanner::PrematureEndError ) { RS.scan('\p{ascii abc') }
22
+ assert_raise( RS::PrematureEndError ) { RS.scan('\p{ascii abc') }
19
23
  end
20
24
 
21
25
  def test_scanner_unknown_property
22
- assert_raise( Regexp::Scanner::UnknownUnicodePropertyError ) { RS.scan('\p{foobar}') }
26
+ assert_raise( RS::UnknownUnicodePropertyError ) { RS.scan('\p{foobar}') }
23
27
  end
24
28
 
25
29
  def test_scanner_incomplete_options
26
- assert_raise( Regexp::Scanner::ScannerError ) { RS.scan('(?mix abc)') }
30
+ assert_raise( RS::ScannerError ) { RS.scan('(?mix abc)') }
27
31
  end
28
32
 
29
33
  def test_scanner_eof_options
30
- assert_raise( Regexp::Scanner::PrematureEndError ) { RS.scan('(?mix') }
34
+ assert_raise( RS::PrematureEndError ) { RS.scan('(?mix') }
31
35
  end
32
36
 
33
37
  def test_scanner_incorrect_options
34
- assert_raise( Regexp::Scanner::ScannerError ) { RS.scan('(?mix^bc') }
38
+ assert_raise( RS::ScannerError ) { RS.scan('(?mix^bc') }
39
+ end
40
+
41
+ def test_scanner_eof_escape
42
+ assert_raise( RS::PrematureEndError ) { RS.scan('\\') }
43
+ end
44
+
45
+ def test_scanner_eof_in_hex_escape
46
+ assert_raise( RS::PrematureEndError ) { RS.scan('\x') }
47
+ end
48
+
49
+ def test_scanner_eof_in_wide_hex_escape
50
+ assert_raise( RS::PrematureEndError ) { RS.scan('\x{') }
51
+ assert_raise( RS::PrematureEndError ) { RS.scan('\x{0') }
52
+ assert_raise( RS::PrematureEndError ) { RS.scan('\x{02') }
53
+ assert_raise( RS::PrematureEndError ) { RS.scan('\x{024') }
54
+ assert_raise( RS::PrematureEndError ) { RS.scan('\x{0246') }
55
+ assert_raise( RS::PrematureEndError ) { RS.scan('\x{02468') }
56
+ assert_raise( RS::PrematureEndError ) { RS.scan('\x{02468A') }
57
+ assert_raise( RS::PrematureEndError ) { RS.scan('\x{02468AC') }
58
+ assert_raise( RS::PrematureEndError ) { RS.scan('\x{02468ACE') }
59
+ end
60
+
61
+ def test_scanner_eof_in_codepoint_escape
62
+ assert_raise( RS::PrematureEndError ) { RS.scan('\u') }
63
+ assert_raise( RS::PrematureEndError ) { RS.scan('\u0') }
64
+ assert_raise( RS::PrematureEndError ) { RS.scan('\u00') }
65
+ assert_raise( RS::PrematureEndError ) { RS.scan('\u000') }
66
+ assert_raise( RS::PrematureEndError ) { RS.scan('\u{') }
67
+ assert_raise( RS::PrematureEndError ) { RS.scan('\u{00') }
68
+ assert_raise( RS::PrematureEndError ) { RS.scan('\u{0000') }
69
+ assert_raise( RS::PrematureEndError ) { RS.scan('\u{0000 ') }
70
+ assert_raise( RS::PrematureEndError ) { RS.scan('\u{0000 0000') }
71
+ end
72
+
73
+ def test_scanner_eof_in_control_sequence
74
+ assert_raise( RS::PrematureEndError ) { RS.scan('\c') }
75
+ assert_raise( RS::PrematureEndError ) { RS.scan('\C') }
76
+ assert_raise( RS::PrematureEndError ) { RS.scan('\C-') }
77
+ end
78
+
79
+ def test_scanner_eof_in_meta_sequence
80
+ assert_raise( RS::PrematureEndError ) { RS.scan('\M') }
81
+ assert_raise( RS::PrematureEndError ) { RS.scan('\M-') }
82
+ assert_raise( RS::PrematureEndError ) { RS.scan('\M-\\') }
83
+ assert_raise( RS::PrematureEndError ) { RS.scan('\M-\C') }
84
+ assert_raise( RS::PrematureEndError ) { RS.scan('\M-\C-') }
85
+ end
86
+
87
+ def test_scanner_invalid_hex_escape
88
+ assert_raise( RS::InvalidSequenceError ) { RS.scan('\xZ') }
89
+ assert_raise( RS::InvalidSequenceError ) { RS.scan('\xZ0') }
90
+ end
91
+
92
+ def test_scanner_invalid_wide_hex_escape
93
+ assert_raise( RS::InvalidSequenceError ) { RS.scan('\x{}') }
94
+ assert_raise( RS::InvalidSequenceError ) { RS.scan('\x{ }') }
95
+ assert_raise( RS::InvalidSequenceError ) { RS.scan('\x{ A }') }
96
+ assert_raise( RS::InvalidSequenceError ) { RS.scan('\x{0-}') }
97
+ assert_raise( RS::InvalidSequenceError ) { RS.scan('\x{Z00}') }
98
+ assert_raise( RS::InvalidSequenceError ) { RS.scan('\x{000Z}') }
99
+ assert_raise( RS::InvalidSequenceError ) { RS.scan('\x{00ZZ}') }
100
+ assert_raise( RS::InvalidSequenceError ) { RS.scan('\x{0000ZZ}') }
101
+ assert_raise( RS::InvalidSequenceError ) { RS.scan('\x{0000ZZ0}') }
102
+ assert_raise( RS::InvalidSequenceError ) { RS.scan('\x{0000ZZ0X}') }
103
+ assert_raise( RS::InvalidSequenceError ) { RS.scan('\x{00X') }
104
+ assert_raise( RS::InvalidSequenceError ) { RS.scan('\x{00XYZ') }
105
+ assert_raise( RS::InvalidSequenceError ) { RS.scan('\x{0000XYZ') }
106
+ assert_raise( RS::InvalidSequenceError ) { RS.scan('\x{02468ACED') }
107
+ assert_raise( RS::InvalidSequenceError ) { RS.scan('\x{02468ACE]') }
108
+ end
109
+
110
+ def test_scanner_invalid_named_group
111
+ assert_raise( RS::InvalidGroupError ) { RS.scan("(?'')") }
112
+ assert_raise( RS::InvalidGroupError ) { RS.scan("(?''empty-name)") }
113
+ assert_raise( RS::InvalidGroupError ) { RS.scan("(?<>)") }
114
+ assert_raise( RS::InvalidGroupError ) { RS.scan("(?<>empty-name)") }
35
115
  end
36
116
  end
@@ -27,12 +27,12 @@ class ScannerEscapes < Test::Unit::TestCase
27
27
  'a\u0640c' => [1, :escape, :codepoint, '\u0640', 1, 7],
28
28
  'a\u{0640 0641}c' => [1, :escape, :codepoint_list, '\u{0640 0641}', 1, 14],
29
29
 
30
- 'a\cCc' => [1, :escape, :control, '\cC', 1, 4],
31
- 'a\C-cc' => [1, :escape, :control, '\C-c', 1, 5],
30
+ 'a\cBc' => [1, :escape, :control, '\cB', 1, 4],
31
+ 'a\C-bc' => [1, :escape, :control, '\C-b', 1, 5],
32
32
 
33
33
  # TODO: verify these escapes
34
- 'a\M-Cc' => [1, :escape, :meta_sequence, '\M-C', 1, 5],
35
- 'a\M-\C-cc' => [1, :escape, :meta_sequence, '\M-\C-c', 1, 8],
34
+ 'a\M-Bc' => [1, :escape, :meta_sequence, '\M-B', 1, 5],
35
+ 'a\M-\C-Bc' => [1, :escape, :meta_sequence, '\M-\C-B', 1, 8],
36
36
  }
37
37
 
38
38
  count = 0
@@ -9,13 +9,20 @@ class ScannerGroups < Test::Unit::TestCase
9
9
  '(?mi-x:abc)' => [0, :group, :options, '(?mi-x:', 0, 7],
10
10
  '(?mix:abc)' => [0, :group, :options, '(?mix:', 0, 6],
11
11
  '(?mix)' => [0, :group, :options, '(?mix', 0, 5],
12
+ '(?m:)' => [0, :group, :options, '(?m:', 0, 4],
13
+ '(?i:)' => [0, :group, :options, '(?i:', 0, 4],
14
+ '(?x:)' => [0, :group, :options, '(?x:', 0, 4],
12
15
 
13
16
  # Group types
14
17
  '(?>abc)' => [0, :group, :atomic, '(?>', 0, 3],
15
18
  '(abc)' => [0, :group, :capture, '(', 0, 1],
19
+
16
20
  '(?<name>abc)' => [0, :group, :named_ab, '(?<name>', 0, 8],
17
21
  "(?'name'abc)" => [0, :group, :named_sq, "(?'name'", 0, 8],
22
+
18
23
  '(?:abc)' => [0, :group, :passive, '(?:', 0, 3],
24
+ '(?:)' => [0, :group, :passive, '(?:', 0, 3],
25
+ '(?::)' => [0, :group, :passive, '(?:', 0, 3],
19
26
 
20
27
  # Comments
21
28
  '(?#abc)' => [0, :group, :comment, '(?#abc)', 0, 7],
@@ -0,0 +1,29 @@
1
+ require File.expand_path("../../helpers", __FILE__)
2
+
3
+ class ScannerQuoting < Test::Unit::TestCase
4
+
5
+ tests = {
6
+ /\Qquoted\Ea/ => [0, :quoted, :literal, '\Qquoted\E', 0, 10],
7
+ /\Qquoted\Eb/ => [1, :literal, :literal, 'b', 10, 11],
8
+ /a\Qquoted\Eb\Qquoted\Ec/ => [3, :quoted, :literal, '\Qquoted\E', 12, 22],
9
+ /a\Qqu\o\t\ed\Eb/ => [1, :quoted, :literal, '\Qqu\o\t\ed\E', 1, 14],
10
+ }
11
+
12
+ count = 0
13
+ tests.each do |pattern, test|
14
+ define_method "test_scan_#{test[1]}_#{test[2]}_#{count+=1}" do
15
+
16
+ tokens = RS.scan(pattern)
17
+ token = tokens[test[0]]
18
+ assert_equal( test[1,5], token )
19
+
20
+ end
21
+ end
22
+
23
+ #def test_scanner_quote
24
+ # tokens = RS.scan('a\QX\Eb\QX\Ec')
25
+ # puts tokens.inspect
26
+ # #assert_equal( tokens[0] )
27
+ #end
28
+
29
+ end
@@ -9,6 +9,7 @@ class ScannerSets < Test::Unit::TestCase
9
9
 
10
10
  '[c]' => [1, :set, :member, 'c', 1, 2],
11
11
  '[\b]' => [1, :set, :backspace, '\b', 1, 3],
12
+ '[A\bX]' => [2, :set, :backspace, '\b', 2, 4],
12
13
 
13
14
  '[.]' => [1, :set, :member, '.', 1, 2],
14
15
  '[?]' => [1, :set, :member, '?', 1, 2],
@@ -9,7 +9,7 @@ class TestSyntaxRuby_V18 < Test::Unit::TestCase
9
9
 
10
10
  tests = {
11
11
  :implements => {
12
- :assertion => [Group::Assertion::Lookahead].flatten,
12
+ :assertion => [Assertion::Lookahead].flatten,
13
13
  :backref => [:number],
14
14
  :escape => [Escape::All].flatten,
15
15
  :group => [Group::All].flatten,
@@ -20,10 +20,10 @@ class TestSyntaxRuby_V18 < Test::Unit::TestCase
20
20
  },
21
21
 
22
22
  :excludes => {
23
- :assertion => [Group::Assertion::Lookbehind].flatten,
23
+ :assertion => [Assertion::Lookbehind].flatten,
24
24
 
25
25
  :backref => [
26
- Group::Backreference::All + Group::SubexpressionCall::All
26
+ Backreference::All + SubexpressionCall::All
27
27
  ].flatten,
28
28
 
29
29
  :quantifier => [
data/test/test_all.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  require File.expand_path("../helpers", __FILE__)
2
- %w{ scanner syntax lexer parser }.each do |subject|
2
+ %w{ scanner syntax lexer parser expression }.each do |subject|
3
3
  require File.expand_path("../#{subject}/test_all", __FILE__)
4
4
  end
metadata CHANGED
@@ -1,38 +1,37 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: regexp_parser
3
- version: !ruby/object:Gem::Version
4
- hash: 25
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 1
9
- - 1
10
- version: 0.1.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.5
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Ammar Ali
14
8
  autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2010-11-23 00:00:00 +02:00
19
- default_executable:
11
+ date: 2014-01-14 00:00:00.000000000 Z
20
12
  dependencies: []
21
-
22
13
  description: A library for tokenizing, lexing, and parsing Ruby regular expressions.
23
14
  email: ammarabuali@gmail.com
24
15
  executables: []
25
-
26
16
  extensions: []
27
-
28
- extra_rdoc_files:
17
+ extra_rdoc_files:
29
18
  - ChangeLog
30
19
  - LICENSE
31
20
  - README.rdoc
32
- files:
21
+ files:
33
22
  - lib/regexp_parser/ctype.rb
34
- - lib/regexp_parser/expression/property.rb
35
- - lib/regexp_parser/expression/set.rb
23
+ - lib/regexp_parser/expression/classes/alternation.rb
24
+ - lib/regexp_parser/expression/classes/anchor.rb
25
+ - lib/regexp_parser/expression/classes/backref.rb
26
+ - lib/regexp_parser/expression/classes/escape.rb
27
+ - lib/regexp_parser/expression/classes/group.rb
28
+ - lib/regexp_parser/expression/classes/literal.rb
29
+ - lib/regexp_parser/expression/classes/property.rb
30
+ - lib/regexp_parser/expression/classes/root.rb
31
+ - lib/regexp_parser/expression/classes/set.rb
32
+ - lib/regexp_parser/expression/classes/type.rb
33
+ - lib/regexp_parser/expression/quantifier.rb
34
+ - lib/regexp_parser/expression/subexpression.rb
36
35
  - lib/regexp_parser/expression.rb
37
36
  - lib/regexp_parser/lexer.rb
38
37
  - lib/regexp_parser/parser.rb
@@ -44,9 +43,26 @@ files:
44
43
  - lib/regexp_parser/syntax/ruby/1.9.2.rb
45
44
  - lib/regexp_parser/syntax/ruby/1.9.3.rb
46
45
  - lib/regexp_parser/syntax/ruby/1.9.rb
46
+ - lib/regexp_parser/syntax/ruby/2.0.0.rb
47
+ - lib/regexp_parser/syntax/ruby/2.1.0.rb
48
+ - lib/regexp_parser/syntax/tokens/anchor.rb
49
+ - lib/regexp_parser/syntax/tokens/assertion.rb
50
+ - lib/regexp_parser/syntax/tokens/backref.rb
51
+ - lib/regexp_parser/syntax/tokens/character_set.rb
52
+ - lib/regexp_parser/syntax/tokens/character_type.rb
53
+ - lib/regexp_parser/syntax/tokens/escape.rb
54
+ - lib/regexp_parser/syntax/tokens/group.rb
55
+ - lib/regexp_parser/syntax/tokens/meta.rb
56
+ - lib/regexp_parser/syntax/tokens/quantifier.rb
57
+ - lib/regexp_parser/syntax/tokens/unicode_property.rb
47
58
  - lib/regexp_parser/syntax/tokens.rb
48
59
  - lib/regexp_parser/syntax.rb
60
+ - lib/regexp_parser/token.rb
49
61
  - lib/regexp_parser.rb
62
+ - test/expression/test_all.rb
63
+ - test/expression/test_base.rb
64
+ - test/expression/test_clone.rb
65
+ - test/expression/test_to_s.rb
50
66
  - test/helpers.rb
51
67
  - test/lexer/test_all.rb
52
68
  - test/lexer/test_literals.rb
@@ -57,7 +73,6 @@ files:
57
73
  - test/parser/test_anchors.rb
58
74
  - test/parser/test_errors.rb
59
75
  - test/parser/test_escapes.rb
60
- - test/parser/test_expression.rb
61
76
  - test/parser/test_groups.rb
62
77
  - test/parser/test_properties.rb
63
78
  - test/parser/test_quantifiers.rb
@@ -65,6 +80,7 @@ files:
65
80
  - test/parser/test_sets.rb
66
81
  - test/scanner/test_all.rb
67
82
  - test/scanner/test_anchors.rb
83
+ - test/scanner/test_conditionals.rb
68
84
  - test/scanner/test_errors.rb
69
85
  - test/scanner/test_escapes.rb
70
86
  - test/scanner/test_groups.rb
@@ -72,6 +88,7 @@ files:
72
88
  - test/scanner/test_meta.rb
73
89
  - test/scanner/test_properties.rb
74
90
  - test/scanner/test_quantifiers.rb
91
+ - test/scanner/test_quoting.rb
75
92
  - test/scanner/test_refcalls.rb
76
93
  - test/scanner/test_scripts.rb
77
94
  - test/scanner/test_sets.rb
@@ -84,46 +101,42 @@ files:
84
101
  - test/test_all.rb
85
102
  - lib/regexp_parser/scanner/property.rl
86
103
  - lib/regexp_parser/scanner/scanner.rl
104
+ - VERSION.yml
87
105
  - Rakefile
88
106
  - LICENSE
89
107
  - README.rdoc
90
108
  - ChangeLog
91
- has_rdoc: true
92
109
  homepage: http://github.com/ammar/regexp_parser
93
- licenses:
110
+ licenses:
94
111
  - MIT
112
+ metadata: {}
95
113
  post_install_message:
96
- rdoc_options:
114
+ rdoc_options:
97
115
  - --inline-source
98
116
  - --charset=UTF-8
99
- require_paths:
117
+ require_paths:
100
118
  - lib
101
- required_ruby_version: !ruby/object:Gem::Requirement
102
- none: false
103
- requirements:
104
- - - ">="
105
- - !ruby/object:Gem::Version
106
- hash: 3
107
- segments:
108
- - 0
109
- version: "0"
110
- required_rubygems_version: !ruby/object:Gem::Requirement
111
- none: false
112
- requirements:
113
- - - ">="
114
- - !ruby/object:Gem::Version
115
- hash: 3
116
- segments:
117
- - 0
118
- version: "0"
119
+ required_ruby_version: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - '>='
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
124
+ required_rubygems_version: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - '>='
127
+ - !ruby/object:Gem::Version
128
+ version: '0'
119
129
  requirements: []
120
-
121
130
  rubyforge_project:
122
- rubygems_version: 1.3.7
131
+ rubygems_version: 2.0.6
123
132
  signing_key:
124
- specification_version: 3
133
+ specification_version: 4
125
134
  summary: Scanner, lexer, parser for ruby's regular expressions
126
- test_files:
135
+ test_files:
136
+ - test/expression/test_all.rb
137
+ - test/expression/test_base.rb
138
+ - test/expression/test_clone.rb
139
+ - test/expression/test_to_s.rb
127
140
  - test/helpers.rb
128
141
  - test/lexer/test_all.rb
129
142
  - test/lexer/test_literals.rb
@@ -134,7 +147,6 @@ test_files:
134
147
  - test/parser/test_anchors.rb
135
148
  - test/parser/test_errors.rb
136
149
  - test/parser/test_escapes.rb
137
- - test/parser/test_expression.rb
138
150
  - test/parser/test_groups.rb
139
151
  - test/parser/test_properties.rb
140
152
  - test/parser/test_quantifiers.rb
@@ -142,6 +154,7 @@ test_files:
142
154
  - test/parser/test_sets.rb
143
155
  - test/scanner/test_all.rb
144
156
  - test/scanner/test_anchors.rb
157
+ - test/scanner/test_conditionals.rb
145
158
  - test/scanner/test_errors.rb
146
159
  - test/scanner/test_escapes.rb
147
160
  - test/scanner/test_groups.rb
@@ -149,6 +162,7 @@ test_files:
149
162
  - test/scanner/test_meta.rb
150
163
  - test/scanner/test_properties.rb
151
164
  - test/scanner/test_quantifiers.rb
165
+ - test/scanner/test_quoting.rb
152
166
  - test/scanner/test_refcalls.rb
153
167
  - test/scanner/test_scripts.rb
154
168
  - test/scanner/test_sets.rb