diff --git a/demos/MyModelArgs.rb b/demos/MyModelArgs.rb index db78ae0dafacd36f44dac3bd12eddd2a9a9287af..b9d24840ada5483e7c3a67d62e1f9f3eae78ce9f 100644 --- a/demos/MyModelArgs.rb +++ b/demos/MyModelArgs.rb @@ -11,10 +11,13 @@ class MyModel end def increment(n:, char:) - @x += n - schedule(:increment, 2.0 * rand(2), n: @x, char: char - 1, priority: 3) - printf "%f, %f, %c\n", model_time, @x, char - cancel_all :increment if model_time > 10 + if model_time < 10.0 + @x += n + schedule(:increment, rand(3), n: @x, char: char - 1, priority: 3) + printf "%f, %f, %c\n", model_time, @x, char + else + cancel_all :increment + end end end diff --git a/lib/simplekit.rb b/lib/simplekit.rb index e4ef4d23b16186275efefbcd3ae3334e0462400c..82e3155d514cc674d71af6f8cd826254145af732 100644 --- a/lib/simplekit.rb +++ b/lib/simplekit.rb @@ -54,7 +54,7 @@ module SimpleKit # - +args+ -> zero or more named arguments to pass to the event # at invocation time. These should be specified with labels, and # consequently they can be placed in any order. - def schedule(event, delay, **args) + def schedule(event, delay, args = {}) raise 'Model scheduled event with negative delay.' if delay < 0 @event_list.push EventNotice.new(event, @model_time, delay, args) end @@ -65,9 +65,10 @@ module SimpleKit # all be a match with the corresponding +args+ of the scheduled event # in order for the cancellation to apply, but +args+ which are not # specified do not affect the target event matching. - def cancel(event, **args) + def cancel(event, args = {}) @cancel_set[event] ||= Set.new - @cancel_set[event].add(args.empty? ? nil : args) + # @cancel_set[event].add(args.empty? ? nil : args) + @cancel_set[event].add(args) end # Cancel all currently scheduled events of type +event+. @@ -96,7 +97,7 @@ module SimpleKit if current_event.args.empty? @user_model.send(current_event.event) else - @user_model.send(current_event.event, current_event.args) + @user_model.send(current_event.event, **current_event.args) end end end diff --git a/simplekit.gemspec b/simplekit.gemspec index b55126520421c292ebc4f89399d5b0d5b61463ea..c48b985a9220fcf2f6e9b2402487227b15d5d57c 100644 --- a/simplekit.gemspec +++ b/simplekit.gemspec @@ -1,10 +1,10 @@ # -*- ruby -*- -_VERSION = "1.0.0" +_VERSION = "1.1.0" Gem::Specification.new do |s| s.name = "simplekit" s.version = _VERSION - s.date = "2018-07-12" + s.date = "2020-04-09" s.summary = "Discrete event simulation engine." s.homepage = "https://gitlab.nps.edu/pjsanche/simplekit-ruby.git" s.email = "pjs@alum.mit.edu"