module ABNF::Parser::Controls::ABNF

Public Instance Methods

alternation() click to toggle source
# File lib/abnf/parser/controls/abnf.rb, line 7
def alternation
  %{#{ABNF.foo} / #{ABNF.bar} / #{ABNF.baz}}
end
bar() click to toggle source
# File lib/abnf/parser/controls/abnf.rb, line 11
def bar
  '%x62.61.72'
end
baz() click to toggle source
# File lib/abnf/parser/controls/abnf.rb, line 15
def baz
  '%x62.61.7A'
end
concatenation() click to toggle source
# File lib/abnf/parser/controls/abnf.rb, line 19
def concatenation
  %{"[" #{foo} "]"}
end
example() click to toggle source
# File lib/abnf/parser/controls/abnf.rb, line 32
def example
  '(1*ALPHA "-" 1*ALPHA) / "~"'
end
Also aliased as: regexp_pattern
foo() click to toggle source
# File lib/abnf/parser/controls/abnf.rb, line 23
def foo
  '%x66.6F.6F'
end
Also aliased as: terminal
foobar() click to toggle source
# File lib/abnf/parser/controls/abnf.rb, line 28
def foobar
  '%x66.6F.6F.62.61.72'
end
recursion() click to toggle source
# File lib/abnf/parser/controls/abnf.rb, line 37
        def recursion
          <<-ABNF
s0 = n0 s0 / n1 s2 / n2 s1 / ""\r
s1 = n0 s1 / n1 s0 / n2 s2\r
s2 = n0 s2 / n1 s1 / n2 s0\r
n0 = "0" / "3" / "6" / "9"\r
n1 = "1" / "4" / "7"\r
n2 = "2" / "5" / "8"\r
          ABNF
        end
regexp_pattern()
Alias for: example
rfc5234() click to toggle source
# File lib/abnf/parser/controls/abnf.rb, line 48
        def rfc5234
          @rfc5234 ||= <<-ABNF
rulelist       =  1*( rule / (*c-wsp c-nl) )\r
\r
rule           =  rulename defined-as elements c-nl\r
                       ; continues if next line starts\r
                       ;  with white space\r
\r
rulename       =  ALPHA *(ALPHA / DIGIT / "-")\r
\r
defined-as     =  *c-wsp ("=" / "=/") *c-wsp\r
                       ; basic rules definition and\r
                       ;  incremental alternatives\r
\r
elements       =  alternation *c-wsp\r
\r
c-wsp          =  WSP / (c-nl WSP)\r
\r
c-nl           =  comment / CRLF\r
                       ; comment or newline\r
\r
comment        =  ";" *(WSP / VCHAR) CRLF\r
\r
alternation    =  concatenation\r
                  *(*c-wsp "/" *c-wsp concatenation)\r
\r
concatenation  =  repetition *(1*c-wsp repetition)\r
\r
repetition     =  [repeat] element\r
\r
repeat         =  1*DIGIT / (*DIGIT "*" *DIGIT)\r
\r
element        =  rulename / group / option /\r
                  char-val / num-val / prose-val\r
\r
group          =  "(" *c-wsp alternation *c-wsp ")"\r
\r
option         =  "[" *c-wsp alternation *c-wsp "]"\r
\r
char-val       =  DQUOTE *(%x20-21 / %x23-7E) DQUOTE\r
                       ; quoted string of SP and VCHAR\r
                       ;  without DQUOTE\r
\r
num-val        =  "%" (bin-val / dec-val / hex-val)\r
\r
bin-val        =  "b" 1*BIT\r
                  [ 1*("." 1*BIT) / ("-" 1*BIT) ]\r
                       ; series of concatenated bit values\r
                       ;  or single ONEOF range\r
\r
dec-val        =  "d" 1*DIGIT\r
                  [ 1*("." 1*DIGIT) / ("-" 1*DIGIT) ]\r
\r
hex-val        =  "x" 1*HEXDIG\r
                  [ 1*("." 1*HEXDIG) / ("-" 1*HEXDIG) ]\r
\r
prose-val      =  "<" *(%x20-3D / %x3F-7E) ">"\r
                       ; bracketed string of SP and VCHAR\r
                       ;  without angles\r
                       ; prose description, to be used as\r
                       ;  last resort\r
          ABNF
        end
rfc7230() click to toggle source
# File lib/abnf/parser/controls/abnf.rb, line 112
        def rfc7230
          @rfc7230 ||= <<-ABNF
BWS = OWS\r
Connection = *( "," OWS ) connection-option *( OWS "," [ OWS\r
 connection-option ] )\r
Content-Length = 1*DIGIT\r
HTTP-message = start-line *( header-field CRLF ) CRLF [ message-body\r
 ]\r
HTTP-name = %x48.54.54.50 ; HTTP\r
HTTP-version = HTTP-name "/" DIGIT "." DIGIT\r
Host = uri-host [ ":" port ]\r
OWS = *( SP / HTAB )\r
RWS = 1*( SP / HTAB )\r
TE = [ ( "," / t-codings ) *( OWS "," [ OWS t-codings ] ) ]\r
Trailer = *( "," OWS ) field-name *( OWS "," [ OWS field-name ] )\r
Transfer-Encoding = *( "," OWS ) transfer-coding *( OWS "," [ OWS\r
 transfer-coding ] )\r
URI-reference = <URI-reference, see [RFC3986], Section 4.1>\r
Upgrade = *( "," OWS ) protocol *( OWS "," [ OWS protocol ] )\r
Via = *( "," OWS ) ( received-protocol RWS received-by [ RWS comment\r
 ] ) *( OWS "," [ OWS ( received-protocol RWS received-by [ RWS\r
 comment ] ) ] )\r
absolute-URI = <absolute-URI, see [RFC3986], Section 4.3>\r
absolute-form = absolute-URI\r
absolute-path = 1*( "/" segment )\r
asterisk-form = "*"\r
authority = <authority, see [RFC3986], Section 3.2>\r
authority-form = authority\r
chunk = chunk-size [ chunk-ext ] CRLF chunk-data CRLF\r
chunk-data = 1*OCTET\r
chunk-ext = *( ";" chunk-ext-name [ "=" chunk-ext-val ] )\r
chunk-ext-name = token\r
chunk-ext-val = token / quoted-string\r
chunk-size = 1*HEXDIG\r
chunked-body = *chunk last-chunk trailer-part CRLF\r
comment = "(" *( ctext / quoted-pair / comment ) ")"\r
connection-option = token\r
ctext = HTAB / SP / %x21-27 ; '!'-'''\r
 / %x2A-5B ; '*'-'['\r
 / %x5D-7E ; ']'-'~'\r
 / obs-text\r
field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\r
field-name = token\r
field-value = *( field-content / obs-fold )\r
field-vchar = VCHAR / obs-text\r
fragment = <fragment, see [RFC3986], Section 3.5>\r
header-field = field-name ":" OWS field-value OWS\r
http-URI = "http://" authority path-abempty [ "?" query ] [ "#"\r
 fragment ]\r
https-URI = "https://" authority path-abempty [ "?" query ] [ "#"\r
 fragment ]\r
last-chunk = 1*"0" [ chunk-ext ] CRLF\r
message-body = *OCTET\r
method = token\r
obs-fold = CRLF 1*( SP / HTAB )\r
obs-text = %x80-FF\r
origin-form = absolute-path [ "?" query ]\r
partial-URI = relative-part [ "?" query ]\r
path-abempty = <path-abempty, see [RFC3986], Section 3.3>\r
port = <port, see [RFC3986], Section 3.2.3>\r
protocol = protocol-name [ "/" protocol-version ]\r
protocol-name = token\r
protocol-version = token\r
pseudonym = token\r
qdtext = HTAB / SP / "!" / %x23-5B ; '#'-'['\r
 / %x5D-7E ; ']'-'~'\r
 / obs-text\r
query = <query, see [RFC3986], Section 3.4>\r
quoted-pair = "\" ( HTAB / SP / VCHAR / obs-text )\r
quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE\r
rank = ( "0" [ "." *3DIGIT ] ) / ( "1" [ "." *3"0" ] )\r
reason-phrase = *( HTAB / SP / VCHAR / obs-text )\r
received-by = ( uri-host [ ":" port ] ) / pseudonym\r
received-protocol = [ protocol-name "/" ] protocol-version\r
relative-part = <relative-part, see [RFC3986], Section 4.2>\r
request-line = method SP request-target SP HTTP-version CRLF\r
request-target = origin-form / absolute-form / authority-form /\r
 asterisk-form\r
scheme = <scheme, see [RFC3986], Section 3.1>\r
segment = <segment, see [RFC3986], Section 3.3>\r
start-line = request-line / status-line\r
status-code = 3DIGIT\r
status-line = HTTP-version SP status-code SP reason-phrase CRLF\r
t-codings = "trailers" / ( transfer-coding [ t-ranking ] )\r
t-ranking = OWS ";" OWS "q=" rank\r
tchar = "!" / "#" / "$" / "%" / "&" / "'" / "*" / "+" / "-" / "." /\r
 "^" / "_" / "`" / "|" / "~" / DIGIT / ALPHA\r
token = 1*tchar\r
trailer-part = *( header-field CRLF )\r
transfer-coding = "chunked" / "compress" / "deflate" / "gzip" /\r
 transfer-extension\r
transfer-extension = token *( OWS ";" OWS transfer-parameter )\r
transfer-parameter = token BWS "=" BWS ( token / quoted-string )\r
uri-host = <host, see [RFC3986], Section 3.2.2>\r
Accept = [ ( "," / ( media-range [ accept-params ] ) ) *( OWS "," [\r
 OWS ( media-range [ accept-params ] ) ] ) ]\r
Accept-Charset = *( "," OWS ) ( ( charset / "*" ) [ weight ] ) *( OWS\r
 "," [ OWS ( ( charset / "*" ) [ weight ] ) ] )\r
Accept-Encoding = [ ( "," / ( codings [ weight ] ) ) *( OWS "," [ OWS\r
 ( codings [ weight ] ) ] ) ]\r
Accept-Language = *( "," OWS ) ( language-range [ weight ] ) *( OWS\r
 "," [ OWS ( language-range [ weight ] ) ] )\r
Allow = [ ( "," / method ) *( OWS "," [ OWS method ] ) ]\r
Content-Encoding = *( "," OWS ) content-coding *( OWS "," [ OWS\r
 content-coding ] )\r
Content-Language = *( "," OWS ) language-tag *( OWS "," [ OWS\r
 language-tag ] )\r
Content-Location = absolute-URI / partial-URI\r
Content-Type = media-type\r
Date = HTTP-date\r
Expect = "100-continue"\r
From = mailbox\r
GMT = %x47.4D.54 ; GMT\r
HTTP-date = IMF-fixdate / obs-date\r
IMF-fixdate = day-name "," SP date1 SP time-of-day SP GMT\r
Location = URI-reference\r
Max-Forwards = 1*DIGIT\r
Referer = absolute-URI / partial-URI\r
Retry-After = HTTP-date / delay-seconds\r
Server = product *( RWS ( product / comment ) )\r
User-Agent = product *( RWS ( product / comment ) )\r
Vary = "*" / ( *( "," OWS ) field-name *( OWS "," [ OWS field-name ]\r
 ) )\r
accept-ext = OWS ";" OWS token [ "=" ( token / quoted-string ) ]\r
accept-params = weight *accept-ext\r
asctime-date = day-name SP date3 SP time-of-day SP year\r
charset = token\r
codings = content-coding / "identity" / "*"\r
content-coding = token\r
date1 = day SP month SP year\r
date2 = day "-" month "-" 2DIGIT\r
date3 = month SP ( 2DIGIT / ( SP DIGIT ) )\r
day = 2DIGIT\r
day-name = %x4D.6F.6E ; Mon\r
 / %x54.75.65 ; Tue\r
 / %x57.65.64 ; Wed\r
 / %x54.68.75 ; Thu\r
 / %x46.72.69 ; Fri\r
 / %x53.61.74 ; Sat\r
 / %x53.75.6E ; Sun\r
day-name-l = %x4D.6F.6E.64.61.79 ; Monday\r
 / %x54.75.65.73.64.61.79 ; Tuesday\r
 / %x57.65.64.6E.65.73.64.61.79 ; Wednesday\r
 / %x54.68.75.72.73.64.61.79 ; Thursday\r
 / %x46.72.69.64.61.79 ; Friday\r
 / %x53.61.74.75.72.64.61.79 ; Saturday\r
 / %x53.75.6E.64.61.79 ; Sunday\r
delay-seconds = 1*DIGIT\r
hour = 2DIGIT\r
language-range = <language-range, see [RFC4647], Section 2.1>\r
language-tag = <Language-Tag, see [RFC5646], Section 2.1>\r
mailbox = <mailbox, see [RFC5322], Section 3.4>\r
media-range = ( "*/*" / ( type "/*" ) / ( type "/" subtype ) ) *( OWS\r
 ";" OWS parameter )\r
media-type = type "/" subtype *( OWS ";" OWS parameter )\r
method = token\r
minute = 2DIGIT\r
month = %x4A.61.6E ; Jan\r
 / %x46.65.62 ; Feb\r
 / %x4D.61.72 ; Mar\r
 / %x41.70.72 ; Apr\r
 / %x4D.61.79 ; May\r
 / %x4A.75.6E ; Jun\r
 / %x4A.75.6C ; Jul\r
 / %x41.75.67 ; Aug\r
 / %x53.65.70 ; Sep\r
 / %x4F.63.74 ; Oct\r
 / %x4E.6F.76 ; Nov\r
 / %x44.65.63 ; Dec\r
obs-date = rfc850-date / asctime-date\r
parameter = token "=" ( token / quoted-string )\r
product = token [ "/" product-version ]\r
product-version = token\r
qvalue = ( "0" [ "." *3DIGIT ] ) / ( "1" [ "." *3"0" ] )\r
rfc850-date = day-name-l "," SP date2 SP time-of-day SP GMT\r
second = 2DIGIT\r
subtype = token\r
time-of-day = hour ":" minute ":" second\r
type = token\r
weight = OWS ";" OWS "q=" qvalue\r
year = 4DIGIT\r
ETag = entity-tag\r
If-Match = "*" / ( *( "," OWS ) entity-tag *( OWS "," [ OWS\r
 entity-tag ] ) )\r
If-Modified-Since = HTTP-date\r
If-None-Match = "*" / ( *( "," OWS ) entity-tag *( OWS "," [ OWS\r
 entity-tag ] ) )\r
If-Unmodified-Since = HTTP-date\r
Last-Modified = HTTP-date\r
entity-tag = [ weak ] opaque-tag\r
etagc = "!" / %x23-7E ; '#'-'~'\r
 / obs-text\r
opaque-tag = DQUOTE *etagc DQUOTE\r
weak = %x57.2F ; W/\r
Accept-Ranges = acceptable-ranges\r
Content-Range = byte-content-range / other-content-range\r
If-Range = entity-tag / HTTP-date\r
Range = byte-ranges-specifier / other-ranges-specifier\r
acceptable-ranges = ( *( "," OWS ) range-unit *( OWS "," [ OWS\r
 range-unit ] ) ) / "none"\r
byte-content-range = bytes-unit SP ( byte-range-resp /\r
 unsatisfied-range )\r
byte-range = first-byte-pos "-" last-byte-pos\r
byte-range-resp = byte-range "/" ( complete-length / "*" )\r
byte-range-set = *( "," OWS ) ( byte-range-spec /\r
 suffix-byte-range-spec ) *( OWS "," [ OWS ( byte-range-spec /\r
 suffix-byte-range-spec ) ] )\r
byte-range-spec = first-byte-pos "-" [ last-byte-pos ]\r
byte-ranges-specifier = bytes-unit "=" byte-range-set\r
bytes-unit = "bytes"\r
complete-length = 1*DIGIT\r
first-byte-pos = 1*DIGIT\r
last-byte-pos = 1*DIGIT\r
other-content-range = other-range-unit SP other-range-resp\r
other-range-resp = *CHAR\r
other-range-set = 1*VCHAR\r
other-range-unit = token\r
other-ranges-specifier = other-range-unit "=" other-range-set\r
range-unit = bytes-unit / other-range-unit\r
suffix-byte-range-spec = "-" suffix-length\r
suffix-length = 1*DIGIT\r
unsatisfied-range = "*/" complete-length\r
Age = delta-seconds\r
Cache-Control = *( "," OWS ) cache-directive *( OWS "," [ OWS\r
 cache-directive ] )\r
Expires = HTTP-date\r
Pragma = *( "," OWS ) pragma-directive *( OWS "," [ OWS\r
 pragma-directive ] )\r
Warning = *( "," OWS ) warning-value *( OWS "," [ OWS warning-value ]\r
 )\r
cache-directive = token [ "=" ( token / quoted-string ) ]\r
delta-seconds = 1*DIGIT\r
extension-pragma = token [ "=" ( token / quoted-string ) ]\r
pragma-directive = "no-cache" / extension-pragma\r
warn-agent = ( uri-host [ ":" port ] ) / pseudonym\r
warn-code = 3DIGIT\r
warn-date = DQUOTE HTTP-date DQUOTE\r
warn-text = quoted-string\r
warning-value = warn-code SP warn-agent SP warn-text [ SP warn-date\r
 ]\r
Authorization = credentials\r
Proxy-Authenticate = *( "," OWS ) challenge *( OWS "," [ OWS\r
 challenge ] )\r
Proxy-Authorization = credentials\r
WWW-Authenticate = *( "," OWS ) challenge *( OWS "," [ OWS challenge\r
 ] )\r
auth-param = token BWS "=" BWS ( token / quoted-string )\r
auth-scheme = token\r
challenge = auth-scheme [ 1*SP ( token68 / [ ( "," / auth-param ) *(\r
 OWS "," [ OWS auth-param ] ) ] ) ]\r
credentials = auth-scheme [ 1*SP ( token68 / [ ( "," / auth-param )\r
 *( OWS "," [ OWS auth-param ] ) ] ) ]\r
token68 = 1*( ALPHA / DIGIT / "-" / "." / "_" / "~" / "+" / "/" )\r
 *"="\r
          ABNF
        end
rule() click to toggle source
# File lib/abnf/parser/controls/abnf.rb, line 369
def rule
  "some-rule = #{foo}\r\n"
end
terminal()
Alias for: foo