Class: HeadMusic::Named::Locale

Inherits:
Object
  • Object
show all
Defined in:
lib/head_music/named.rb

Overview

Locale encapsulates a language and optional region or country.

Constant Summary collapse

DEFAULT_CODE =
:en_US

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(language:, region: nil) ⇒ Locale



24
25
26
27
# File 'lib/head_music/named.rb', line 24

def initialize(language:, region: nil)
  @language = language
  @region = region
end

Instance Attribute Details

#languageObject (readonly)

Returns the value of attribute language.



9
10
11
# File 'lib/head_music/named.rb', line 9

def language
  @language
end

#regionObject (readonly)

Returns the value of attribute region.



9
10
11
# File 'lib/head_music/named.rb', line 9

def region
  @region
end

Class Method Details

.default_localeObject



11
12
13
# File 'lib/head_music/named.rb', line 11

def self.default_locale
  get(DEFAULT_CODE)
end

.get(code) ⇒ Object



15
16
17
18
19
20
21
22
# File 'lib/head_music/named.rb', line 15

def self.get(code)
  @locales ||= {}
  parts = code.to_s.split(/[_-]/)
  language = parts[0].downcase
  region = parts[1]&.upcase
  key = [language, region].compact.join("_").to_sym
  @locales[key] ||= new(language: language, region: region)
end

Instance Method Details

#codeObject



29
30
31
# File 'lib/head_music/named.rb', line 29

def code
  @code ||= [@language, @region].compact.join("_")
end