class AcceptLanguage
The accept-language
header represents a list of languages that the client can accept.
Definitions
NAME = /\*|[A-Z]{1,8}(-[A-Z0-9]{1,8})*/i
https://tools.ietf.org/html/rfc3066#section-2.1
QVALUE = /0(\.[0-9]{0,6})?|1(\.[0]{0,6})?/
https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.9
LANGUAGE = /\A(?<name>#{NAME})(\s*;\s*q=(?<q>#{QVALUE}))?\z/
https://greenbytes.de/tech/webdav/rfc7231.html#quality.values
def languages
Parse the accept-language
header value into a list of languages.
Signature
-
returns
Array(Charset)
the list of character sets and their associated quality factors.
Implementation
def languages
self.map do |value|
if match = value.match(LANGUAGE)
Language.new(match[:name], match[:q])
else
raise ParseError.new("Could not parse language: #{value.inspect}")
end
end
end