class JsonDumper::Base
Attributes
entity[RW]
return_nils[RW]
Public Class Methods
instance()
click to toggle source
# File lib/json_dumper/base.rb, line 91 def self.instance @instance ||= new end
method_missing(name, *args1, **args2, &block)
click to toggle source
Calls superclass method
# File lib/json_dumper/base.rb, line 10 def self.method_missing(name, *args1, **args2, &block) name_sym = name name = name.to_s value = args1[0] if name.start_with?('fetch_') return Delayed.new(name.gsub('fetch_', ''), value, args1[1..-1], args2, self) end if instance.respond_to?(name) if value.respond_to?(:each) && !value.respond_to?(:each_pair) value.map do |ent| new_dumper = new(ent) if new_dumper.return_nils return nil end result = if args2.empty? new_dumper.send(name, *(args1[1..-1]), &block) else new_dumper.send(name, *(args1[1..-1]), **args2, &block) end if result.respond_to?(:each) && !result.respond_to?(:each_pair) result = DumperArray.new(result) else result = DumperHash.new(result) end preload_method_name = "#{name}_preload" result.preload = instance.respond_to?(preload_method_name) ? instance.send(preload_method_name) : {} result end elsif name.end_with?('_preload') instance.send(name) else new_dumper = new(value) if new_dumper.return_nils return nil end result = if args2.empty? new_dumper.send(name, *(args1[1..-1]), &block) else new_dumper.send(name, *(args1[1..-1]), **args2, &block) end if result.respond_to?(:each) && !result.respond_to?(:each_pair) result = DumperArray.new(result) else result = DumperHash.new(result) end preload_method_name = "#{name}_preload" result.preload = instance.respond_to?(preload_method_name) ? instance.send(preload_method_name) : {} result end elsif name.end_with?('_preload') && instance.respond_to?(name.gsub('_preload', '')) return {} else if args2.empty? super name_sym, *args1, &block else super name_sym, *args1, *args2, &block end end end
new(entity = nil)
click to toggle source
# File lib/json_dumper/base.rb, line 5 def initialize(entity = nil) self.return_nils = entity.nil? self.entity = entity end
respond_to_missing?(method_name, _ = false)
click to toggle source
# File lib/json_dumper/base.rb, line 71 def self.respond_to_missing?(method_name, _ = false) new.respond_to? method_name end
Public Instance Methods
method_missing(name, *args1, **args2, &block)
click to toggle source
Calls superclass method
# File lib/json_dumper/base.rb, line 75 def method_missing(name, *args1, **args2, &block) if entity.respond_to? name if args2.empty? entity.send(name, *args1, &block) else entity.send(name, *args1, **args2, &block) end else super end end
respond_to_missing?(method_name, _ = false)
click to toggle source
# File lib/json_dumper/base.rb, line 87 def respond_to_missing?(method_name, _ = false) entity.respond_to? method_name end