abnf-parser 0.9.0 → 0.9.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.
- checksums.yaml +4 -4
- data/lib/abnf/parser/compiler/tokenizer.rb +1 -1
- data/lib/abnf/parser/controls/abnf.rb +160 -22
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a4160027da7c08d76478b03eda82487fd7453220
|
4
|
+
data.tar.gz: 516ba6741b12aab8b32a2d6364ed799060c17e8e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 89ef6ad05da88e03b6796dfe929db933435485596a60a11d3a48bcdd822c92d65e7e5187e45f822625298fbadbd81ef41d0fad1838313fc4a0acaaa71f971786
|
7
|
+
data.tar.gz: c710878b2a4d8f5328eb2b03223cab2f4718efda7cf52b59649be6e381357db846ed655319ce032dc0a814fad763b48155342fd901aa34fd615f5ba519257de2
|
@@ -112,41 +112,31 @@ prose-val = "<" *(%x20-3D / %x3F-7E) ">"\r
|
|
112
112
|
def rfc7230
|
113
113
|
@rfc7230 ||= <<-ABNF
|
114
114
|
BWS = OWS\r
|
115
|
-
\r
|
116
115
|
Connection = *( "," OWS ) connection-option *( OWS "," [ OWS\r
|
117
116
|
connection-option ] )\r
|
118
|
-
\r
|
119
117
|
Content-Length = 1*DIGIT\r
|
120
|
-
\r
|
121
118
|
HTTP-message = start-line *( header-field CRLF ) CRLF [ message-body\r
|
122
119
|
]\r
|
123
120
|
HTTP-name = %x48.54.54.50 ; HTTP\r
|
124
121
|
HTTP-version = HTTP-name "/" DIGIT "." DIGIT\r
|
125
122
|
Host = uri-host [ ":" port ]\r
|
126
|
-
\r
|
127
123
|
OWS = *( SP / HTAB )\r
|
128
|
-
\r
|
129
124
|
RWS = 1*( SP / HTAB )\r
|
130
|
-
\r
|
131
125
|
TE = [ ( "," / t-codings ) *( OWS "," [ OWS t-codings ] ) ]\r
|
132
126
|
Trailer = *( "," OWS ) field-name *( OWS "," [ OWS field-name ] )\r
|
133
127
|
Transfer-Encoding = *( "," OWS ) transfer-coding *( OWS "," [ OWS\r
|
134
128
|
transfer-coding ] )\r
|
135
|
-
\r
|
136
129
|
URI-reference = <URI-reference, see [RFC3986], Section 4.1>\r
|
137
130
|
Upgrade = *( "," OWS ) protocol *( OWS "," [ OWS protocol ] )\r
|
138
|
-
\r
|
139
131
|
Via = *( "," OWS ) ( received-protocol RWS received-by [ RWS comment\r
|
140
132
|
] ) *( OWS "," [ OWS ( received-protocol RWS received-by [ RWS\r
|
141
133
|
comment ] ) ] )\r
|
142
|
-
\r
|
143
134
|
absolute-URI = <absolute-URI, see [RFC3986], Section 4.3>\r
|
144
135
|
absolute-form = absolute-URI\r
|
145
136
|
absolute-path = 1*( "/" segment )\r
|
146
137
|
asterisk-form = "*"\r
|
147
138
|
authority = <authority, see [RFC3986], Section 3.2>\r
|
148
139
|
authority-form = authority\r
|
149
|
-
\r
|
150
140
|
chunk = chunk-size [ chunk-ext ] CRLF chunk-data CRLF\r
|
151
141
|
chunk-data = 1*OCTET\r
|
152
142
|
chunk-ext = *( ";" chunk-ext-name [ "=" chunk-ext-val ] )\r
|
@@ -160,28 +150,22 @@ ctext = HTAB / SP / %x21-27 ; '!'-'''\r
|
|
160
150
|
/ %x2A-5B ; '*'-'['\r
|
161
151
|
/ %x5D-7E ; ']'-'~'\r
|
162
152
|
/ obs-text\r
|
163
|
-
\r
|
164
153
|
field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\r
|
165
154
|
field-name = token\r
|
166
155
|
field-value = *( field-content / obs-fold )\r
|
167
156
|
field-vchar = VCHAR / obs-text\r
|
168
157
|
fragment = <fragment, see [RFC3986], Section 3.5>\r
|
169
|
-
\r
|
170
158
|
header-field = field-name ":" OWS field-value OWS\r
|
171
159
|
http-URI = "http://" authority path-abempty [ "?" query ] [ "#"\r
|
172
160
|
fragment ]\r
|
173
161
|
https-URI = "https://" authority path-abempty [ "?" query ] [ "#"\r
|
174
162
|
fragment ]\r
|
175
|
-
\r
|
176
163
|
last-chunk = 1*"0" [ chunk-ext ] CRLF\r
|
177
|
-
\r
|
178
164
|
message-body = *OCTET\r
|
179
165
|
method = token\r
|
180
|
-
\r
|
181
166
|
obs-fold = CRLF 1*( SP / HTAB )\r
|
182
167
|
obs-text = %x80-FF\r
|
183
168
|
origin-form = absolute-path [ "?" query ]\r
|
184
|
-
\r
|
185
169
|
partial-URI = relative-part [ "?" query ]\r
|
186
170
|
path-abempty = <path-abempty, see [RFC3986], Section 3.3>\r
|
187
171
|
port = <port, see [RFC3986], Section 3.2.3>\r
|
@@ -189,15 +173,12 @@ protocol = protocol-name [ "/" protocol-version ]\r
|
|
189
173
|
protocol-name = token\r
|
190
174
|
protocol-version = token\r
|
191
175
|
pseudonym = token\r
|
192
|
-
\r
|
193
176
|
qdtext = HTAB / SP / "!" / %x23-5B ; '#'-'['\r
|
194
177
|
/ %x5D-7E ; ']'-'~'\r
|
195
178
|
/ obs-text\r
|
196
179
|
query = <query, see [RFC3986], Section 3.4>\r
|
197
180
|
quoted-pair = "\" ( HTAB / SP / VCHAR / obs-text )\r
|
198
|
-
\r
|
199
181
|
quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE\r
|
200
|
-
\r
|
201
182
|
rank = ( "0" [ "." *3DIGIT ] ) / ( "1" [ "." *3"0" ] )\r
|
202
183
|
reason-phrase = *( HTAB / SP / VCHAR / obs-text )\r
|
203
184
|
received-by = ( uri-host [ ":" port ] ) / pseudonym\r
|
@@ -206,13 +187,11 @@ relative-part = <relative-part, see [RFC3986], Section 4.2>\r
|
|
206
187
|
request-line = method SP request-target SP HTTP-version CRLF\r
|
207
188
|
request-target = origin-form / absolute-form / authority-form /\r
|
208
189
|
asterisk-form\r
|
209
|
-
\r
|
210
190
|
scheme = <scheme, see [RFC3986], Section 3.1>\r
|
211
191
|
segment = <segment, see [RFC3986], Section 3.3>\r
|
212
192
|
start-line = request-line / status-line\r
|
213
193
|
status-code = 3DIGIT\r
|
214
194
|
status-line = HTTP-version SP status-code SP reason-phrase CRLF\r
|
215
|
-
\r
|
216
195
|
t-codings = "trailers" / ( transfer-coding [ t-ranking ] )\r
|
217
196
|
t-ranking = OWS ";" OWS "q=" rank\r
|
218
197
|
tchar = "!" / "#" / "$" / "%" / "&" / "'" / "*" / "+" / "-" / "." /\r
|
@@ -223,8 +202,167 @@ transfer-coding = "chunked" / "compress" / "deflate" / "gzip" /\r
|
|
223
202
|
transfer-extension\r
|
224
203
|
transfer-extension = token *( OWS ";" OWS transfer-parameter )\r
|
225
204
|
transfer-parameter = token BWS "=" BWS ( token / quoted-string )\r
|
226
|
-
\r
|
227
205
|
uri-host = <host, see [RFC3986], Section 3.2.2>\r
|
206
|
+
Accept = [ ( "," / ( media-range [ accept-params ] ) ) *( OWS "," [\r
|
207
|
+
OWS ( media-range [ accept-params ] ) ] ) ]\r
|
208
|
+
Accept-Charset = *( "," OWS ) ( ( charset / "*" ) [ weight ] ) *( OWS\r
|
209
|
+
"," [ OWS ( ( charset / "*" ) [ weight ] ) ] )\r
|
210
|
+
Accept-Encoding = [ ( "," / ( codings [ weight ] ) ) *( OWS "," [ OWS\r
|
211
|
+
( codings [ weight ] ) ] ) ]\r
|
212
|
+
Accept-Language = *( "," OWS ) ( language-range [ weight ] ) *( OWS\r
|
213
|
+
"," [ OWS ( language-range [ weight ] ) ] )\r
|
214
|
+
Allow = [ ( "," / method ) *( OWS "," [ OWS method ] ) ]\r
|
215
|
+
Content-Encoding = *( "," OWS ) content-coding *( OWS "," [ OWS\r
|
216
|
+
content-coding ] )\r
|
217
|
+
Content-Language = *( "," OWS ) language-tag *( OWS "," [ OWS\r
|
218
|
+
language-tag ] )\r
|
219
|
+
Content-Location = absolute-URI / partial-URI\r
|
220
|
+
Content-Type = media-type\r
|
221
|
+
Date = HTTP-date\r
|
222
|
+
Expect = "100-continue"\r
|
223
|
+
From = mailbox\r
|
224
|
+
GMT = %x47.4D.54 ; GMT\r
|
225
|
+
HTTP-date = IMF-fixdate / obs-date\r
|
226
|
+
IMF-fixdate = day-name "," SP date1 SP time-of-day SP GMT\r
|
227
|
+
Location = URI-reference\r
|
228
|
+
Max-Forwards = 1*DIGIT\r
|
229
|
+
Referer = absolute-URI / partial-URI\r
|
230
|
+
Retry-After = HTTP-date / delay-seconds\r
|
231
|
+
Server = product *( RWS ( product / comment ) )\r
|
232
|
+
User-Agent = product *( RWS ( product / comment ) )\r
|
233
|
+
Vary = "*" / ( *( "," OWS ) field-name *( OWS "," [ OWS field-name ]\r
|
234
|
+
) )\r
|
235
|
+
accept-ext = OWS ";" OWS token [ "=" ( token / quoted-string ) ]\r
|
236
|
+
accept-params = weight *accept-ext\r
|
237
|
+
asctime-date = day-name SP date3 SP time-of-day SP year\r
|
238
|
+
charset = token\r
|
239
|
+
codings = content-coding / "identity" / "*"\r
|
240
|
+
content-coding = token\r
|
241
|
+
date1 = day SP month SP year\r
|
242
|
+
date2 = day "-" month "-" 2DIGIT\r
|
243
|
+
date3 = month SP ( 2DIGIT / ( SP DIGIT ) )\r
|
244
|
+
day = 2DIGIT\r
|
245
|
+
day-name = %x4D.6F.6E ; Mon\r
|
246
|
+
/ %x54.75.65 ; Tue\r
|
247
|
+
/ %x57.65.64 ; Wed\r
|
248
|
+
/ %x54.68.75 ; Thu\r
|
249
|
+
/ %x46.72.69 ; Fri\r
|
250
|
+
/ %x53.61.74 ; Sat\r
|
251
|
+
/ %x53.75.6E ; Sun\r
|
252
|
+
day-name-l = %x4D.6F.6E.64.61.79 ; Monday\r
|
253
|
+
/ %x54.75.65.73.64.61.79 ; Tuesday\r
|
254
|
+
/ %x57.65.64.6E.65.73.64.61.79 ; Wednesday\r
|
255
|
+
/ %x54.68.75.72.73.64.61.79 ; Thursday\r
|
256
|
+
/ %x46.72.69.64.61.79 ; Friday\r
|
257
|
+
/ %x53.61.74.75.72.64.61.79 ; Saturday\r
|
258
|
+
/ %x53.75.6E.64.61.79 ; Sunday\r
|
259
|
+
delay-seconds = 1*DIGIT\r
|
260
|
+
hour = 2DIGIT\r
|
261
|
+
language-range = <language-range, see [RFC4647], Section 2.1>\r
|
262
|
+
language-tag = <Language-Tag, see [RFC5646], Section 2.1>\r
|
263
|
+
mailbox = <mailbox, see [RFC5322], Section 3.4>\r
|
264
|
+
media-range = ( "*/*" / ( type "/*" ) / ( type "/" subtype ) ) *( OWS\r
|
265
|
+
";" OWS parameter )\r
|
266
|
+
media-type = type "/" subtype *( OWS ";" OWS parameter )\r
|
267
|
+
method = token\r
|
268
|
+
minute = 2DIGIT\r
|
269
|
+
month = %x4A.61.6E ; Jan\r
|
270
|
+
/ %x46.65.62 ; Feb\r
|
271
|
+
/ %x4D.61.72 ; Mar\r
|
272
|
+
/ %x41.70.72 ; Apr\r
|
273
|
+
/ %x4D.61.79 ; May\r
|
274
|
+
/ %x4A.75.6E ; Jun\r
|
275
|
+
/ %x4A.75.6C ; Jul\r
|
276
|
+
/ %x41.75.67 ; Aug\r
|
277
|
+
/ %x53.65.70 ; Sep\r
|
278
|
+
/ %x4F.63.74 ; Oct\r
|
279
|
+
/ %x4E.6F.76 ; Nov\r
|
280
|
+
/ %x44.65.63 ; Dec\r
|
281
|
+
obs-date = rfc850-date / asctime-date\r
|
282
|
+
parameter = token "=" ( token / quoted-string )\r
|
283
|
+
product = token [ "/" product-version ]\r
|
284
|
+
product-version = token\r
|
285
|
+
qvalue = ( "0" [ "." *3DIGIT ] ) / ( "1" [ "." *3"0" ] )\r
|
286
|
+
rfc850-date = day-name-l "," SP date2 SP time-of-day SP GMT\r
|
287
|
+
second = 2DIGIT\r
|
288
|
+
subtype = token\r
|
289
|
+
time-of-day = hour ":" minute ":" second\r
|
290
|
+
type = token\r
|
291
|
+
weight = OWS ";" OWS "q=" qvalue\r
|
292
|
+
year = 4DIGIT\r
|
293
|
+
ETag = entity-tag\r
|
294
|
+
If-Match = "*" / ( *( "," OWS ) entity-tag *( OWS "," [ OWS\r
|
295
|
+
entity-tag ] ) )\r
|
296
|
+
If-Modified-Since = HTTP-date\r
|
297
|
+
If-None-Match = "*" / ( *( "," OWS ) entity-tag *( OWS "," [ OWS\r
|
298
|
+
entity-tag ] ) )\r
|
299
|
+
If-Unmodified-Since = HTTP-date\r
|
300
|
+
Last-Modified = HTTP-date\r
|
301
|
+
entity-tag = [ weak ] opaque-tag\r
|
302
|
+
etagc = "!" / %x23-7E ; '#'-'~'\r
|
303
|
+
/ obs-text\r
|
304
|
+
opaque-tag = DQUOTE *etagc DQUOTE\r
|
305
|
+
weak = %x57.2F ; W/\r
|
306
|
+
Accept-Ranges = acceptable-ranges\r
|
307
|
+
Content-Range = byte-content-range / other-content-range\r
|
308
|
+
If-Range = entity-tag / HTTP-date\r
|
309
|
+
Range = byte-ranges-specifier / other-ranges-specifier\r
|
310
|
+
acceptable-ranges = ( *( "," OWS ) range-unit *( OWS "," [ OWS\r
|
311
|
+
range-unit ] ) ) / "none"\r
|
312
|
+
byte-content-range = bytes-unit SP ( byte-range-resp /\r
|
313
|
+
unsatisfied-range )\r
|
314
|
+
byte-range = first-byte-pos "-" last-byte-pos\r
|
315
|
+
byte-range-resp = byte-range "/" ( complete-length / "*" )\r
|
316
|
+
byte-range-set = *( "," OWS ) ( byte-range-spec /\r
|
317
|
+
suffix-byte-range-spec ) *( OWS "," [ OWS ( byte-range-spec /\r
|
318
|
+
suffix-byte-range-spec ) ] )\r
|
319
|
+
byte-range-spec = first-byte-pos "-" [ last-byte-pos ]\r
|
320
|
+
byte-ranges-specifier = bytes-unit "=" byte-range-set\r
|
321
|
+
bytes-unit = "bytes"\r
|
322
|
+
complete-length = 1*DIGIT\r
|
323
|
+
first-byte-pos = 1*DIGIT\r
|
324
|
+
last-byte-pos = 1*DIGIT\r
|
325
|
+
other-content-range = other-range-unit SP other-range-resp\r
|
326
|
+
other-range-resp = *CHAR\r
|
327
|
+
other-range-set = 1*VCHAR\r
|
328
|
+
other-range-unit = token\r
|
329
|
+
other-ranges-specifier = other-range-unit "=" other-range-set\r
|
330
|
+
range-unit = bytes-unit / other-range-unit\r
|
331
|
+
suffix-byte-range-spec = "-" suffix-length\r
|
332
|
+
suffix-length = 1*DIGIT\r
|
333
|
+
unsatisfied-range = "*/" complete-length\r
|
334
|
+
Age = delta-seconds\r
|
335
|
+
Cache-Control = *( "," OWS ) cache-directive *( OWS "," [ OWS\r
|
336
|
+
cache-directive ] )\r
|
337
|
+
Expires = HTTP-date\r
|
338
|
+
Pragma = *( "," OWS ) pragma-directive *( OWS "," [ OWS\r
|
339
|
+
pragma-directive ] )\r
|
340
|
+
Warning = *( "," OWS ) warning-value *( OWS "," [ OWS warning-value ]\r
|
341
|
+
)\r
|
342
|
+
cache-directive = token [ "=" ( token / quoted-string ) ]\r
|
343
|
+
delta-seconds = 1*DIGIT\r
|
344
|
+
extension-pragma = token [ "=" ( token / quoted-string ) ]\r
|
345
|
+
pragma-directive = "no-cache" / extension-pragma\r
|
346
|
+
warn-agent = ( uri-host [ ":" port ] ) / pseudonym\r
|
347
|
+
warn-code = 3DIGIT\r
|
348
|
+
warn-date = DQUOTE HTTP-date DQUOTE\r
|
349
|
+
warn-text = quoted-string\r
|
350
|
+
warning-value = warn-code SP warn-agent SP warn-text [ SP warn-date\r
|
351
|
+
]\r
|
352
|
+
Authorization = credentials\r
|
353
|
+
Proxy-Authenticate = *( "," OWS ) challenge *( OWS "," [ OWS\r
|
354
|
+
challenge ] )\r
|
355
|
+
Proxy-Authorization = credentials\r
|
356
|
+
WWW-Authenticate = *( "," OWS ) challenge *( OWS "," [ OWS challenge\r
|
357
|
+
] )\r
|
358
|
+
auth-param = token BWS "=" BWS ( token / quoted-string )\r
|
359
|
+
auth-scheme = token\r
|
360
|
+
challenge = auth-scheme [ 1*SP ( token68 / [ ( "," / auth-param ) *(\r
|
361
|
+
OWS "," [ OWS auth-param ] ) ] ) ]\r
|
362
|
+
credentials = auth-scheme [ 1*SP ( token68 / [ ( "," / auth-param )\r
|
363
|
+
*( OWS "," [ OWS auth-param ] ) ] ) ]\r
|
364
|
+
token68 = 1*( ALPHA / DIGIT / "-" / "." / "_" / "~" / "+" / "/" )\r
|
365
|
+
*"="\r
|
228
366
|
ABNF
|
229
367
|
end
|
230
368
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: abnf-parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nathan Ladd
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-12-
|
11
|
+
date: 2015-12-20 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: abnf-parser allows you to compile ABNF (Augmented Backus-Naur Form) into
|
14
14
|
rule lists that can be used to efficiently parse text conforming to ABNF grammar.
|