Module: Card::MachineInput

Included in:
Set::Type::CoffeeScript, Set::Type::Css, Set::Type::JavaScript, Set::Type::Skin
Defined in:
mod/03_machines/lib/card/machine_input.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Class Method Details

.define_delete_events(event_suffix, host_class) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'mod/03_machines/lib/card/machine_input.rb', line 26

def self.define_delete_events event_suffix, host_class
  event_name = "before_machine_input_deleted_#{event_suffix}".to_sym
  host_class.event event_name, :store, on: :delete do
    # exclude self because it's on the way to the trash
    # otherwise it will be created again with the reset_machine_output
    # call in the event below
    @involved_machines =
      Card::MachineInput.search_involved_machines(name, host_class)
                        .reject { |card| card == self }
  end
  event_name = "after_machine_input_deleted_#{event_suffix}".to_sym
  host_class.event event_name, :finalize, on: :delete do
    @involved_machines.each do |item|
      item.reset_machine_output! if item.is_a? Machine
    end
  end
end

.define_update_event(event_suffix, host_class) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
# File 'mod/03_machines/lib/card/machine_input.rb', line 44

def self.define_update_event event_suffix, host_class
  host_class.event(
    "after_machine_input_updated_#{event_suffix}".to_sym, :integrate,
    on: :save
  ) do
    Card::MachineInput.search_involved_machines(name, host_class)
                      .each do |item|
      item.reset_machine_output! if item.is_a? Machine
    end
  end
end

.included(host_class) ⇒ Object



15
16
17
18
19
20
21
22
23
24
# File 'mod/03_machines/lib/card/machine_input.rb', line 15

def self.included host_class
  host_class.extend(ClassMethods)
  host_class.machines_wql = {}
  host_class.machine_input do
    format._render_raw
  end
  event_suffix = host_class.name.tr ':', '_'
  define_update_event event_suffix, host_class
  define_delete_events event_suffix, host_class
end

.search_involved_machines(name, host_class) ⇒ Object



56
57
58
59
60
61
62
63
# File 'mod/03_machines/lib/card/machine_input.rb', line 56

def self.search_involved_machines name, host_class
  wql_statement =
    { right_plus: [
      { codename: 'machine_input' },
      { link_to: name }
    ] }.merge(host_class.machines_wql)
  Card.search(wql_statement)
end