Sha256: 011047f31d930917dea7cd2c3c178aea5bf0df69aa425ba2dac9721a8f73b805

Contents?: true

Size: 1.36 KB

Versions: 25

Compression:

Stored size: 1.36 KB

Contents

require 'active_support/json'

module MongoMapper #:nodoc:
  module Serialization
    class Serializer #:nodoc:
      attr_reader :options

      def initialize(record, options = {})
        @record, @options = record, options.dup
      end

      def serializable_key_names
        key_names = @record.attributes.keys

        if options[:only]
          options.delete(:except)
          key_names = key_names & Array(options[:only]).collect { |n| n.to_s }
        else
          options[:except] = Array(options[:except])
          key_names = key_names - options[:except].collect { |n| n.to_s }
        end

        key_names
      end

      def serializable_method_names
        Array(options[:methods]).inject([]) do |method_attributes, name|
          method_attributes << name if @record.respond_to?(name.to_s)
          method_attributes
        end
      end

      def serializable_names
        serializable_key_names + serializable_method_names
      end

      def serializable_record
        returning(serializable_record = {}) do
          serializable_names.each { |name| serializable_record[name] = @record.send(name) }
        end
      end

      def serialize
        # overwrite to implement
      end

      def to_s(&block)
        serialize(&block)
      end
    end
  end
end

dir = Pathname(__FILE__).dirname.expand_path + 'serializers'
require dir + 'json_serializer'

Version data entries

25 entries across 25 versions & 6 rubygems

Version Path
crnixon-mongomapper-0.3.4 lib/mongomapper/serialization.rb
djsun-mongomapper-0.3.5.1 lib/mongomapper/serialization.rb
djsun-mongomapper-0.3.5.2 lib/mongomapper/serialization.rb
djsun-mongomapper-0.3.5.4 lib/mongomapper/serialization.rb
djsun-mongomapper-0.3.5.5 lib/mongomapper/serialization.rb
djsun-mongomapper-0.3.5 lib/mongomapper/serialization.rb
jnunemaker-mongomapper-0.3.4 lib/mongomapper/serialization.rb
jnunemaker-mongomapper-0.3.5 lib/mongomapper/serialization.rb
mongo_mapper-0.5.6 lib/mongo_mapper/serialization.rb
djsun-mongo_mapper-0.5.5.3 lib/mongo_mapper/serialization.rb
mongo_mapper-unstable-2009.10.16 lib/mongo_mapper/serialization.rb
djsun-mongo_mapper-0.5.5.2 lib/mongo_mapper/serialization.rb
mongo_mapper-0.5.5 lib/mongo_mapper/serialization.rb
mongo_mapper-unstable-2009.10.12 lib/mongo_mapper/serialization.rb
djsun-mongo_mapper-0.5.4.1 lib/mongo_mapper/serialization.rb
djsun-mongo_mapper-0.5.3.1 lib/mongo_mapper/serialization.rb
mongo_mapper-0.5.4 lib/mongo_mapper/serialization.rb
mongo_mapper-0.5.3 lib/mongo_mapper/serialization.rb
mongo_mapper-unstable-2009.10.11 lib/mongo_mapper/serialization.rb
djsun-mongo_mapper-0.5.2.1 lib/mongo_mapper/serialization.rb