class Rubots::StrategyLoader
Public Class Methods
default_lineup()
click to toggle source
# File lib/rubots/strategy_loader.rb, line 9 def self.default_lineup [ Samples::Rotator, Samples::SittingDuck, Samples::TargetFinder, Samples::Artillery ] end
load(params)
click to toggle source
# File lib/rubots/strategy_loader.rb, line 3 def self.load(params) return default_lineup unless params.any? params.map { |p| new(p).strategy_class }.flatten end
new(name)
click to toggle source
# File lib/rubots/strategy_loader.rb, line 14 def initialize(name) @name = name end
Public Instance Methods
strategy_class()
click to toggle source
# File lib/rubots/strategy_loader.rb, line 18 def strategy_class if is_multiple? multiple_classes elsif is_sample? sample_class else class_from_file end end
Private Instance Methods
camelize(term)
click to toggle source
# File lib/rubots/strategy_loader.rb, line 54 def camelize(term) string = term.to_s string = string.sub(/^[a-z\d]*/) { $&.capitalize } string.gsub!(/(?:_|(\/))([a-z\d]*)/i) { "#{$1}#{$2.capitalize}" } string.gsub!('/', '::') string end
class_from_file()
click to toggle source
# File lib/rubots/strategy_loader.rb, line 39 def class_from_file load @name class_name = camelize(File.basename(@name, ".rb")) Rubots.const_get(class_name) end
is_multiple?()
click to toggle source
# File lib/rubots/strategy_loader.rb, line 30 def is_multiple? @name.match(/^[0-9]+\*/) end
is_sample?()
click to toggle source
# File lib/rubots/strategy_loader.rb, line 46 def is_sample? @name.match /^sample:/ end
multiple_classes()
click to toggle source
# File lib/rubots/strategy_loader.rb, line 34 def multiple_classes parts = @name.split('*', 2) [StrategyLoader.new(parts[1]).strategy_class] * parts[0].to_i end
sample_class()
click to toggle source
# File lib/rubots/strategy_loader.rb, line 50 def sample_class Samples.const_get(camelize(@name.split(':').last)) end