module Baleen::Serializable
Public Class Methods
deserialize(json_string)
click to toggle source
# File lib/baleen/serializable.rb, line 6 def self.deserialize(json_string) params = JSON.parse(json_string) klass = params.delete "klass" Object.const_get(klass).new(symbolize_keys(params)) end
symbolize_keys(hash)
click to toggle source
# File lib/baleen/serializable.rb, line 12 def self.symbolize_keys(hash) hash.inject({}){|new_hash, key_value| key, value = key_value value = symbolize_keys(value) if value.is_a?(Hash) new_hash[key.to_sym] = value new_hash } end
Public Instance Methods
dup()
click to toggle source
# File lib/baleen/serializable.rb, line 54 def dup copy_params = @params.dup Object.const_get(self.class.to_s).new(copy_params) end
method_missing(name, *args)
click to toggle source
Dynamically define getter and setter for keys of @params
# File lib/baleen/serializable.rb, line 22 def method_missing(name, *args) _name = name.to_s.sub("=", "") if @params.has_key?(_name.to_sym) self.class.class_eval{ define_method "#{_name}" do @params[_name.to_sym] end } self.class.class_eval{ define_method "#{_name}=" do |*args| @params[_name.to_sym] = args.first end } if name.to_s[-1, 1] == "=" send(name, args.first) else send(name) end else raise NoMethodError.new("undefined method: #{name}", name, args) end end
params()
click to toggle source
# File lib/baleen/serializable.rb, line 46 def params @params end
to_json()
click to toggle source
# File lib/baleen/serializable.rb, line 50 def to_json @params.to_json end