Sha256: 3d029bc4523bd8731f78b6fd85768746ca2de81c1fe363598185a175bb5cb905

Contents?: true

Size: 827 Bytes

Versions: 6

Compression:

Stored size: 827 Bytes

Contents

module Vedeu

  # Provides means to convert attributes into the correct model.
  #
  # @api private
  module Coercions

    include Vedeu::Common

    # Produces new objects of the correct class from attributes hashes,
    # ignores objects that have already been coerced.
    #
    # @param values [Array|Hash]
    # @return [Array]
    def coercer(values)
      return [] unless defined_value?(values)

      [values].flatten.map do |value|
        if value.is_a?(self)
          value

        else
          self.new(value)

        end
      end
    end

    # Whenever this module {Vedeu::Coercions} is included in another class or
    # module, make its methods into class methods, so they may be called
    # directly.
    def self.included(receiver)
      receiver.extend(self)
    end

  end # Coercions

end # Vedeu

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
vedeu-0.2.8 lib/vedeu/support/coercions.rb
vedeu-0.2.7 lib/vedeu/support/coercions.rb
vedeu-0.2.6 lib/vedeu/support/coercions.rb
vedeu-0.2.5 lib/vedeu/support/coercions.rb
vedeu-0.2.4 lib/vedeu/support/coercions.rb
vedeu-0.2.3 lib/vedeu/models/attributes/coercions.rb