Class: CLLI::YAMLData
- Inherits:
-
Object
- Object
- CLLI::YAMLData
- Defined in:
- lib/clli/yaml_data.rb
Overview
This module provides methods to load external data from YAML files.
Class Method Summary collapse
-
.real_path(*paths) ⇒ Object
Expand the relative path into a real path.
Instance Method Summary collapse
-
#data ⇒ Object
Get the cached data
Hash
. -
#get(*keys) ⇒ Object
Get the data at the corresponding keys.
-
#initialize(*paths) ⇒ YAMLData
constructor
Create a new
YAMLData
object loading the data from the specified YAML file. -
#keys ⇒ Object
Get the
Hash
keys from the cached data.
Constructor Details
#initialize(*paths) ⇒ YAMLData
Create a new YAMLData
object loading the data from the specified YAML file.
Params:
paths
-
a splat containing the path names.
24 25 26 |
# File 'lib/clli/yaml_data.rb', line 24 def initialize(*paths) @cache = YAML.load_file(self.class.real_path(paths)).freeze end |
Class Method Details
.real_path(*paths) ⇒ Object
Expand the relative path into a real path.
Params:
paths
-
a splat containing the path names.
13 14 15 |
# File 'lib/clli/yaml_data.rb', line 13 def real_path(*paths) File.join([File.dirname(__FILE__), '..'] + paths) end |
Instance Method Details
#data ⇒ Object
Get the cached data Hash
. Note the hash
is frozen, any modification will cause a RuntimeError
to be thrown.
37 38 39 |
# File 'lib/clli/yaml_data.rb', line 37 def data @cache end |
#get(*keys) ⇒ Object
Get the data at the corresponding keys. Note the keys are interpreted as a tree. So a second key indicates that the first key returns a Hash
which contains the second key. If no matching records are found then nil
will be returned.
Porams:
keys
-
the keys to lookup.
49 50 51 52 53 54 |
# File 'lib/clli/yaml_data.rb', line 49 def get(*keys) keys.inject(@cache) do |data, key| return nil unless data.respond_to?(:[]) data[key] end end |
#keys ⇒ Object
Get the Hash
keys from the cached data.
30 31 32 |
# File 'lib/clli/yaml_data.rb', line 30 def keys @cache.keys end |