regexp_parser 0.1.1 → 0.1.5

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 (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