Class: HTTP::Accept::Languages::Locales
- Inherits:
-
Object
- Object
- 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
-
#names ⇒ Object
readonly
Returns the value of attribute names.
-
#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.
- #+(others) ⇒ Object
- #each(&block) ⇒ Object
- #freeze ⇒ Object
- #include?(locale_name) ⇒ Boolean
-
#initialize(names) ⇒ Locales
constructor
A new instance of Locales.
- #join(*args) ⇒ Object
- #to_a ⇒ Object
Constructor Details
#initialize(names) ⇒ Locales
Returns a new instance of Locales.
52 53 54 55 56 57 58 59 |
# File 'lib/http/accept/languages.rb', line 52 def initialize(names) @names = names @patterns = {} @names.each{|name| self.class.(name, @patterns)} self.freeze end |
Instance Attribute Details
#names ⇒ Object (readonly)
Returns the value of attribute names.
74 75 76 |
# File 'lib/http/accept/languages.rb', line 74 def names @names end |
#patterns ⇒ Object (readonly)
Returns the value of attribute patterns.
75 76 77 |
# File 'lib/http/accept/languages.rb', line 75 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.
78 79 80 |
# File 'lib/http/accept/languages.rb', line 78 def & languages languages.collect{|language_range| @patterns[language_range.locale]}.compact end |
#+(others) ⇒ Object
90 91 92 |
# File 'lib/http/accept/languages.rb', line 90 def + others self.class.new(@names + others.to_a) end |
#each(&block) ⇒ Object
68 69 70 71 72 |
# File 'lib/http/accept/languages.rb', line 68 def each(&block) return to_enum unless block_given? @names.each(&block) end |
#freeze ⇒ Object
61 62 63 64 65 66 |
# File 'lib/http/accept/languages.rb', line 61 def freeze @names.freeze @patterns.freeze super end |
#include?(locale_name) ⇒ Boolean
82 83 84 |
# File 'lib/http/accept/languages.rb', line 82 def include? locale_name @patterns.include? locale_name end |
#join(*args) ⇒ Object
86 87 88 |
# File 'lib/http/accept/languages.rb', line 86 def join(*args) @names.join(*args) end |
#to_a ⇒ Object
94 95 96 |
# File 'lib/http/accept/languages.rb', line 94 def to_a @names end |