Method: Rack::Acceptable::LanguageTag.extract_language_info
- Defined in:
- lib/rack/acceptable/language_tag.rb
.extract_language_info(langtag) ⇒ Object
Parameters
- langtag<String>
-
The LangTag snippet.
Returns
- Array or nil
-
It returns
nil, when the snipped passed:-
does not conform the Language-Tag ABNF (malformed)
-
represents a ‘grandfathered’ Language-Tag
-
starts with ‘x’ singleton (‘privateuse’).
Otherwise you’ll get an
Arraywith:-
primary subtag (as
String, downcased), -
extlang (as
String, downcased) ornil, -
script (as
String, capitalized) ornil, -
region (as
String, upcased) ornil -
downcased variants (
Array) or nil.
-
Notes
In most cases, it’s quite enough. Take a look, for example, at ‘35-character recomendation’.
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
# File 'lib/rack/acceptable/language_tag.rb', line 105 def extract_language_info(langtag) tag = langtag.downcase return nil if GRANDFATHERED_TAGS.key?(langtag) return nil unless LANGTAG_INFO_REGEX === tag primary = $1 extlang = nil script = $2 region = $3 variants = $4.split(Utils::HYPHEN_SPLITTER)[1..-1] primary, *extlang = primary.split(Utils::HYPHEN_SPLITTER) if primary.include?(Const::HYPHEN) script.capitalize! if script region.upcase! if region [primary, extlang, script, region, variants] end |