Sha256: 5188927a8cd80157d1e58e09803bb41ac3bcce2c42d0979dd8bdccb62c1878e7

Contents?: true

Size: 1023 Bytes

Versions: 4

Compression:

Stored size: 1023 Bytes

Contents

# frozen_string_literal: true

require 'multi_json'

module AsyncStorage
  module JSON
    module_function

    # Parses JSON data.
    #
    # @param data [String] JSON data
    # @param options [Hash] Options hash for `MultiJson.load`
    # @return [Object] Parsed JSON
    # @raise [MultiJson::ParseError] MultiJson error classes
    def load(data, **options)
      MultiJson.load(data, **options)
    end

    # Generates JSON.
    #
    # @param object [Object] Object to convert to JSON
    # @param options [Hash] Options hash for `MultiJson.dump` and additional options below
    # @return [String] Generated JSON
    # @raise [MultiJson::DecodeError] MultiJson error classes
    def dump(object, **options)
      object = as_json(object)

      MultiJson.dump(object, **options)
    end

    def as_json(value)
      case value
      when Hash
        value.transform_values { |val| as_json(val) }
      when Enumerable
        value.map { |val| as_json(val) }
      else
        value
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
async_storage-0.0.4 lib/async_storage/json.rb
async_storage-0.0.3 lib/async_storage/json.rb
async_storage-0.0.2 lib/async_storage/json.rb
async_storage-0.0.1 lib/async_storage/json.rb