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