Sha256: 305d7211b4fc1230200bdba0be842068b0712a876d56ae3acf553e4a04a73c4d

Contents?: true

Size: 1.06 KB

Versions: 4

Compression:

Stored size: 1.06 KB

Contents

module OEmbed
  module Formatter
    # Handles parsing JSON values using the best available backend.
    module JSON
      # A Array of all available backends, listed in order of preference.
      DECODERS = %w(ActiveSupportJSON JSONGem Yaml)

      class << self
        include ::OEmbed::Formatter::Base

        # Returns the current JSON backend.
        def backend
          set_default_backend unless defined?(@backend)
          raise OEmbed::FormatNotSupported, :json unless defined?(@backend)
          @backend
        end

        def set_default_backend
          DECODERS.find do |name|
            begin
              self.backend = name
              true
            rescue LoadError
              # Try next decoder.
              false
            end
          end
        end

        private

        def backend_path
          'json/backends'
        end

        def test_value
          <<-JSON
{"version":"1.0", "string":"test", "int":42,"html":"<i>Cool's</i>\\n the \\"word\\"\\u0021"}
          JSON
        end

      end # self

    end # JSON
  end
end

Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
ruby-oembed-0.18.1 lib/oembed/formatter/json.rb
ruby-oembed-0.18.0 lib/oembed/formatter/json.rb
blacklight-spotlight-3.6.0.beta8 vendor/bundle/ruby/3.2.0/gems/ruby-oembed-0.17.0/lib/oembed/formatter/json.rb
ruby-oembed-0.17.0 lib/oembed/formatter/json.rb