module ZionData::Parser
Namespace for Zion data parsers
Public Class Methods
parse(source, data)
click to toggle source
# File lib/zion_data/parser.rb, line 5 def parse(source, data) [].tap do |result| Zip::File.open_buffer(data) do |zip| params = zip_entries_data(zip) result.push(*get_source_const(source).new(params).parse) end end end
Private Class Methods
basename(file_name)
click to toggle source
# File lib/zion_data/parser.rb, line 16 def basename(file_name) File.basename(file_name).gsub(/\..+$/, '').to_sym end
get_source_const(name)
click to toggle source
# File lib/zion_data/parser.rb, line 20 def get_source_const(name) Object.const_get([self.name, name.capitalize].join('::')) end
zip_entries_data(zip)
click to toggle source
# File lib/zion_data/parser.rb, line 24 def zip_entries_data(zip) zip.select { |e| e.file? && e.name =~ %r{\w+/\w+\.\w+} } .each_with_object({}) do |entry, result| result[basename(entry.name)] = entry.get_input_stream.read end end