Sha256: 5697b680a62653a7f1889a1711df70ee132b92d206ae66ba52bcfc42d842f53e
Contents?: true
Size: 1.91 KB
Versions: 1
Compression:
Stored size: 1.91 KB
Contents
module Virility class Excitation include Virility::Supporter attr_accessor :url, :results, :strategies, :counts # # Initialization # def initialize url @url = url @strategies = {} @results = {} @counts = {} collect_strategies end # # Get Virility from all of the Strategies # def poll if @results.empty? @strategies.each do |name, strategy| begin @results[symbolize_for_key(strategy)] = strategy.poll rescue => e puts "[virility#poll] #{strategy.class.to_s} => #{e}" end end end @results end def get_response(strategy) @strategies[strategy].response if @strategies[strategy] end # # Return Collected Counts as a Hash # def counts poll if @counts.empty? @strategies.each do |name, strategy| begin @counts[symbolize_for_key(strategy)] = strategy.count.to_i rescue => e puts "[virility] #{strategy.class.to_s} => #{e}" end end end @counts end def total_virility counts.values.inject(0) { |result, count| result + count } end alias :total :total_virility # # Gather all of the Strategies # def collect_strategies Dir["#{File.dirname(__FILE__)}/strategies/**/*.rb"].each { |klass| @strategies[get_class_string(klass).to_sym] = Virility.const_get(camelize(get_class_string(klass))).new(@url) } end # # Reflection # def attributes {:url => @url, :available_strategies => @strategies.keys} end # # Dynamic Methods # def get_strategy strategy if strategy_exists?(strategy) @strategies[strategy.to_sym] else raise UnknownStrategy, "#{strategy} Is Not A Known Strategy" end end def strategy_exists? strategy !@strategies[strategy.to_sym].nil? end def method_missing(name, *args, &block) if strategy_exists?(name) get_strategy(name) else raise UnknownStrategy, "#{name} Is Not A Known Strategy" end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
virility-0.1.0 | lib/virility/excitation.rb |