module MultiJson::Options
Mixin providing configurable load/dump options
Supports static hashes or dynamic callables (procs/lambdas). Extended by both MultiJson (global options) and Adapter classes.
@api private
Constants
- EMPTY_OPTIONS
Public Instance Methods
Get default dump options
@api private @return [Hash] frozen empty hash
# File lib/multi_json/options.rb, line 60 def default_dump_options @default_dump_options ||= EMPTY_OPTIONS end
Get default load options
@api private @return [Hash] frozen empty hash
# File lib/multi_json/options.rb, line 52 def default_load_options @default_load_options ||= EMPTY_OPTIONS end
Get options for dump operations
@api private @return [Hash] resolved options hash
# File lib/multi_json/options.rb, line 44 def dump_options(...) resolve_options(@dump_options, ...) || default_dump_options end
Set options for dump operations
@api private @param options [Hash, Proc] options hash or callable @return [Hash, Proc] the options
# File lib/multi_json/options.rb, line 27 def dump_options=(options) OptionsCache.reset @dump_options = options end
Get options for load operations
@api private @return [Hash] resolved options hash
# File lib/multi_json/options.rb, line 36 def load_options(...) resolve_options(@load_options, ...) || default_load_options end
Set options for load operations
@api private @param options [Hash, Proc] options hash or callable @return [Hash, Proc] the options
# File lib/multi_json/options.rb, line 17 def load_options=(options) OptionsCache.reset @load_options = options end
Private Instance Methods
Invokes a callable options provider
@api private @param callable [Proc] options provider @return [Hash] options returned by the callable
# File lib/multi_json/options.rb, line 82 def invoke_callable(callable, ...) callable.arity.zero? ? callable.call : callable.call(...) end
Resolves options from a hash or callable
@api private @param options [Hash, Proc, nil] options configuration @return [Hash, nil] resolved options hash
# File lib/multi_json/options.rb, line 71 def resolve_options(options, ...) return invoke_callable(options, ...) if options.respond_to?(:call) options.to_hash if options.respond_to?(:to_hash) end