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