class Rake::Funnel::Support::BinaryVersionReader

Constants

KNOWN_ATTRIBUTES
SEPARATOR
TERMINATOR

Public Class Methods

read_from(assembly) click to toggle source
# File lib/rake/funnel/support/binary_version_reader.rb, line 18
def read_from(assembly)
  binary = File.binread(assembly)

  attributes = KNOWN_ATTRIBUTES.map do |attr|
    read_attribute(binary, attr)
  end

  hash = attributes.inject({}) do |memo, attr|
    memo.merge(attr)
  end

  VersionInfo.new(hash)
end

Private Class Methods

read_attribute(binary, attr) click to toggle source
# File lib/rake/funnel/support/binary_version_reader.rb, line 34
def read_attribute(binary, attr)
  binary_attr = attr.pascalize.gsub(/(.)/) { |match| match + SEPARATOR }

  data = binary.match(/#{binary_attr}#{SEPARATOR}+(.*?)#{TERMINATOR}/)
  return {} if data.nil?

  { attr.to_s => data[1].gsub(/#{SEPARATOR}/, '') }
end