citrus 2.3.6 → 2.3.7
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.
- data/CHANGES +14 -0
- data/examples/email.citrus +161 -0
- data/examples/email_test.rb +178 -0
- data/lib/citrus/file.rb +1 -1
- data/lib/citrus/version.rb +1 -1
- metadata +161 -150
data/CHANGES
CHANGED
@@ -1,3 +1,17 @@
|
|
1
|
+
= 2.3.7 / 2011-02-20
|
2
|
+
|
3
|
+
* Fixed a bug that prevented forward slashes from being used inside character
|
4
|
+
class literals.
|
5
|
+
|
6
|
+
* Added email address example.
|
7
|
+
|
8
|
+
= 2.3.6 / 2011-02-19
|
9
|
+
|
10
|
+
* Fixed a bug that prevented memoization from advancing the input's pointer
|
11
|
+
properly (thanks joachimm).
|
12
|
+
|
13
|
+
* Several additions to the TextMate bundle (thanks joachimm).
|
14
|
+
|
1
15
|
= 2.3.5 / 2011-02-07
|
2
16
|
|
3
17
|
* Fixed a bug that prevented Match objects from being printed properly using
|
@@ -0,0 +1,161 @@
|
|
1
|
+
# A grammar for email addresses that closely conforms to RFC 5322, with the
|
2
|
+
# notable exception that this grammar does not allow for folding white space
|
3
|
+
# or comments within atoms.
|
4
|
+
grammar EmailAddress
|
5
|
+
root addr-spec
|
6
|
+
|
7
|
+
# ALPHA = %x41-5A / %x61-7A ; A-Z / a-z
|
8
|
+
rule ALPHA
|
9
|
+
[A-Za-z]
|
10
|
+
end
|
11
|
+
|
12
|
+
# DIGIT = %x30-39
|
13
|
+
# ; 0-9
|
14
|
+
rule DIGIT
|
15
|
+
[0-9]
|
16
|
+
end
|
17
|
+
|
18
|
+
# DQUOTE = %x22
|
19
|
+
# ; " (Double Quote)
|
20
|
+
rule DQUOTE
|
21
|
+
'"'
|
22
|
+
end
|
23
|
+
|
24
|
+
# NO-WS-CTL = %d1-8 / ; US-ASCII control characters
|
25
|
+
# %d11 / ; that do not include the
|
26
|
+
# %d12 / ; carriage return, line feed,
|
27
|
+
# %d14-31 / ; and white space characters
|
28
|
+
# %d127
|
29
|
+
rule NO-WS-CTL
|
30
|
+
[\x01-\x08\x0B\x0C\x0E-\x1F\x7F]
|
31
|
+
end
|
32
|
+
|
33
|
+
# quoted-pair = ("\" text) / obs-qp
|
34
|
+
rule quoted-pair
|
35
|
+
("\\" text) | obs-qp
|
36
|
+
end
|
37
|
+
|
38
|
+
# atext = ALPHA / DIGIT / ; Printable US-ASCII
|
39
|
+
# "!" / "#" / ; characters not including
|
40
|
+
# "$" / "%" / ; specials. Used for atoms.
|
41
|
+
# "&" / "'" /
|
42
|
+
# "*" / "+" /
|
43
|
+
# "-" / "/" /
|
44
|
+
# "=" / "?" /
|
45
|
+
# "^" / "_" /
|
46
|
+
# "`" / "{" /
|
47
|
+
# "|" / "}" /
|
48
|
+
# "~"
|
49
|
+
rule atext
|
50
|
+
ALPHA | DIGIT | [!\#$\%&'*+-/=?^_`{|}~]
|
51
|
+
end
|
52
|
+
|
53
|
+
# atom = [CFWS] 1*atext [CFWS]
|
54
|
+
rule atom
|
55
|
+
atext 1*
|
56
|
+
end
|
57
|
+
|
58
|
+
# dot-atom-text = 1*atext *("." 1*atext)
|
59
|
+
rule dot-atom-text
|
60
|
+
atext 1* ("." atext 1*)*
|
61
|
+
end
|
62
|
+
|
63
|
+
# dot-atom = [CFWS] dot-atom-text [CFWS]
|
64
|
+
rule dot-atom
|
65
|
+
dot-atom-text
|
66
|
+
end
|
67
|
+
|
68
|
+
# qtext = %d33 / ; Printable US-ASCII
|
69
|
+
# %d35-91 / ; characters not including
|
70
|
+
# %d93-126 / ; "\" or the quote character
|
71
|
+
# obs-qtext
|
72
|
+
rule qtext
|
73
|
+
[\x21\x23-\x5B\x5D-\x7E] | obs-qtext
|
74
|
+
end
|
75
|
+
|
76
|
+
# qcontent = qtext / quoted-pair
|
77
|
+
rule qcontent
|
78
|
+
qtext | quoted-pair
|
79
|
+
end
|
80
|
+
|
81
|
+
# quoted-string = [CFWS]
|
82
|
+
# DQUOTE *([FWS] qcontent) [FWS] DQUOTE
|
83
|
+
# [CFWS]
|
84
|
+
rule quoted-string
|
85
|
+
'"' qcontent* '"'
|
86
|
+
end
|
87
|
+
|
88
|
+
# word = atom / quoted-string
|
89
|
+
rule word
|
90
|
+
atom | quoted-string
|
91
|
+
end
|
92
|
+
|
93
|
+
# addr-spec = local-part "@" domain
|
94
|
+
rule addr-spec
|
95
|
+
local-part "@" domain
|
96
|
+
end
|
97
|
+
|
98
|
+
# local-part = dot-atom / quoted-string / obs-local-part
|
99
|
+
rule local-part
|
100
|
+
dot-atom | quoted-string | obs-local-part
|
101
|
+
end
|
102
|
+
|
103
|
+
# domain = dot-atom / domain-literal / obs-domain
|
104
|
+
rule domain
|
105
|
+
dot-atom | domain-literal | obs-domain
|
106
|
+
end
|
107
|
+
|
108
|
+
# domain-literal = [CFWS] "[" *([FWS] dcontent) [FWS] "]" [CFWS]
|
109
|
+
rule domain-literal
|
110
|
+
"[" dtext* "]"
|
111
|
+
end
|
112
|
+
|
113
|
+
# dtext = %d33-90 / ; Printable US-ASCII
|
114
|
+
# %d94-126 / ; characters not including
|
115
|
+
# obs-dtext ; "[", "]", or "\"
|
116
|
+
rule dtext
|
117
|
+
[\x21-\x5A\x5E-\x7E] | obs-dtext
|
118
|
+
end
|
119
|
+
|
120
|
+
# text = %d1-9 / ; Characters excluding CR
|
121
|
+
# %d11 / ; and LF
|
122
|
+
# %d12 /
|
123
|
+
# %d14-127
|
124
|
+
rule text
|
125
|
+
[\x01-\x09\x0B\x0C\x0E-\x7F]
|
126
|
+
end
|
127
|
+
|
128
|
+
# obs-NO-WS-CTL = %d1-8 / ; US-ASCII control
|
129
|
+
# %d11 / ; characters that do not
|
130
|
+
# %d12 / ; include the carriage
|
131
|
+
# %d14-31 / ; return, line feed, and
|
132
|
+
# %d127 ; white space characters
|
133
|
+
rule obs-NO-WS-CTL
|
134
|
+
[\x01-\x08\x0B\x0C\x0E-\x1F\x7F]
|
135
|
+
end
|
136
|
+
|
137
|
+
# obs-qtext = obs-NO-WS-CTL
|
138
|
+
rule obs-qtext
|
139
|
+
obs-NO-WS-CTL
|
140
|
+
end
|
141
|
+
|
142
|
+
# obs-qp = "\" (%d0 / obs-NO-WS-CTL / LF / CR)
|
143
|
+
rule obs-qp
|
144
|
+
"\\" ("\x00" | obs-NO-WS-CTL | "\n" | "\r")
|
145
|
+
end
|
146
|
+
|
147
|
+
# obs-local-part = word *("." word)
|
148
|
+
rule obs-local-part
|
149
|
+
word ("." word)*
|
150
|
+
end
|
151
|
+
|
152
|
+
# obs-domain = atom *("." atom)
|
153
|
+
rule obs-domain
|
154
|
+
atom ("." atom)*
|
155
|
+
end
|
156
|
+
|
157
|
+
# obs-dtext = obs-NO-WS-CTL / quoted-pair
|
158
|
+
rule obs-dtext
|
159
|
+
obs-NO-WS-CTL | quoted-pair
|
160
|
+
end
|
161
|
+
end
|
@@ -0,0 +1,178 @@
|
|
1
|
+
# This file contains a suite of tests for the EmailAddress grammar
|
2
|
+
# found in email.citrus.
|
3
|
+
|
4
|
+
require 'citrus'
|
5
|
+
Citrus.require File.expand_path('../email', __FILE__)
|
6
|
+
require 'test/unit'
|
7
|
+
|
8
|
+
class EmailAddressTest < Test::Unit::TestCase
|
9
|
+
def test_addr_spec_valid
|
10
|
+
addresses = %w[
|
11
|
+
l3tt3rsAndNumb3rs@domain.com
|
12
|
+
has-dash@domain.com
|
13
|
+
hasApostrophe.o'leary@domain.org
|
14
|
+
uncommonTLD@domain.museum
|
15
|
+
uncommonTLD@domain.travel
|
16
|
+
uncommonTLD@domain.mobi
|
17
|
+
countryCodeTLD@domain.uk
|
18
|
+
countryCodeTLD@domain.rw
|
19
|
+
lettersInDomain@911.com
|
20
|
+
underscore_inLocal@domain.net
|
21
|
+
IPInsteadOfDomain@127.0.0.1
|
22
|
+
subdomain@sub.domain.com
|
23
|
+
local@dash-inDomain.com
|
24
|
+
dot.inLocal@foo.com
|
25
|
+
a@singleLetterLocal.org
|
26
|
+
singleLetterDomain@x.org
|
27
|
+
&*=?^+{}'~@validCharsInLocal.net
|
28
|
+
foor@bar.newTLD
|
29
|
+
]
|
30
|
+
|
31
|
+
addresses.each do |address|
|
32
|
+
match = EmailAddress.parse(address)
|
33
|
+
assert(match)
|
34
|
+
assert_equal(address, match)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
# NO-WS-CTL = %d1-8 / ; US-ASCII control characters
|
39
|
+
# %d11 / ; that do not include the
|
40
|
+
# %d12 / ; carriage return, line feed,
|
41
|
+
# %d14-31 / ; and white space characters
|
42
|
+
# %d127
|
43
|
+
def test_no_ws_ctl
|
44
|
+
chars = chars_no_ws_ctl
|
45
|
+
|
46
|
+
chars.each do |c|
|
47
|
+
match = EmailAddress.parse(c, :root => :'NO-WS-CTL')
|
48
|
+
assert(match)
|
49
|
+
assert_equal(c, match)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
# quoted-pair = ("\" text) / obs-qp
|
54
|
+
def test_quoted_pair
|
55
|
+
chars = chars_quoted_pair
|
56
|
+
|
57
|
+
chars.each do |c|
|
58
|
+
match = EmailAddress.parse(c, :root => :'quoted-pair')
|
59
|
+
assert(match)
|
60
|
+
assert_equal(c, match)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
# atext = ALPHA / DIGIT / ; Printable US-ASCII
|
65
|
+
# "!" / "#" / ; characters not including
|
66
|
+
# "$" / "%" / ; specials. Used for atoms.
|
67
|
+
# "&" / "'" /
|
68
|
+
# "*" / "+" /
|
69
|
+
# "-" / "/" /
|
70
|
+
# "=" / "?" /
|
71
|
+
# "^" / "_" /
|
72
|
+
# "`" / "{" /
|
73
|
+
# "|" / "}" /
|
74
|
+
# "~"
|
75
|
+
def test_atext
|
76
|
+
chars = ('A'..'Z').to_a
|
77
|
+
chars += ('a'..'z').to_a
|
78
|
+
chars += ('0'..'9').to_a
|
79
|
+
chars.push(*%w[! # $ % & ' * + - / = ? ^ _ ` { | } ~])
|
80
|
+
|
81
|
+
chars.each do |c|
|
82
|
+
match = EmailAddress.parse(c, :root => :atext)
|
83
|
+
assert(match)
|
84
|
+
assert_equal(c, match)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
# qtext = %d33 / ; Printable US-ASCII
|
89
|
+
# %d35-91 / ; characters not including
|
90
|
+
# %d93-126 / ; "\" or the quote character
|
91
|
+
# obs-qtext
|
92
|
+
def test_qtext
|
93
|
+
chars = ["\x21"]
|
94
|
+
chars += ("\x23".."\x5B").to_a
|
95
|
+
chars += ("\x5D".."\x7E").to_a
|
96
|
+
|
97
|
+
# obs-qtext
|
98
|
+
chars += chars_obs_no_ws_ctl
|
99
|
+
|
100
|
+
chars.each do |c|
|
101
|
+
match = EmailAddress.parse(c, :root => :qtext)
|
102
|
+
assert(match)
|
103
|
+
assert_equal(c, match)
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
# dtext = %d33-90 / ; Printable US-ASCII
|
108
|
+
# %d94-126 / ; characters not including
|
109
|
+
# obs-dtext ; "[", "]", or "\"
|
110
|
+
def test_dtext
|
111
|
+
chars = ("\x21".."\x5A").to_a
|
112
|
+
chars += ("\x5E".."\x7E").to_a
|
113
|
+
|
114
|
+
# obs-dtext
|
115
|
+
chars += chars_obs_no_ws_ctl
|
116
|
+
chars += chars_quoted_pair
|
117
|
+
|
118
|
+
chars.each do |c|
|
119
|
+
match = EmailAddress.parse(c, :root => :dtext)
|
120
|
+
assert(match)
|
121
|
+
assert_equal(c, match)
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
# text = %d1-9 / ; Characters excluding CR
|
126
|
+
# %d11 / ; and LF
|
127
|
+
# %d12 /
|
128
|
+
# %d14-127
|
129
|
+
def test_text
|
130
|
+
chars = chars_text
|
131
|
+
|
132
|
+
chars.each do |c|
|
133
|
+
match = EmailAddress.parse(c, :root => :text)
|
134
|
+
assert(match)
|
135
|
+
assert_equal(c, match)
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
# [\x01-\x08\x0B\x0C\x0E-\x1F\x7F]
|
140
|
+
def chars_no_ws_ctl
|
141
|
+
chars = ("\x01".."\x08").to_a
|
142
|
+
chars << "\x0B"
|
143
|
+
chars << "\x0C"
|
144
|
+
chars += ("\x0E".."\x1F").to_a
|
145
|
+
chars << "\x7F"
|
146
|
+
chars
|
147
|
+
end
|
148
|
+
|
149
|
+
# [\x01-\x09\x0B\x0C\x0E-\x7F]
|
150
|
+
def chars_text
|
151
|
+
chars = ("\x01".."\x09").to_a
|
152
|
+
chars << "\x0B"
|
153
|
+
chars << "\x0C"
|
154
|
+
chars += ("\x0E".."\x7F").to_a
|
155
|
+
chars
|
156
|
+
end
|
157
|
+
|
158
|
+
# [\x01-\x08\x0B\x0C\x0E-\x1F\x7F]
|
159
|
+
def chars_obs_no_ws_ctl
|
160
|
+
chars_no_ws_ctl
|
161
|
+
end
|
162
|
+
|
163
|
+
# ("\\" text) | obs-qp
|
164
|
+
def chars_quoted_pair
|
165
|
+
chars = chars_text.map {|c| "\\" + c }
|
166
|
+
chars += chars_obs_qp
|
167
|
+
chars
|
168
|
+
end
|
169
|
+
|
170
|
+
# "\\" ("\x00" | obs-NO-WS-CTL | "\n" | "\r")
|
171
|
+
def chars_obs_qp
|
172
|
+
chars = ["\x00"]
|
173
|
+
chars += chars_obs_no_ws_ctl
|
174
|
+
chars << "\n"
|
175
|
+
chars << "\r"
|
176
|
+
chars.map {|c| "\\" + c }
|
177
|
+
end
|
178
|
+
end
|
data/lib/citrus/file.rb
CHANGED
data/lib/citrus/version.rb
CHANGED
metadata
CHANGED
@@ -1,27 +1,34 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: citrus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 2
|
7
|
+
- 3
|
8
|
+
- 7
|
9
|
+
version: 2.3.7
|
5
10
|
platform: ruby
|
6
11
|
authors:
|
7
|
-
- Michael Jackson
|
12
|
+
- Michael Jackson
|
8
13
|
autorequire:
|
9
14
|
bindir: bin
|
10
15
|
cert_chain: []
|
11
16
|
|
12
|
-
date: 2011-02-
|
17
|
+
date: 2011-02-20 00:00:00 -08:00
|
13
18
|
default_executable:
|
14
19
|
dependencies:
|
15
|
-
- !ruby/object:Gem::Dependency
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: rake
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ">="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 0
|
29
|
+
version: "0"
|
30
|
+
type: :development
|
31
|
+
version_requirements: *id001
|
25
32
|
description: Parsing Expressions for Ruby
|
26
33
|
email: mjijackson@gmail.com
|
27
34
|
executables: []
|
@@ -29,159 +36,163 @@ executables: []
|
|
29
36
|
extensions: []
|
30
37
|
|
31
38
|
extra_rdoc_files:
|
32
|
-
- README
|
33
|
-
- CHANGES
|
39
|
+
- README
|
40
|
+
- CHANGES
|
34
41
|
files:
|
35
|
-
- benchmark/after.dat
|
36
|
-
- benchmark/before.dat
|
37
|
-
- benchmark/seqpar.citrus
|
38
|
-
- benchmark/seqpar.gnuplot
|
39
|
-
- benchmark/seqpar.rb
|
40
|
-
- doc/background.markdown
|
41
|
-
- doc/example.markdown
|
42
|
-
- doc/extras.markdown
|
43
|
-
- doc/index.markdown
|
44
|
-
- doc/license.markdown
|
45
|
-
- doc/links.markdown
|
46
|
-
- doc/syntax.markdown
|
47
|
-
- doc/testing.markdown
|
48
|
-
- examples/calc.citrus
|
49
|
-
- examples/calc_test.rb
|
50
|
-
- examples/calc_test.rbc
|
51
|
-
- examples/
|
52
|
-
- examples/
|
53
|
-
- examples/
|
54
|
-
- examples/
|
55
|
-
- examples/
|
56
|
-
- examples/
|
57
|
-
- examples/
|
58
|
-
- examples/
|
59
|
-
- examples/
|
60
|
-
-
|
61
|
-
-
|
62
|
-
- lib/citrus.rb
|
63
|
-
-
|
64
|
-
-
|
65
|
-
- test/
|
66
|
-
- test/
|
67
|
-
- test/
|
68
|
-
- test/
|
69
|
-
- test/
|
70
|
-
- test/
|
71
|
-
- test/
|
72
|
-
- test/
|
73
|
-
- test/
|
74
|
-
- test/
|
75
|
-
- test/
|
76
|
-
- test/
|
77
|
-
- test/
|
78
|
-
- test/
|
79
|
-
- test/
|
80
|
-
- test/
|
81
|
-
- test/
|
82
|
-
- test/
|
83
|
-
- test/
|
84
|
-
- test/
|
85
|
-
- test/
|
86
|
-
- test/
|
87
|
-
- test/
|
88
|
-
- test/
|
89
|
-
- test/
|
90
|
-
- test/
|
91
|
-
- test/
|
92
|
-
- test/
|
93
|
-
- test/
|
94
|
-
- test/
|
95
|
-
- test/
|
96
|
-
- test/
|
97
|
-
- test/
|
98
|
-
- test/
|
99
|
-
- test/
|
100
|
-
- test/
|
101
|
-
- test/
|
102
|
-
- test/
|
103
|
-
- test/
|
104
|
-
- test/
|
105
|
-
- test/
|
106
|
-
- test/
|
107
|
-
- test/
|
108
|
-
- test/
|
109
|
-
- test/
|
110
|
-
- test/
|
111
|
-
- test/
|
112
|
-
- citrus
|
113
|
-
-
|
114
|
-
-
|
115
|
-
-
|
42
|
+
- benchmark/after.dat
|
43
|
+
- benchmark/before.dat
|
44
|
+
- benchmark/seqpar.citrus
|
45
|
+
- benchmark/seqpar.gnuplot
|
46
|
+
- benchmark/seqpar.rb
|
47
|
+
- doc/background.markdown
|
48
|
+
- doc/example.markdown
|
49
|
+
- doc/extras.markdown
|
50
|
+
- doc/index.markdown
|
51
|
+
- doc/license.markdown
|
52
|
+
- doc/links.markdown
|
53
|
+
- doc/syntax.markdown
|
54
|
+
- doc/testing.markdown
|
55
|
+
- examples/calc.citrus
|
56
|
+
- examples/calc_test.rb
|
57
|
+
- examples/calc_test.rbc
|
58
|
+
- examples/email.citrus
|
59
|
+
- examples/email_test.rb
|
60
|
+
- examples/ipaddress.citrus
|
61
|
+
- examples/ipaddress_test.rb
|
62
|
+
- examples/ipaddress_test.rbc
|
63
|
+
- examples/ipv4address.citrus
|
64
|
+
- examples/ipv4address_test.rb
|
65
|
+
- examples/ipv4address_test.rbc
|
66
|
+
- examples/ipv6address.citrus
|
67
|
+
- examples/ipv6address_test.rb
|
68
|
+
- examples/ipv6address_test.rbc
|
69
|
+
- lib/citrus.rb
|
70
|
+
- lib/citrus/file.rb
|
71
|
+
- lib/citrus/version.rb
|
72
|
+
- test/alias_test.rb
|
73
|
+
- test/alias_test.rbc
|
74
|
+
- test/and_predicate_test.rb
|
75
|
+
- test/and_predicate_test.rbc
|
76
|
+
- test/but_predicate_test.rb
|
77
|
+
- test/but_predicate_test.rbc
|
78
|
+
- test/choice_test.rb
|
79
|
+
- test/choice_test.rbc
|
80
|
+
- test/extension_test.rb
|
81
|
+
- test/extension_test.rbc
|
82
|
+
- test/file_test.rb
|
83
|
+
- test/file_test.rbc
|
84
|
+
- test/grammar_test.rb
|
85
|
+
- test/grammar_test.rbc
|
86
|
+
- test/helper.rb
|
87
|
+
- test/helper.rbc
|
88
|
+
- test/input_test.rb
|
89
|
+
- test/input_test.rbc
|
90
|
+
- test/label_test.rb
|
91
|
+
- test/label_test.rbc
|
92
|
+
- test/match_test.rb
|
93
|
+
- test/match_test.rbc
|
94
|
+
- test/memoized_input_test.rb
|
95
|
+
- test/memoized_input_test.rbc
|
96
|
+
- test/multibyte_test.rb
|
97
|
+
- test/multibyte_test.rbc
|
98
|
+
- test/not_predicate_test.rb
|
99
|
+
- test/not_predicate_test.rbc
|
100
|
+
- test/parse_error_test.rb
|
101
|
+
- test/parse_error_test.rbc
|
102
|
+
- test/repeat_test.rb
|
103
|
+
- test/repeat_test.rbc
|
104
|
+
- test/sequence_test.rb
|
105
|
+
- test/sequence_test.rbc
|
106
|
+
- test/string_terminal_test.rb
|
107
|
+
- test/string_terminal_test.rbc
|
108
|
+
- test/super_test.rb
|
109
|
+
- test/super_test.rbc
|
110
|
+
- test/terminal_test.rb
|
111
|
+
- test/terminal_test.rbc
|
112
|
+
- test/_files/alias.citrus
|
113
|
+
- test/_files/grammar1.citrus
|
114
|
+
- test/_files/grammar2.citrus
|
115
|
+
- test/_files/grammar3.citrus
|
116
|
+
- test/_files/rule1.citrus
|
117
|
+
- test/_files/rule2.citrus
|
118
|
+
- test/_files/rule3.citrus
|
119
|
+
- test/_files/super.citrus
|
120
|
+
- test/_files/super2.citrus
|
121
|
+
- citrus.gemspec
|
122
|
+
- Rakefile
|
123
|
+
- README
|
124
|
+
- CHANGES
|
116
125
|
has_rdoc: true
|
117
126
|
homepage: http://mjijackson.com/citrus
|
118
127
|
licenses: []
|
119
128
|
|
120
129
|
post_install_message:
|
121
130
|
rdoc_options:
|
122
|
-
- --line-numbers
|
123
|
-
- --inline-source
|
124
|
-
- --title
|
125
|
-
- Citrus
|
126
|
-
- --main
|
127
|
-
- Citrus
|
131
|
+
- --line-numbers
|
132
|
+
- --inline-source
|
133
|
+
- --title
|
134
|
+
- Citrus
|
135
|
+
- --main
|
136
|
+
- Citrus
|
128
137
|
require_paths:
|
129
|
-
- lib
|
138
|
+
- lib
|
130
139
|
required_ruby_version: !ruby/object:Gem::Requirement
|
131
140
|
requirements:
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
141
|
+
- - ">="
|
142
|
+
- !ruby/object:Gem::Version
|
143
|
+
segments:
|
144
|
+
- 0
|
145
|
+
version: "0"
|
136
146
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
137
147
|
requirements:
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
148
|
+
- - ">="
|
149
|
+
- !ruby/object:Gem::Version
|
150
|
+
segments:
|
151
|
+
- 0
|
152
|
+
version: "0"
|
142
153
|
requirements: []
|
143
154
|
|
144
155
|
rubyforge_project:
|
145
|
-
rubygems_version: 1.3.
|
156
|
+
rubygems_version: 1.3.6
|
146
157
|
signing_key:
|
147
158
|
specification_version: 3
|
148
159
|
summary: Parsing Expressions for Ruby
|
149
160
|
test_files:
|
150
|
-
- test/alias_test.rb
|
151
|
-
- test/alias_test.rbc
|
152
|
-
- test/and_predicate_test.rb
|
153
|
-
- test/and_predicate_test.rbc
|
154
|
-
- test/but_predicate_test.rb
|
155
|
-
- test/but_predicate_test.rbc
|
156
|
-
- test/choice_test.rb
|
157
|
-
- test/choice_test.rbc
|
158
|
-
- test/extension_test.rb
|
159
|
-
- test/extension_test.rbc
|
160
|
-
- test/file_test.rb
|
161
|
-
- test/file_test.rbc
|
162
|
-
- test/grammar_test.rb
|
163
|
-
- test/grammar_test.rbc
|
164
|
-
- test/input_test.rb
|
165
|
-
- test/input_test.rbc
|
166
|
-
- test/label_test.rb
|
167
|
-
- test/label_test.rbc
|
168
|
-
- test/match_test.rb
|
169
|
-
- test/match_test.rbc
|
170
|
-
- test/memoized_input_test.rb
|
171
|
-
- test/memoized_input_test.rbc
|
172
|
-
- test/multibyte_test.rb
|
173
|
-
- test/multibyte_test.rbc
|
174
|
-
- test/not_predicate_test.rb
|
175
|
-
- test/not_predicate_test.rbc
|
176
|
-
- test/parse_error_test.rb
|
177
|
-
- test/parse_error_test.rbc
|
178
|
-
- test/repeat_test.rb
|
179
|
-
- test/repeat_test.rbc
|
180
|
-
- test/sequence_test.rb
|
181
|
-
- test/sequence_test.rbc
|
182
|
-
- test/string_terminal_test.rb
|
183
|
-
- test/string_terminal_test.rbc
|
184
|
-
- test/super_test.rb
|
185
|
-
- test/super_test.rbc
|
186
|
-
- test/terminal_test.rb
|
187
|
-
- test/terminal_test.rbc
|
161
|
+
- test/alias_test.rb
|
162
|
+
- test/alias_test.rbc
|
163
|
+
- test/and_predicate_test.rb
|
164
|
+
- test/and_predicate_test.rbc
|
165
|
+
- test/but_predicate_test.rb
|
166
|
+
- test/but_predicate_test.rbc
|
167
|
+
- test/choice_test.rb
|
168
|
+
- test/choice_test.rbc
|
169
|
+
- test/extension_test.rb
|
170
|
+
- test/extension_test.rbc
|
171
|
+
- test/file_test.rb
|
172
|
+
- test/file_test.rbc
|
173
|
+
- test/grammar_test.rb
|
174
|
+
- test/grammar_test.rbc
|
175
|
+
- test/input_test.rb
|
176
|
+
- test/input_test.rbc
|
177
|
+
- test/label_test.rb
|
178
|
+
- test/label_test.rbc
|
179
|
+
- test/match_test.rb
|
180
|
+
- test/match_test.rbc
|
181
|
+
- test/memoized_input_test.rb
|
182
|
+
- test/memoized_input_test.rbc
|
183
|
+
- test/multibyte_test.rb
|
184
|
+
- test/multibyte_test.rbc
|
185
|
+
- test/not_predicate_test.rb
|
186
|
+
- test/not_predicate_test.rbc
|
187
|
+
- test/parse_error_test.rb
|
188
|
+
- test/parse_error_test.rbc
|
189
|
+
- test/repeat_test.rb
|
190
|
+
- test/repeat_test.rbc
|
191
|
+
- test/sequence_test.rb
|
192
|
+
- test/sequence_test.rbc
|
193
|
+
- test/string_terminal_test.rb
|
194
|
+
- test/string_terminal_test.rbc
|
195
|
+
- test/super_test.rb
|
196
|
+
- test/super_test.rbc
|
197
|
+
- test/terminal_test.rb
|
198
|
+
- test/terminal_test.rbc
|