1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
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
|