Sha256: f84b6d11de30e0d14141490565278cb54845ca01cc8ccd2e072c89937d93b4e1

Contents?: true

Size: 968 Bytes

Versions: 2

Compression:

Stored size: 968 Bytes

Contents

motion_require '../embedded_value.rb'

module Virtus
  class Attribute
    class EmbeddedValue < Object

      # EmbeddedValue coercer handling OpenStruct primitive or Virtus object
      #
      class OpenStructCoercer

        # Return primitive class
        #
        # @return [::Class]
        #
        # @api private
        attr_reader :primitive

        # Initialize coercer object
        #
        # @return [undefined]
        #
        # @api private
        def initialize(primitive)
          @primitive = primitive
        end

        # Build object from attribute hash
        #
        # @return [::Object]
        #
        # @api private
        def call(attributes)
          if attributes.kind_of?(primitive)
            attributes
          elsif not attributes.nil?
            primitive.new(attributes)
          end
        end

      end # class OpenStructCoercer
    end # class EmbeddedValue
  end # class Attribute
end # module Virtus

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
motion_virtus-1.0.0.beta0.1 lib/project/attribute/embedded_value/open_struct_coercer.rb
motion_virtus-1.0.0.beta0 lib/project/attribute/embedded_value/open_struct_coercer.rb