class Gimlet::DataStore

Public Class Methods

new(source_path) click to toggle source
# File lib/gimlet/data_store.rb, line 12
def initialize(source_path)
  @source_path = Pathname(source_path)
  @local_data = ::Gimlet::Util.recursively_enhance({})
  load_all!
end

Public Instance Methods

load_all!() click to toggle source
# File lib/gimlet/data_store.rb, line 18
def load_all!
  if @source_path.directory?
    load_from_directory!
  elsif @source_path.file?
    load_from_file!
  else
    raise SourceNotFound, 'No such file or directory - %s' % @source_path
  end
end
load_from_directory!() click to toggle source
# File lib/gimlet/data_store.rb, line 28
def load_from_directory!
  Pathname.glob(@source_path + '**/*.{yaml,yml}').each do |path|
    extension = path.extname
    basename = path.basename(extension)

    parts = path.relative_path_from(@source_path).split.map(&:to_s)[0..-1]
    parts.delete('.')
    parts.pop

    current = @local_data
    parts.each do |part|
      current[part] ||= ::Gimlet::Util.recursively_enhance({})
      current = current[part]
    end

    current[basename.to_s] = load_from_file(path)
  end
end
load_from_file(path) click to toggle source
# File lib/gimlet/data_store.rb, line 51
def load_from_file(path)
  ::Gimlet::Util.recursively_enhance(YAML.load_file(path))
end
load_from_file!() click to toggle source
# File lib/gimlet/data_store.rb, line 47
def load_from_file!
  @local_data = load_from_file(@source_path)
end