Module: OEmbed::Formatter::Base
Overview
These are methods that are shared by the OEmbed::Formatter sub-classes (i.e. OEmbed::Formatter:JSON and OEmbed::Formatter::XML).
Instance Method Summary collapse
-
#backend=(new_backend) ⇒ Object
Given either a String (the name of the backend to use) or an Object (which must respond to the decode method), sets the current backend.
-
#decode(value) ⇒ Object
Parses a String or IO and convert it into an Object.
- #reset_backend ⇒ Object
-
#supported? ⇒ Boolean
Returns true if there is a valid backend.
-
#with_backend(new_backend) ⇒ Object
Perform a set of operations using a backend other than the current one.
Instance Method Details
#backend=(new_backend) ⇒ Object
Given either a String (the name of the backend to use) or an Object (which must respond to the decode method), sets the current backend. Raises a LoadError if the given backend cannot be loaded (e.g. an invalid String name, or the decode method doesn’t work properly).
OEmbed::Formatter::XML.backend = 'REXML'
OEmbed::Formatter::JSON.backend = MyCustomJsonDecoder.new
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/oembed/formatter/base.rb', line 23 def backend=(new_backend) new_backend_obj = case new_backend when String unless already_loaded?(new_backend) load "oembed/formatter/#{backend_path}/#{new_backend.downcase}.rb" end self::Backends.const_get(new_backend) else new_backend end test_backend(new_backend_obj) @backend = new_backend_obj rescue raise LoadError, "There was an error setting the backend: #{new_backend.inspect} - #{$!.}" end |
#decode(value) ⇒ Object
Parses a String or IO and convert it into an Object
13 14 15 |
# File 'lib/oembed/formatter/base.rb', line 13 def decode(value) backend.decode(value) end |
#reset_backend ⇒ Object
53 54 55 56 |
# File 'lib/oembed/formatter/base.rb', line 53 def reset_backend @backend = nil remove_instance_variable(:@backend) end |
#supported? ⇒ Boolean
Returns true if there is a valid backend. Otherwise, raises OEmbed::FormatNotSupported
8 9 10 |
# File 'lib/oembed/formatter/base.rb', line 8 def supported? !!backend end |
#with_backend(new_backend) ⇒ Object
46 47 48 49 50 51 |
# File 'lib/oembed/formatter/base.rb', line 46 def with_backend(new_backend) old_backend, self.backend = backend, new_backend yield ensure self.backend = old_backend end |