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