Class: Assignbot::Assignable

Inherits:
Object
  • Object
show all
Defined in:
lib/assignbot/foundations/assignable.rb

Overview

assignable represent the class, it has many assigner

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(target_class) ⇒ Assignable



9
10
11
12
# File 'lib/assignbot/foundations/assignable.rb', line 9

def initialize(target_class)
  @target_class = target_class
  @assigners = {}
end

Instance Attribute Details

#assignersObject (readonly)

all instances of assigners, type: Hash



5
6
7
# File 'lib/assignbot/foundations/assignable.rb', line 5

def assigners
  @assigners
end

#target_classObject (readonly)

the target class of it



7
8
9
# File 'lib/assignbot/foundations/assignable.rb', line 7

def target_class
  @target_class
end

Instance Method Details

#add_assigner(assigner) ⇒ Object



14
15
16
17
18
# File 'lib/assignbot/foundations/assignable.rb', line 14

def add_assigner(assigner)
  assigner_name = Assigner.canonify_name(assigner.name)
  assigners[assigner_name] = assigner
  nil
end

#add_variable(assigner_name, target_variable, source_variable, receptor) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/assignbot/foundations/assignable.rb', line 25

def add_variable(assigner_name,
                 target_variable,
                 source_variable,
                 receptor)

  # create one instance of Assigner unless defined
  assigner = get_assigner(assigner_name)
  if assigner.nil?
    assigner = Assigner.new(self, assigner_name)
    add_assigner(assigner)
  end

  variable = Variable.new(assigner)
  variable.target_variable = target_variable
  variable.source_variable = source_variable
  variable.receptor = receptor
  assigner.add_variable(variable)

  nil
end

#get_assigner(assigner_name) ⇒ Object



20
21
22
23
# File 'lib/assignbot/foundations/assignable.rb', line 20

def get_assigner(assigner_name)
  assigner = assigners[Assigner.canonify_name(assigner_name)]
  assigner
end