lib/multi_json/adapters/oj_common.rb
require "rubygems/version" module MultiJson module Adapters module OjCommon OJ_VERSION = Gem::Version.new(::Oj::VERSION) OJ_V2 = OJ_VERSION.segments.first == 2 OJ_V3 = OJ_VERSION.segments.first == 3 private_constant :OJ_VERSION, :OJ_V2, :OJ_V3 if OJ_V3 PRETTY_STATE_PROTOTYPE = { indent: " ", space: " ", space_before: "", object_nl: "\n", array_nl: "\n", ascii_only: false }.freeze private_constant :PRETTY_STATE_PROTOTYPE end private # Prepare options for Oj.dump based on Oj version # # @api private # @param options [Hash] serialization options # @return [Hash] processed options for Oj.dump # # @example Prepare dump options # prepare_dump_options(pretty: true) def prepare_dump_options(options) if OJ_V2 options[:indent] = 2 if options[:pretty] options[:indent] = options[:indent].to_i if options[:indent] elsif OJ_V3 options.merge!(PRETTY_STATE_PROTOTYPE.dup) if options.delete(:pretty) else raise "Unsupported Oj version: #{::Oj::VERSION}" end options end end end end