lib/xezat/detectors.rb in xezat-0.0.4 vs lib/xezat/detectors.rb in xezat-0.1.0

- old
+ new

@@ -1,36 +1,19 @@ module Xezat - # detector が多重定義された場合に投げられる例外 - class MultipleDetectorDefinitionError < StandardError - end - class DetectorManager - @@detectors = {} - - # detector を登録する - def self.register(name, klass) - raise MultipleDetectorDefinitionError, "'#{name}' already defined" if @@detectors.key?(name) - @@detectors[name] = klass.new - end - - # detector をロードする - def self.load_default_detectors(path = File::expand_path(File::join(File::dirname(__FILE__), 'detector'))) - Dir::glob(File::join(path, '*.rb')) do |rb| + def initialize(detector_dir = File.expand_path(File.join(File.dirname(__FILE__), 'detector'))) + @detectors = {} + Dir.glob(File.join(detector_dir, '*.rb')) do |rb| require rb + @detectors[File.basename(rb, '.rb').intern] = Object.const_get("Xezat::Detector::#{Xezat::Detector.constants[-1]}").new end end - # 登録されている detector で source tree を検証する - def self.detect(variables) + def detect(variables) tools = [] - @@detectors.each do |name, detector| + @detectors.each do |name, detector| tools << name if detector.detect(variables) end tools end - - def self.[](name) - @@detectors[name] - end - end end