Sha256: b970e41c9e3fb8a4bfaca468699d7abb72670abf615a9eba156478572763ac32
Contents?: true
Size: 1.5 KB
Versions: 12
Compression:
Stored size: 1.5 KB
Contents
# encoding: utf-8 require "mixture/extensions/attributable" require "mixture/extensions/coercable" require "mixture/extensions/hashable" require "mixture/extensions/validatable" module Mixture # All of the extensions of mixture. Handles registration of # extensions, so that extensions can be referend by a name instead # of the constant. module Extensions # Registers an extension with the module. This maps a name to # an extension. Extensions may be registered multiple times, # with different names. # # @param name [Symbol] The name of the extension to register. # @param extension [Module] The module to register. def self.register(name, extension) extensions[name.to_s.downcase.intern] = extension end # Loads an extension with the given name. If it cannot find the # matching extension, it raises a `KeyError`. # # @param name [Symbol] The name of the extension. # @return [Module] The corresponding extension. # @raise [KeyError] def self.[](name) extensions.fetch(name) end # The extensions that are registered with this module. # # @return [Hash{Symbol => Module}] def self.extensions @_extensions ||= {} end # Finalizes the extension module. It registers the extensions in # Mixture. # # @return [void] def self.finalize register :attribute, Attributable register :coerce, Coercable register :hash, Hashable register :validate, Validatable end end end
Version data entries
12 entries across 12 versions & 1 rubygems