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.



207
208
209
210
211
212
213
214
# File 'lib/projectsimulator.rb', line 207

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

end

Instance Attribute Details

#macrosObject (readonly)

Returns the value of attribute macros.



204
205
206
# File 'lib/projectsimulator.rb', line 204

def macros
  @macros
end

#titleObject

Returns the value of attribute title.



205
206
207
# File 'lib/projectsimulator.rb', line 205

def title
  @title
end

Instance Method Details

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



217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
# File 'lib/projectsimulator.rb', line 217

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