Class: AcceptLanguage::Parser
- Inherits:
-
Object
- Object
- AcceptLanguage::Parser
- Defined in:
- lib/accept_language/parser.rb
Overview
Parses Accept-Language header fields into structured data, extracting language tags and their quality values (q-values). Validates input according to RFC 2616 specifications and handles edge cases like malformed inputs and implicit quality values.
Constant Summary collapse
- DEFAULT_QUALITY =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
"1"- SEPARATOR =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
","- SPACE =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
" "- SUFFIX =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
";q="- QVALUE_PATTERN =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
/\A(?:0(?:\.[0-9]{1,3})?|1(?:\.0{1,3})?|\.[0-9]{1,3})\z/- LANGTAG_PATTERN =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
/\A(?:\*|[a-zA-Z]{1,8}(?:-[a-zA-Z0-9]{1,8})*)\z/
Instance Attribute Summary collapse
-
#languages_range ⇒ Hash<String, BigDecimal>
readonly
private
Parsed language tags and their quality values.
Instance Method Summary collapse
-
#initialize(field) ⇒ Parser
constructor
Initializes a new Parser instance by importing and processing the given Accept-Language header field.
-
#match(*available_langtags) ⇒ String, ...
Finds the best matching language from available options based on user preferences.
Constructor Details
#initialize(field) ⇒ Parser
Initializes a new Parser instance by importing and processing the given Accept-Language header field.
36 37 38 |
# File 'lib/accept_language/parser.rb', line 36 def initialize(field) @languages_range = import(field) end |
Instance Attribute Details
#languages_range ⇒ Hash<String, BigDecimal> (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns Parsed language tags and their quality values.
31 32 33 |
# File 'lib/accept_language/parser.rb', line 31 def languages_range @languages_range end |
Instance Method Details
#match(*available_langtags) ⇒ String, ...
Finds the best matching language from available options based on user preferences. Considers quality values and language tag specificity (e.g., “en-US” vs “en”).
50 51 52 |
# File 'lib/accept_language/parser.rb', line 50 def match(*) Matcher.new(**languages_range).call(*) end |