# File lib/multi_json/adapter.rb, line 10 def defaults(action, value) metaclass = class << self; self; end metaclass.instance_eval do define_method("default_#{action}_options"){ value } end end
# File lib/multi_json/adapter.rb, line 22 def dump(object, options={}) instance.dump(object, collect_dump_options(options).clone) end
# File lib/multi_json/adapter.rb, line 18 def load(string, options={}) instance.load(string, collect_load_options(options).clone) end
# File lib/multi_json/adapter.rb, line 41 def cache(method, options) cache_key = [self, options].map(&:hash).join + method MultiJson.cached_options[cache_key] ||= yield end
# File lib/multi_json/adapter.rb, line 32 def collect_dump_options(options) cache('dump', options){ collect_options(:dump_options, options).merge(options) } end
# File lib/multi_json/adapter.rb, line 28 def collect_load_options(options) cache('load', options){ collect_options(:load_options, options).merge(options) } end
# File lib/multi_json/adapter.rb, line 36 def collect_options(method, *args) global, local = *[MultiJson, self].map{ |r| r.send(method, *args) } local.merge(global) end