# 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 23 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={}) raise self::ParseError if blank?(string) instance.load(string, collect_load_options(options).clone) end
# File lib/multi_json/adapter.rb, line 42 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 33 def collect_dump_options(options) cache('dump', options){ collect_options(:dump_options, options).merge(options) } end
# File lib/multi_json/adapter.rb, line 29 def collect_load_options(options) cache('load', options){ collect_options(:load_options, options).merge(options) } end
# File lib/multi_json/adapter.rb, line 37 def collect_options(method, *args) global, local = *[MultiJson, self].map{ |r| r.send(method, *args) } local.merge(global) end
# File lib/multi_json/adapter.rb, line 49 def blank?(input) input.nil? || /\A\s*\z/ === input rescue ArgumentError # invalid byte sequence in UTF-8 false end