Module: WorldFlags::Util::Language

Extended by:
NameEnabler
Defined in:
lib/world_flags/util/language.rb

Instance Attribute Summary collapse

Attributes included from NameEnabler

#name_enabled

Instance Method Summary collapse

Methods included from NameEnabler

name_disable!, name_enable!, name_enabled?

Instance Attribute Details

#hashied_languagesObject



57
58
59
60
61
62
63
64
65
66
# File 'lib/world_flags/util/language.rb', line 57

def hashied_languages
  @hashied_languages ||= begin
    case languages
    when Hash
      Hashie::Mash.new languages
    else
      languages
    end
  end
end

#languages_mapObject



48
49
50
51
52
53
54
55
# File 'lib/world_flags/util/language.rb', line 48

def languages_map
  @languages_map ||= begin 
    available_locales.inject({}) do |res, loc|
      res[loc] = find_language_map(loc)
      res
    end
  end
end

Instance Method Details

#find_language_map(loc) ⇒ Object



68
69
70
71
72
# File 'lib/world_flags/util/language.rb', line 68

def find_language_map loc
  hashied_languages.respond_to?(loc) ? hashied_languages.send(loc) : hashied_languages.send(locale(loc))
rescue
  hashied_languages.send(default_locale_used)
end

#language(code = :us, locale = :en) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/world_flags/util/language.rb', line 14

def language code = :us, locale = :en 
  locale ||= default_locale_used      
  locale = WorldFlags.locale(locale).to_sym

  locale_languages_map = languages_map[locale] || languages_map[default_locale_used]
  locale_languages_map = languages_map[:en] if locale_languages_map.blank?

  raise "No language-locale map defined for locale: #{locale} or :en in #{locale_languages_map.inspect}" if locale_languages_map.blank?

  # raise("No language map defined for language code: #{code} in #{locale_languages_map[code]}")      
  code_language = locale_languages_map[code] ? locale_languages_map[code] : locale_languages_map[default_code_used]         

  case code_language
  when Array
    code_language.join(',')
  when String
    code_language
  else
    raise "The language in the language map must be either a String or Array, was #{code_language.inspect}"
  end
rescue Exception => e
  raise e if WorldFlags.raise_error?
  "Undefined"
end

#language_label(code, locale) ⇒ Object



10
11
12
# File 'lib/world_flags/util/language.rb', line 10

def language_label code, locale
  language code, locale
end

#languagesObject



39
40
41
# File 'lib/world_flags/util/language.rb', line 39

def languages
  @languages ||= Languages.new
end

#languages=(languages) ⇒ Object

Raises:

  • (ArgumentError)


43
44
45
46
# File 'lib/world_flags/util/language.rb', line 43

def languages= languages
  raise ArgumentError, "Must be a hash, was: #{languages}" unless !languages || languages.kind_of?(Hash)
  @languages = languages
end