Module: Assigner::Assignable

Defined in:
lib/assigner/assignable.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#assignationObject

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

Returns:

  • (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_selfObject



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

Returns:

  • (Boolean)


39
40
41
# File 'lib/assigner/assignable.rb', line 39

def have_conditions?
  !@assign_conditions.nil? && !@assign_conditions.empty?
end