module StrategyBag::ClassDSL

Attributes

conditions[RW]
default_strategy[RW]
derived_attributes[RW]
param_names[RW]
strategies[RW]

Public Instance Methods

condition(positive_name, negative_name, &p) click to toggle source
# File lib/strategy_bag.rb, line 81
def condition(positive_name, negative_name, &p)
  #puts "DSL: condition: #{positive_name}"
  self.conditions ||= []
  self.conditions << [positive_name, negative_name, p]
end
default(&block) click to toggle source
# File lib/strategy_bag.rb, line 94
def default(&block)
  self.default_strategy = block
end
derive(name, &block) click to toggle source
# File lib/strategy_bag.rb, line 98
def derive(name, &block)
  self.derived_attributes ||= []
  self.derived_attributes << [name, block]
end
params(*param_names) click to toggle source
# File lib/strategy_bag.rb, line 77
def params(*param_names)
  self.param_names = param_names
end
strategy(title = nil, &block) click to toggle source
# File lib/strategy_bag.rb, line 87
def strategy(title = nil, &block)
  self.strategies ||= []
  strategy = Strategy.new
  strategy.instance_eval(&block)
  self.strategies << strategy
end