Sha256: aacce75d21ce8101fd780f26e6d4d39037433b8265eca1e38249e24c10a948dc

Contents?: true

Size: 597 Bytes

Versions: 3

Compression:

Stored size: 597 Bytes

Contents

module Vedeu
  module Coercions
    module ClassMethods

      # 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 [] if values.nil? || values.empty?

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

          else
            self.new(value)

          end
        end
      end
    end

    def self.included(receiver)
      receiver.extend(ClassMethods)
    end

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
vedeu-0.1.18 lib/vedeu/models/attributes/coercions.rb
vedeu-0.1.17 lib/vedeu/models/attributes/coercions.rb
vedeu-0.1.16 lib/vedeu/models/attributes/coercions.rb