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.



247
248
249
250
251
252
253
254
# File 'lib/projectsimulator.rb', line 247

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

end

Instance Attribute Details

#macrosObject (readonly)

Returns the value of attribute macros.



244
245
246
# File 'lib/projectsimulator.rb', line 244

def macros
  @macros
end

#titleObject

Returns the value of attribute title.



245
246
247
# File 'lib/projectsimulator.rb', line 245

def title
  @title
end

Instance Method Details

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



257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
# File 'lib/projectsimulator.rb', line 257

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