Class: LanguageTag
- Inherits:
-
Object
- Object
- LanguageTag
- Defined in:
- lib/rack/language_tag.rb
Overview
BCP 47
Constant Summary collapse
- VERSION =
"5646.0.1"
- A3_TO_A2 =
{ 'ara' => 'ar', 'deu' => 'de', 'eng' => 'en', 'fra' => 'fr', 'ita' => 'it', }
Class Method Summary collapse
Instance Method Summary collapse
- #==(other_code) ⇒ Object
- #a2_to_a3(alpha2) ⇒ Object
- #a3_to_a2(alpha3) ⇒ Object
- #alpha2 ⇒ Object
- #alpha3 ⇒ Object
- #complete ⇒ Object
- #eql?(other) ⇒ Boolean
- #hash ⇒ Object
-
#initialize(iso_code, extlang = nil, script = nil, region = nil, variant = [], extension = [], privateuse = nil) ⇒ LanguageTag
constructor
A new instance of LanguageTag.
- #inspect ⇒ Object
Constructor Details
#initialize(iso_code, extlang = nil, script = nil, region = nil, variant = [], extension = [], privateuse = nil) ⇒ LanguageTag
Returns a new instance of LanguageTag.
34 35 36 37 38 39 40 41 |
# File 'lib/rack/language_tag.rb', line 34 def initialize(iso_code, extlang = nil, script = nil, region = nil, variant = [], extension = [], privateuse = nil) case iso_code.length when 3 @alpha3 = iso_code when 2 @alpha2 = iso_code end end |
Class Method Details
.parse(raw_code) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/rack/language_tag.rb', line 20 def self.parse(raw_code) iso_code = raw_code.split('-').flatten.first if iso_code.nil? raise "Unparseable language tag" end if !(A3_TO_A2.keys + A3_TO_A2.values).include?(iso_code) raise "Unknown language tag #{iso_code}" #FIXME end return LanguageTag.new(iso_code) end |
Instance Method Details
#==(other_code) ⇒ Object
63 64 65 |
# File 'lib/rack/language_tag.rb', line 63 def ==(other_code) return self.complete == LanguageTag.new(other_code).complete end |
#a2_to_a3(alpha2) ⇒ Object
55 56 57 |
# File 'lib/rack/language_tag.rb', line 55 def a2_to_a3(alpha2) return A3_TO_A2.invert[alpha2] end |
#a3_to_a2(alpha3) ⇒ Object
51 52 53 |
# File 'lib/rack/language_tag.rb', line 51 def a3_to_a2(alpha3) return A3_TO_A2[alpha3] end |
#alpha2 ⇒ Object
43 44 45 |
# File 'lib/rack/language_tag.rb', line 43 def alpha2 @alpha2 ||= a3_to_a2(@alpha3) end |
#alpha3 ⇒ Object
47 48 49 |
# File 'lib/rack/language_tag.rb', line 47 def alpha3 @alpha3 ||= a2_to_a3(@alpha2) end |
#complete ⇒ Object
59 60 61 |
# File 'lib/rack/language_tag.rb', line 59 def complete alpha3 end |
#eql?(other) ⇒ Boolean
71 72 73 74 75 76 77 78 79 |
# File 'lib/rack/language_tag.rb', line 71 def eql?(other) if self.equal?(other) return true elsif self.class != other.class return false end return self.alpha3 == other.alpha3 end |
#hash ⇒ Object
67 68 69 |
# File 'lib/rack/language_tag.rb', line 67 def hash self.complete.hash end |
#inspect ⇒ Object
81 82 83 |
# File 'lib/rack/language_tag.rb', line 81 def inspect return "#<LocaleCode '#{complete}'>" end |