Sha256: 9e3f2255b4a2e30906a0da2fef81b3d5cca1f20d16127cf24f3bc4c0c90c1b01
Contents?: true
Size: 1.24 KB
Versions: 1
Compression:
Stored size: 1.24 KB
Contents
require "data_reader/version" require "pathname" require "yaml" require "erb" module DataReader def data_path=(path) @data_path = path end def data_path return @data_path if @data_path if respond_to? :default_data_path @data_path = default_data_path return default_data_path end nil end def data_source return @data_source if @data_source nil end def load(file_list) files = file_list.include?(',') ? file_list.split(',') : [file_list] files = files.collect(&:strip) @data_source = files.inject({}) do |all_data, file| data = include_key(::YAML.safe_load(include_data(file))) all_data.merge!(data) if data end end def include_data(file) filename = Pathname.new(file).absolute? ? file : "#{@data_path}/#{file}" ERB.new(IO.read(filename)).result(binding) if File.exist?(filename) end private def include_key(data) include_data = {} if data.key?('_include_') [data['_include_']].flatten.each do |file_path| include_data.merge!(load(file_path)) end end data.delete('_include_') data.merge!(include_data) data.each do |key, value| data[key] = include_key(value) if value.is_a?(Hash) end data end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
data_reader-1.2.0 | lib/data_reader.rb |