module MultiJson module Options attr_writer :load_options, :dump_options 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