Module: Prmd::MultiLoader
- Defined in:
- lib/prmd/multi_loader/json.rb,
lib/prmd/multi_loader/toml.rb,
lib/prmd/multi_loader/yajl.rb,
lib/prmd/multi_loader/yaml.rb,
lib/prmd/multi_loader/loader.rb
Overview
:nodoc:
Defined Under Namespace
Modules: Json, Loader, Toml, Yajl, Yaml Classes: LoaderNotFound
Class Attribute Summary collapse
-
.file_extensions ⇒ Object
Returns the value of attribute file_extensions.
Class Method Summary collapse
-
.autoload_loader(name) ⇒ Boolean
Attempts to autoload a Loader named
name
. - .load_data(ext, data) ⇒ Object
-
.load_file(filename) ⇒ Object
Shortcut for loading any supported file.
- .load_stream(ext, stream) ⇒ Object
-
.loader(name) ⇒ Prmd::MultiLoader::Loader
Locates and returns a loader for the given
ext
If no extension is found the first time, MultiLoader will attempt to load one of the same name.
Class Attribute Details
.file_extensions ⇒ Object
Returns the value of attribute file_extensions.
11 12 13 |
# File 'lib/prmd/multi_loader/loader.rb', line 11 def file_extensions @file_extensions end |
Class Method Details
.autoload_loader(name) ⇒ Boolean
Attempts to autoload a Loader named name
18 19 20 21 22 23 24 25 26 |
# File 'lib/prmd/multi_loader/loader.rb', line 18 def self.autoload_loader(name) # extension names are preceeded with a . # TODO. probably just remove the first . loader_name = name.gsub('.', '') require "prmd/multi_loader/#{loader_name}" true rescue false end |
.load_data(ext, data) ⇒ Object
59 60 61 |
# File 'lib/prmd/multi_loader/loader.rb', line 59 def self.load_data(ext, data) loader(ext).load_data(data) end |
.load_file(filename) ⇒ Object
Shortcut for loading any supported file
77 78 79 80 |
# File 'lib/prmd/multi_loader/loader.rb', line 77 def self.load_file(filename) ext = File.extname(filename) loader(ext).load_file(filename) end |
.load_stream(ext, stream) ⇒ Object
67 68 69 |
# File 'lib/prmd/multi_loader/loader.rb', line 67 def self.load_stream(ext, stream) loader(ext).load_stream(stream) end |
.loader(name) ⇒ Prmd::MultiLoader::Loader
Locates and returns a loader for the given ext
If no extension is found the first time, MultiLoader will attempt to load one of the same name.
40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/prmd/multi_loader/loader.rb', line 40 def self.loader(name) tried_autoload = false begin @file_extensions.fetch(name) rescue KeyError if tried_autoload raise LoaderNotFound, "Loader for extension (#{name}) was not found." else autoload_loader(name) tried_autoload = true retry end end end |