class PackageDetector

Constants

ROOT_DIR
VERSION

Attributes

package[RW]

Public Class Methods

new(package) click to toggle source
# File lib/package_detector.rb, line 9
def initialize(package)
  if package.kind_of? IO
    @package = package
  else
    raise TypeError, "can't recieve an object except for IO object."
  end
end

Public Instance Methods

detect() click to toggle source
# File lib/package_detector.rb, line 17
def detect
  package_types = Dir[ROOT_DIR].map{|n|
    if File.file?(n)
      package_type(File.basename(n, '.rb'))
    end
  }
  package_types.detect{|type| self.guess(type.new)}
end
guess(package_type) click to toggle source
# File lib/package_detector.rb, line 26
def guess(package_type)
  package_type.accept(@package, package_type.file_type)
end

Private Instance Methods

package_type(basename) click to toggle source
# File lib/package_detector.rb, line 39
def package_type(basename)
  klass = basename.split("_").map {|s| s.capitalize }.join("")
  Kernel.const_get('PackageDetector').const_get('Package').const_get(klass)
end