module MultiJson module Options def load_options=(options) MultiJson.reset_cached_options! @load_options = options end def dump_options=(options) MultiJson.reset_cached_options! @dump_options = options end def load_options(*args) get_options :load_options, *args end def dump_options(*args) get_options :dump_options, *args end def default_load_options @default_load_options ||= {} end def default_dump_options @default_dump_options ||= {} end private def get_options(ivar, *args) defaults = send("default_#{ivar}") return defaults unless instance_variable_defined?("@#{ivar}") value = instance_variable_get("@#{ivar}") if value.respond_to?(:call) and value.arity value.arity == 0 ? value[] : value[*args] elsif Hash === value or value.respond_to?(:to_hash) value.to_hash else defaults end end end end