class Gaston::Parse

Public Class Methods

new(files, env) click to toggle source

Initialize Parsing.

@param [ Array ] List of yaml files. @param [ Symbol ] Environment.

@since 0.0.2

# File lib/gaston/parse.rb, line 15
def initialize(files, env)
  @env = env
  @hash = files.inject({}) do |hash, file|
    parse(file)
    h = deep_merge(hash, default_values)
    deep_merge(h, env_values)
  end
end

Public Instance Methods

to_hash() click to toggle source

@return [ Hash ]

@since 0.0.2

# File lib/gaston/parse.rb, line 28
def to_hash
  @hash
end

Private Instance Methods

deep_merge(store, other) click to toggle source

_why deep merge

@return Hash

@since 0.2.1

# File lib/gaston/parse.rb, line 60
def deep_merge(store, other)
  m = proc do |key, o, n|
    if o.is_a?(Hash)
      o.merge(n,&m)
    else
      store[key] = n
    end
  end
  store.merge(other, &m)
end
default_values() click to toggle source

Default values from yaml.

@return [ Hash ]

@since 0.0.2

# File lib/gaston/parse.rb, line 40
def default_values
  @parse[:gaston] || {}
end
env_values() click to toggle source

Env values from hash.

@return [ Hash ]

@since 0.0.2

# File lib/gaston/parse.rb, line 50
def env_values
  @parse[@env] || {}
end
parse(file) click to toggle source

Parse yaml or json file.

@param [ String ]

@return [ Hash ]

@since 0.2.0

# File lib/gaston/parse.rb, line 78
def parse(file)
  erb = ERB.new(File.read(file)).result
  if File.extname(file) == '.json'
    @parse = JSON.parse(erb, :symbolize_names => true) || {}
  else
    @parse = YAML.load(erb) || {}
  end
end