Sha256: f7b427b9945137b211bb59f2d5b2de2b1ce74f33366df6abdf9d79e554312ab4

Contents?: true

Size: 1.15 KB

Versions: 2

Compression:

Stored size: 1.15 KB

Contents

module Coercible
  class Coercer

    module Configurable

      # Add configuration-specific option keys to the descendant
      #
      # @return [self]
      #
      # @api private
      def self.extended(coercer)
        coercer.accept_options :config_keys
        super
      end

      # Build configuration object for the coercer class
      #
      # @example
      #
      #   coercer_class = Class.new(Coercer::Object) do
      #     extend Configurable
      #
      #     config_keys [ :foo, :bar ]
      #   end
      #
      #   coercer_class.config do |config|
      #     config.foo = '1'
      #     config.bar = '2'
      #   end
      #
      # @yieldparam [Configuration]
      #
      # @return [Configuration]
      #
      # @api public
      def config(&block)
        configuration = Configuration.build(config_keys)
        yield configuration
        configuration
      end

      # Return configuration name in the global config
      #
      # @return [Symbol]
      #
      # @api private
      def config_name
        self.name.downcase.split('::').last.to_sym
      end

    end # module Configurable

  end # class Coercer
end # module Coercible

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
coercible-0.0.2 lib/coercible/coercer/configurable.rb
coercible-0.0.1 lib/coercible/coercer/configurable.rb