Class: Deadlift::Base
- Inherits:
-
Object
- Object
- Deadlift::Base
- Defined in:
- lib/deadlift/base.rb
Defined Under Namespace
Classes: NullResult
Instance Attribute Summary collapse
-
#barbell ⇒ Object
readonly
Returns the value of attribute barbell.
Class Method Summary collapse
- .barbell(params = {}) ⇒ Object
- .default_trainers(*trainers) ⇒ Object
- .get_default_trainers ⇒ Object
- .validate(*messages) ⇒ Object
- .validations ⇒ Object
Instance Method Summary collapse
- #add_trainer(*trainers) ⇒ Object
- #barbell_approved? ⇒ Boolean
-
#initialize(params) ⇒ Base
constructor
A new instance of Base.
- #interaction ⇒ Object
- #perform_and_report_for_valid(&block) ⇒ Object
- #performance ⇒ Object
- #report(type) ⇒ Object
- #report_progress(performance) ⇒ Object
-
#result ⇒ Object
Override if needed.
- #trainers ⇒ Object
Constructor Details
#initialize(params) ⇒ Base
Returns a new instance of Base.
26 27 28 29 30 31 |
# File 'lib/deadlift/base.rb', line 26 def initialize(params) klass = self.class @params = params @barbell = klass.(@params) klass.get_default_trainers.each{|trainer| add_trainer(trainer)} end |
Instance Attribute Details
#barbell ⇒ Object (readonly)
Returns the value of attribute barbell.
3 4 5 |
# File 'lib/deadlift/base.rb', line 3 def @barbell end |
Class Method Details
.barbell(params = {}) ⇒ Object
5 6 7 |
# File 'lib/deadlift/base.rb', line 5 def self.(params = {}) Deadlift::Barbell::Default.new(params) end |
.default_trainers(*trainers) ⇒ Object
22 23 24 |
# File 'lib/deadlift/base.rb', line 22 def self.default_trainers(*trainers) @default_trainers = trainers end |
.get_default_trainers ⇒ Object
18 19 20 |
# File 'lib/deadlift/base.rb', line 18 def self.get_default_trainers Array(@default_trainers) end |
.validate(*messages) ⇒ Object
9 10 11 12 |
# File 'lib/deadlift/base.rb', line 9 def self.validate(*) @validations ||= [] validations.concat end |
.validations ⇒ Object
14 15 16 |
# File 'lib/deadlift/base.rb', line 14 def self.validations @validations end |
Instance Method Details
#add_trainer(*trainers) ⇒ Object
33 34 35 36 |
# File 'lib/deadlift/base.rb', line 33 def add_trainer(*trainers) self.trainers.concat trainers self end |
#barbell_approved? ⇒ Boolean
65 66 67 68 69 70 71 |
# File 'lib/deadlift/base.rb', line 65 def return false unless .approved? Array(self.class.validations).each do || self.send end Array(.errors).empty? end |
#interaction ⇒ Object
82 83 84 |
# File 'lib/deadlift/base.rb', line 82 def interaction self.class.name.demodulize.underscore.to_sym end |
#perform_and_report_for_valid(&block) ⇒ Object
38 39 40 41 42 43 44 45 |
# File 'lib/deadlift/base.rb', line 38 def perform_and_report_for_valid(&block) if yield report :success else report :failure end end |
#performance ⇒ Object
73 74 75 |
# File 'lib/deadlift/base.rb', line 73 def performance @performance ||= Deadlift::Performance.new(, result, interaction) end |
#report(type) ⇒ Object
51 52 53 54 55 56 |
# 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) ⇒ Object
58 59 60 61 62 63 |
# File 'lib/deadlift/base.rb', line 58 def report_progress(performance) trainers.each do |trainer| trainer.public_send(:progress, performance) end nil end |
#result ⇒ Object
Override if needed
78 79 80 |
# File 'lib/deadlift/base.rb', line 78 def result NullResult.new end |
#trainers ⇒ Object
47 48 49 |
# File 'lib/deadlift/base.rb', line 47 def trainers @trainers ||= [] end |