Class: HTTP::Accept::Languages::Locales
- Inherits:
-
Array
- Object
- Array
- HTTP::Accept::Languages::Locales
- Defined in:
- lib/http/accept/languages.rb
Overview
Provides an efficient data-structure for matching the Accept-Languages header to set of available locales according to tools.ietf.org/html/rfc7231#section-5.3.5 and tools.ietf.org/html/rfc4647#section-2.3
Instance Attribute Summary collapse
-
#patterns ⇒ Object
readonly
Returns the value of attribute patterns.
Class Method Summary collapse
Instance Method Summary collapse
-
#&(languages) ⇒ Object
Returns the intersection of others retaining order.
- #freeze ⇒ Object
- #include?(locale_name) ⇒ Boolean
-
#initialize(names) ⇒ Locales
constructor
A new instance of Locales.
Constructor Details
#initialize(names) ⇒ Locales
Returns a new instance of Locales.
52 53 54 55 56 57 58 59 60 |
# File 'lib/http/accept/languages.rb', line 52 def initialize(names) super(names) @patterns = {} self.each{|name| self.class.(name, @patterns)} self.freeze end |
Instance Attribute Details
#patterns ⇒ Object (readonly)
Returns the value of attribute patterns.
68 69 70 |
# File 'lib/http/accept/languages.rb', line 68 def patterns @patterns end |
Class Method Details
.expand(locale, into) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/http/accept/languages.rb', line 40 def self.(locale, into) parts = locale.split('-') while parts.size > 0 key = parts.join('-') into[key] ||= locale parts.pop end end |
Instance Method Details
#&(languages) ⇒ Object
Returns the intersection of others retaining order.
71 72 73 |
# File 'lib/http/accept/languages.rb', line 71 def & languages languages.collect{|language_range| @patterns[language_range.locale]}.compact end |
#freeze ⇒ Object
62 63 64 65 66 |
# File 'lib/http/accept/languages.rb', line 62 def freeze @patterns.freeze super end |
#include?(locale_name) ⇒ Boolean
75 76 77 |
# File 'lib/http/accept/languages.rb', line 75 def include? locale_name @patterns.include? locale_name end |