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