Sha256: 0b859779970ed98b2210617068615e7ee83dfde6c0dde1333c45663a15b9c2e1

Contents?: true

Size: 984 Bytes

Versions: 2

Compression:

Stored size: 984 Bytes

Contents

# encoding: utf-8

module PagesCore
  module Localizable
    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
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
pages_core-3.4.3 lib/pages_core/localizable/configuration.rb
pages_core-3.4.2 lib/pages_core/localizable/configuration.rb