Class: MotionBindable::Strategy
- Inherits:
-
Object
- Object
- MotionBindable::Strategy
show all
- Defined in:
- lib/motion_bindable/strategy.rb
Overview
Represents a binding strategy. Designed to be as flexible as possible.
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(object, attribute) ⇒ Strategy
Returns a new instance of Strategy.
23
24
25
26
|
# File 'lib/motion_bindable/strategy.rb', line 23
def initialize(object, attribute)
@attribute = attribute.to_sym
self.object = object
end
|
Instance Attribute Details
#bound ⇒ Object
Returns the value of attribute bound.
21
22
23
|
# File 'lib/motion_bindable/strategy.rb', line 21
def bound
@bound
end
|
#object ⇒ Object
Returns the value of attribute object.
20
21
22
|
# File 'lib/motion_bindable/strategy.rb', line 20
def object
@object
end
|
Class Method Details
.find_by_reference(object) ⇒ Object
14
15
16
17
18
|
# File 'lib/motion_bindable/strategy.rb', line 14
def self.find_by_reference(object)
@strategies_map.reverse.find do |h|
h[:candidates].include? object.class
end.fetch(:class)
end
|
.register_strategy(strategy, *objects) ⇒ Object
10
11
12
|
# File 'lib/motion_bindable/strategy.rb', line 10
def self.register_strategy(strategy, *objects)
@strategies_map << { class: strategy, candidates: objects }
end
|
Instance Method Details
#attribute ⇒ Object
43
44
45
|
# File 'lib/motion_bindable/strategy.rb', line 43
def attribute
object.send(@attribute)
end
|
#attribute=(value) ⇒ Object
47
48
49
|
# File 'lib/motion_bindable/strategy.rb', line 47
def attribute=(value)
object.send(:"#{@attribute.to_s}=", value)
end
|
#bind(bound) ⇒ Object
28
29
30
31
32
33
|
# File 'lib/motion_bindable/strategy.rb', line 28
def bind(bound)
self.bound = bound
on_bind
self
end
|
#on_bind ⇒ Object
39
40
41
|
# File 'lib/motion_bindable/strategy.rb', line 39
def on_bind
refresh
end
|
#refresh ⇒ Object
You can either choose to just override #refresh for objects that can't
be bound with callbacks. Or override #on_bind for objects that can be
bound with a callback.
38
|
# File 'lib/motion_bindable/strategy.rb', line 38
def refresh; end
|