Sha256: 08fb3d47e518894f02b4c44a2aaf6d0874d73ead8360a77ea00837c4702932ca

Contents?: true

Size: 1.2 KB

Versions: 1

Compression:

Stored size: 1.2 KB

Contents

require 'restful/serializers/base'

#
#  AR params hash.
#
module Restful
  module Serializers
    class HashSerializer < Base
      
      serializer_name :hash

      
      def serialize(resource, options = {})
        params = {}
        
        resource.values.each do |value|
          if value.type == :collection # serialize the stuffs
            resources = value.value
            next if resources.empty?
            name = resources.first.name.pluralize
            
            array = []
            resources.each do |r|
              array << serialize(r)
            end
            
            params[hashify_key(value.name)] = array
          elsif value.type == :link
            params[hashify_key(value.name)] = Restful::Rails.tools.dereference(value.value)
          elsif value.type == :resource
            params[hashify_key(value.name)] = serialize(value)
          else # plain ole
            params[hashify_key(value.name)] = formatted_value(value)
          end
        end
        
        params["restful_url"] = resource.full_url
        params
      end
      
      private
        def hashify_key(original_key)
          original_key.to_s.tr("-", "_").to_sym
        end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
purzelrakete-restful-0.2.2 lib/restful/serializers/hash_serializer.rb