module Spark::Serializer

Serializer

Constants

DEFAULT_BATCH_SIZE
DEFAULT_COMPRESS
DEFAULT_SERIALIZER_NAME

Public Class Methods

build(text=nil, &block) click to toggle source
# File lib/spark/serializer.rb, line 54
def self.build(text=nil, &block)
  if block_given?
    class_eval(&block)
  else
    class_eval(text.to_s.downcase)
  end
end
find(name) click to toggle source
# File lib/spark/serializer.rb, line 40
def self.find(name)
  @@registered[name.to_s.downcase]
end
find!(name) click to toggle source
# File lib/spark/serializer.rb, line 44
def self.find!(name)
  klass = find(name)

  if klass.nil?
    raise Spark::SerializeError, "Unknow serializer #{name}."
  end

  klass
end
register(*args) click to toggle source

Register class and create method for quick access. Class will be available also as __name__ for using in build method (Proc binding problem).

Examples:

register('test1', 'test2', Class)

Spark::Serializer.test1
Spark::Serializer.test2

# Proc binding problem
build { marshal } # => Spark::Serializer::Marshal

marshal = 1
build { marshal } # => 1

build { __marshal__ } # => Spark::Serializer::Marshal
# File lib/spark/serializer.rb, line 31
def self.register(*args)
  klass = args.pop
  args.each do |arg|
    @@registered[arg] = klass
    define_singleton_method(arg.to_sym){|*args| klass.new(*args) }
    define_singleton_method("__#{arg}__".to_sym){|*args| klass.new(*args) }
  end
end