# frozen_string_literal: true
# A subclass of Set which holds locale values. Mediates between I18n and FastGettext which
# have different expectations of locale formats.
#
# Examples:
#
# @locale_set = LocaleSet.new(["en_GB", "en", "fr", "de", :ch_TW])
# @locale_set.for(:i18n) # => <LocaleSet: {'en-GB', 'en', 'fr', 'de', 'ch-TW'}>
# @locale_set.for(:fast_gettext) # => <LocaleSet: {'en_GB', 'en', 'fr', 'de', 'ch_TW'}>
#
class LocaleSet < Set
# The values from the Set in the desired format for the given localization framework
#
# framework - A symbol representing either :i18n or :fast_gettext (defaults: :i18n)
#
# Returns Array
def for(framework)
if framework.to_sym == :i18n
self.class.new(map { |l| LocaleFormatter.new(l, format: :i18n).to_s })
else
self.class.new(map { |l| LocaleFormatter.new(l, format: :fast_gettext).to_s })
end
end
end