Sha256: 316eace18b07b079728670d67603d16e5942836ce95e54037b23e2e41d219d81

Contents?: true

Size: 1.16 KB

Versions: 14

Compression:

Stored size: 1.16 KB

Contents

# frozen_string_literal: true

require_relative 'modules/language_validatable'
require_relative 'modules/locale'
require_relative 'modules/region_validatable'
require_relative 'modules/taggable'

module LittleWeasel
  # This class describes a unique key associated with a particular dictionary
  # file. Dictionary keys are used to identify a dictionary on which an action
  # should be performed.
  class DictionaryKey
    include Modules::LanguageValidatable
    include Modules::Locale
    include Modules::RegionValidatable
    include Modules::Taggable

    attr_reader :language, :region

    def initialize(language:, region: nil, tag: nil)
      validate_language language: language
      self.language = normalize_language language

      validate_region region: region
      self.region = normalize_region region

      validate_tag tag: tag
      self.tag = tag
    end

    def key
      return locale unless tagged?

      "#{locale}-#{tag}"
    end
    alias to_s key

    class << self
      def key(language:, region: nil, tag: nil)
        new(language: language, region: region, tag: tag).key
      end
    end

    private

    attr_writer :language, :region
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
LittleWeasel-5.0.13 lib/LittleWeasel/dictionary_key.rb
LittleWeasel-5.0.12 lib/LittleWeasel/dictionary_key.rb
LittleWeasel-5.0.11 lib/LittleWeasel/dictionary_key.rb
LittleWeasel-5.0.10 lib/LittleWeasel/dictionary_key.rb
LittleWeasel-5.0.9 lib/LittleWeasel/dictionary_key.rb
LittleWeasel-5.0.8 lib/LittleWeasel/dictionary_key.rb
LittleWeasel-5.0.7 lib/LittleWeasel/dictionary_key.rb
LittleWeasel-5.0.6 lib/LittleWeasel/dictionary_key.rb
LittleWeasel-5.0.5 lib/LittleWeasel/dictionary_key.rb
LittleWeasel-5.0.4 lib/LittleWeasel/dictionary_key.rb
LittleWeasel-5.0.3 lib/LittleWeasel/dictionary_key.rb
LittleWeasel-5.0.2 lib/LittleWeasel/dictionary_key.rb
LittleWeasel-5.0.1 lib/LittleWeasel/dictionary_key.rb
LittleWeasel-5.0.0 lib/LittleWeasel/dictionary_key.rb