abnf-parser 0.9.0 → 0.9.1
Sign up to get free protection for your applications and to get access to all the features.
- 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.
|