Sha256: d3e1a2f1b3e8f3840f80ef43704ae862ae90d7a12fcfdc00dac69672a89b92fb

Contents?: true

Size: 758 Bytes

Versions: 2

Compression:

Stored size: 758 Bytes

Contents

# frozen_string_literal: true

module AdequateJson
  class Hash
    include Resolver
    include Jsonizer

    def initialize(hash, json = nil, variants: {}, **)
      @hash = hash
      @json = json
      @variants = variants
    end

    def to_builder
      if @json.nil?
        Jbuilder.new do |json|
          @json = json
          serialize_hash
        end
      else
        serialize_hash
      end
    end

    private

    def serialize_hash
      @hash.each do |key, value|
        if value.respond_to?(:to_i) || value.frozen?
          @json.set!(key, value)
        else
          @json.set!(key) do
            choose_serializer(value, variant: @variants[key] || :no_wrapper).to_builder
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
adequate_json-0.2.0 lib/adequate_json/hash.rb
adequate_json-0.1.0 lib/adequate_json/hash.rb