require 'singleton' module Cabalist class Manager include Singleton attr_accessor :classifiers def initialize() self.classifiers = [] end def self.register_classifier(klass, proc) instance.classifiers << { :klass => klass, :proc => proc } end def self.setup! instance.classifiers.each do |classifier| classifier[:klass].const_set( 'CABALIST_CLASSIFIER', classifier[:proc].call ) classifier[:klass].class_eval do def classify() CABALIST_CLASSIFIER.eval(self.get_signals) end def classify!() set_category(classify) end end end end end end