class Deadlift::Base

Attributes

barbell[R]

Public Class Methods

barbell(params = {}) click to toggle source
# File lib/deadlift/base.rb, line 5
def self.barbell(params = {})
  Deadlift::Barbell::Default.new(params)
end
default_trainers(*trainers) click to toggle source
# File lib/deadlift/base.rb, line 22
def self.default_trainers(*trainers)
  @default_trainers = trainers
end
get_default_trainers() click to toggle source
# File lib/deadlift/base.rb, line 18
def self.get_default_trainers
  Array(@default_trainers)
end
new(params) click to toggle source
# File lib/deadlift/base.rb, line 26
def initialize(params)
  klass = self.class
  @params = params
  @barbell = klass.barbell(@params)
  klass.get_default_trainers.each{|trainer| add_trainer(trainer)}
end
validate(*messages) click to toggle source
# File lib/deadlift/base.rb, line 9
def self.validate(*messages)
  @validations ||= []
  validations.concat messages
end
validations() click to toggle source
# File lib/deadlift/base.rb, line 14
def self.validations
  @validations
end

Public Instance Methods

add_trainer(*trainers) click to toggle source
# File lib/deadlift/base.rb, line 33
def add_trainer(*trainers)
  self.trainers.concat trainers
  self
end
barbell_approved?() click to toggle source
# File lib/deadlift/base.rb, line 65
def barbell_approved?
  return false unless barbell.approved?
  Array(self.class.validations).each do |message|
    self.send message
  end
  Array(barbell.errors).empty?
end
interaction() click to toggle source
# File lib/deadlift/base.rb, line 82
def interaction
  self.class.name.demodulize.underscore.to_sym
end
perform_and_report_for_valid() { || ... } click to toggle source
# File lib/deadlift/base.rb, line 38
def perform_and_report_for_valid(&block)
  if barbell_approved?
    yield
    report :success
  else
    report :failure
  end
end
performance() click to toggle source
# File lib/deadlift/base.rb, line 73
def performance
  @performance ||= Deadlift::Performance.new(barbell, result, interaction)
end
report(type) click to toggle source
# File lib/deadlift/base.rb, line 51
def report(type)
  trainers.each do |trainer|
    trainer.public_send("#{type}", performance)
  end
  nil
end
report_progress(performance) click to toggle source
# File lib/deadlift/base.rb, line 58
def report_progress(performance)
  trainers.each do |trainer|
    trainer.public_send(:progress, performance)
  end
  nil
end
result() click to toggle source

Override if needed

# File lib/deadlift/base.rb, line 78
def result
  NullResult.new
end
trainers() click to toggle source
# File lib/deadlift/base.rb, line 47
def trainers
  @trainers ||= []
end