Class: ProjectSimulator::Controller

Inherits:
Object
  • Object
show all
Defined in:
lib/projectsimulator.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(mcs, debug: false) ⇒ Controller

Returns a new instance of Controller.



135
136
137
138
139
140
141
142
# File 'lib/projectsimulator.rb', line 135

def initialize(mcs, debug: false)
  
  @debug = debug
  @syslog = []
        
  @macros = mcs.macros

end

Instance Attribute Details

#macrosObject (readonly)

Returns the value of attribute macros.



132
133
134
# File 'lib/projectsimulator.rb', line 132

def macros
  @macros
end

#titleObject

Returns the value of attribute title.



133
134
135
# File 'lib/projectsimulator.rb', line 133

def title
  @title
end

Instance Method Details

#trigger(name, detail = {time: $env[:time]}) ⇒ Object



145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
# File 'lib/projectsimulator.rb', line 145

def trigger(name, detail={time: $env[:time]})
  
  macros = @macros.select do |macro|
    
    puts 'macro: '  + macro.inspect if @debug

    valid_trigger = macro.match?(name, detail)
    
    puts 'valid_trigger: ' + valid_trigger.inspect if @debug
    
    if valid_trigger then
      @syslog << [Time.now, :trigger, name] 
      @syslog << [Time.now, :macro, macro.title]
    end
                 
    valid_trigger
    
  end
  
  puts 'macros: ' + macros.inspect if @debug
  
  macros.flat_map(&:run)
end