Sha256: e44cd2adf764f67d2e46950b8858f294ea30ff27da2e4ed60312eaeb543a29d5

Contents?: true

Size: 1.71 KB

Versions: 12

Compression:

Stored size: 1.71 KB

Contents

# frozen_string_literal: true

begin
  require "multi_json"
rescue LoadError
  require "json"
end

module Hanami
  module Utils
    # JSON wrapper
    #
    # If you use MultiJson gem this wrapper will use it.
    # Otherwise - JSON std lib.
    #
    # @since 0.8.0
    module Json
      # MultiJson adapter
      #
      # @since 0.9.1
      # @api private
      class MultiJsonAdapter
        # @since 0.9.1
        # @api private
        def parse(payload)
          MultiJson.load(payload)
        end

        # @since 0.9.1
        # @api private
        def generate(object)
          MultiJson.dump(object)
        end
      end

      # rubocop:disable Style/ClassVars
      if defined?(MultiJson)
        # @since 0.8.0
        # @api private
        @@engine    = MultiJsonAdapter.new

        # @since 0.8.0
        # @api private
        ParserError = MultiJson::ParseError
      else
        # @since 0.8.0
        # @api private
        @@engine    = ::JSON

        # @since 0.8.0
        # @api private
        ParserError = ::JSON::ParserError
      end
      # rubocop:enable Style/ClassVars

      # Parses the given JSON paylod
      #
      # @param payload [String] a JSON payload
      #
      # @return [Object] the result of the loading process
      #
      # @raise [Hanami::Utils::Json::ParserError] if the paylod is invalid
      #
      # @since 0.9.1
      def self.parse(payload)
        @@engine.parse(payload)
      end

      # Generate a JSON document from the given object
      #
      # @param object [Object] any object
      #
      # @return [String] the result of the dumping process
      #
      # @since 0.9.1
      def self.generate(object)
        @@engine.generate(object)
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
hanami-utils-2.2.0 lib/hanami/utils/json.rb
hanami-utils-2.2.0.rc1 lib/hanami/utils/json.rb
hanami-utils-2.2.0.beta2 lib/hanami/utils/json.rb
hanami-utils-2.2.0.beta1 lib/hanami/utils/json.rb
hanami-utils-2.1.0 lib/hanami/utils/json.rb
hanami-utils-2.1.0.rc3 lib/hanami/utils/json.rb
hanami-utils-2.1.0.rc2 lib/hanami/utils/json.rb
hanami-utils-2.1.0.beta1 lib/hanami/utils/json.rb
hanami-utils-2.0.3 lib/hanami/utils/json.rb
hanami-utils-2.0.2 lib/hanami/utils/json.rb
hanami-utils-2.0.1 lib/hanami/utils/json.rb
hanami-utils-2.0.0 lib/hanami/utils/json.rb