Class: Isomer::Sources::Yaml

Inherits:
Base
  • Object
show all
Defined in:
lib/isomer/sources/yaml.rb

Instance Attribute Summary collapse

Attributes inherited from Base

#configuration, #errors, #parameters

Instance Method Summary collapse

Methods inherited from Base

#for, #load_and_validate, #validate

Constructor Details

#initialize(parameters, options = {}) ⇒ Yaml

Returns a new instance of Yaml.

Raises:



6
7
8
9
10
11
12
13
14
# File 'lib/isomer/sources/yaml.rb', line 6

def initialize(parameters, options={})
  @file = options[:file].to_s
  raise Isomer::Error, "YAML source requires the 'file' parameter" if file.empty?

  @base = options[:base]
  @required = !!options[:required]

  super(parameters)
end

Instance Attribute Details

#baseObject (readonly)

Returns the value of attribute base.



4
5
6
# File 'lib/isomer/sources/yaml.rb', line 4

def base
  @base
end

#fileObject (readonly)

Returns the value of attribute file.



4
5
6
# File 'lib/isomer/sources/yaml.rb', line 4

def file
  @file
end

#requiredObject (readonly)

Returns the value of attribute required.



4
5
6
# File 'lib/isomer/sources/yaml.rb', line 4

def required
  @required
end

Instance Method Details

#loadObject



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/isomer/sources/yaml.rb', line 16

def load
  if File.exists?(file)
    values = YAML.load_file(file)
    if !values.is_a?(Hash)
      @configuration = {}
    elsif base && values.has_key?(base)
      @configuration = values[base] || {}
    else
      @configuration = values
    end
  else
    raise Isomer::Error, "Missing required configuration file '#{file}'" if required
    @configuration = {}
  end
end