Module: Assigner::Assignable
- Defined in:
- lib/assigner/assignable.rb
Instance Attribute Summary collapse
-
#assignation ⇒ Object
Returns the value of attribute assignation.
Instance Method Summary collapse
- #assign_conditions(&block) ⇒ Object
- #can_be_assigned_to?(other) ⇒ Boolean
- #can_not_be_self ⇒ Object
- #different(*method_names) ⇒ Object
- #have_conditions? ⇒ Boolean
Instance Attribute Details
#assignation ⇒ Object
Returns the value of attribute assignation.
3 4 5 |
# File 'lib/assigner/assignable.rb', line 3 def assignation @assignation end |
Instance Method Details
#assign_conditions(&block) ⇒ Object
5 6 7 |
# File 'lib/assigner/assignable.rb', line 5 def assign_conditions(&block) instance_eval(&block) end |
#can_be_assigned_to?(other) ⇒ Boolean
9 10 11 12 13 14 15 16 17 |
# File 'lib/assigner/assignable.rb', line 9 def can_be_assigned_to?(other) if have_conditions? @assign_conditions.each do |condition| return false unless send condition.to_sym, other end end return true end |
#can_not_be_self ⇒ Object
19 20 21 22 23 24 25 26 |
# File 'lib/assigner/assignable.rb', line 19 def can_not_be_self condition_name = 'different_object?' self.class.send :define_method, condition_name do |data| self != data end @assign_conditions ||= [] @assign_conditions << condition_name end |
#different(*method_names) ⇒ Object
28 29 30 31 32 33 34 35 36 37 |
# File 'lib/assigner/assignable.rb', line 28 def different(*method_names) @assign_conditions ||= [] method_names.each do |name| condition_name = "different_#{name}?" self.class.send :define_method, condition_name do |data| instance_variable_get("@#{name}") != data.instance_variable_get("@#{name}") end @assign_conditions << condition_name end end |
#have_conditions? ⇒ Boolean
39 40 41 |
# File 'lib/assigner/assignable.rb', line 39 def have_conditions? !@assign_conditions.nil? && !@assign_conditions.empty? end |