Sha256: b179f811ab3b1f0b8b84fd6c0eb3dbe3020814e8306cad82c958aec9e4ee1403

Contents?: true

Size: 1.26 KB

Versions: 20

Compression:

Stored size: 1.26 KB

Contents

module Unimatrix

  class Serializer

    def initialize( payload = [], options = {} )
      @payload = [ payload ].flatten
      @options = options
    end

    def serialize( node, options = {} )
      result = {}
      result[ node ] = @payload.map do | object |
        node_object = {}
        node_object[ :type_name ] = (
          object.respond_to?( :type_name ) ?
            object.type_name :
            object.class.name.split( '::' ).last.underscore
        )
        if object.respond_to?( :fields )
          object.fields.each do | name, options |
            unless options[ :read_only ]
              value = object.send( name ) if object.respond_to?( name )
              if value.is_a?( Struct )
                nested_attributes = value.members
                nested_attributes.each do | nested_attribute |
                  key = "#{ name }.#{ nested_attribute }"
                  nested_attribute_value = value.send( nested_attribute )
                  node_object[ key.to_sym ] = value.send( nested_attribute ) if value.send( nested_attribute )
                end
              else
                node_object[ name.to_sym ] = value
              end
            end
          end
        end
        node_object
      end
      result
    end

  end

end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
unimatrix-3.4.0 lib/unimatrix/serializer.rb
unimatrix-3.3.4 lib/unimatrix/serializer.rb
unimatrix-3.3.3 lib/unimatrix/serializer.rb
unimatrix-3.3.2 lib/unimatrix/serializer.rb
unimatrix-3.3.1 lib/unimatrix/serializer.rb
unimatrix-3.3.0 lib/unimatrix/serializer.rb
unimatrix-3.2.0 lib/unimatrix/serializer.rb
unimatrix-3.1.0 lib/unimatrix/serializer.rb
unimatrix-3.0.0 lib/unimatrix/serializer.rb
unimatrix-2.9.0 lib/unimatrix/serializer.rb
unimatrix-2.8.0 lib/unimatrix/serializer.rb
unimatrix-2.7.1 lib/unimatrix/serializer.rb
unimatrix-2.7.0 lib/unimatrix/serializer.rb
unimatrix-2.6.1 lib/unimatrix/serializer.rb
unimatrix-2.6.0 lib/unimatrix/serializer.rb
unimatrix-2.5.5 lib/unimatrix/serializer.rb
unimatrix-2.5.4 lib/unimatrix/serializer.rb
unimatrix-2.5.3 lib/unimatrix/serializer.rb
unimatrix-2.5.2 lib/unimatrix/serializer.rb
unimatrix-2.5.1 lib/unimatrix/serializer.rb