Sha256: e0a2e923f35ee03c2fb7dc4f6f8ff3f8db98aaf08e6a2919c6a75bbede6118cb

Contents?: true

Size: 894 Bytes

Versions: 12

Compression:

Stored size: 894 Bytes

Contents

# encoding: utf-8

module LocalizableModel
  class Configuration
    def initialize(attributes = nil)
      @attributes = attributes
    end

    def attribute(attribute_name, options = {})
      attribute_table[attribute_name.to_sym] = options
    end

    def attributes
      attribute_table.merge(dictionary_attributes)
    end

    def dictionary(dict)
      dictionaries << dict
    end

    def attribute?(attribute)
      attributes.keys.include?(attribute)
    end

    private

    def dictionaries
      @dictionaries ||= []
    end

    def dictionary_attributes
      dictionaries.map(&:call).inject({}) do |attrs, list|
        attrs.merge(hashify(list))
      end
    end

    def hashify(list)
      return list if list.is_a?(Hash)
      list.each_with_object({}) do |e, a|
        a[e] = {}
      end
    end

    def attribute_table
      @attributes ||= {}
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
localizable_model-0.6.4 lib/localizable_model/configuration.rb
localizable_model-0.6.3 lib/localizable_model/configuration.rb
localizable_model-0.6.2 lib/localizable_model/configuration.rb
localizable_model-0.6.1 lib/localizable_model/configuration.rb
localizable_model-0.6.0 lib/localizable_model/configuration.rb
localizable_model-0.5.5 lib/localizable_model/configuration.rb
localizable_model-0.5.4 lib/localizable_model/configuration.rb
localizable_model-0.5.3 lib/localizable_model/configuration.rb
localizable_model-0.5.2 lib/localizable_model/configuration.rb
localizable_model-0.5.1 lib/localizable_model/configuration.rb
localizable_model-0.5.0 lib/localizable_model/configuration.rb
localizable_model-0.0.1 lib/localizable_model/configuration.rb