# HG changeset patch # User Michael Granger # Date 1630619349 25200 # Thu Sep 02 14:49:09 2021 -0700 # Node ID 4db5211d848c92a783bbd30827d4731e338489ea # Parent 641c3b105ad89b9d7c22badc238c25a0e446ac77 Allow additional args when specifying the #on_event op in the transition matcher. diff --git a/lib/pushdown/spec_helpers.rb b/lib/pushdown/spec_helpers.rb --- a/lib/pushdown/spec_helpers.rb +++ b/lib/pushdown/spec_helpers.rb @@ -103,9 +103,9 @@ ### Specify that the operation that should cause the transition is the #on_event callback. - def on_an_event( event ) + def on_an_event( event, *args ) raise ScriptError, "can't specify more than one callback" if self.callback - @callback = [ :on_event, event ] + @callback = [ :on_event, event, *args ] return self end alias_method :on_event, :on_an_event diff --git a/pushdown.gemspec b/pushdown.gemspec --- a/pushdown.gemspec +++ b/pushdown.gemspec @@ -1,15 +1,15 @@ # -*- encoding: utf-8 -*- -# stub: pushdown 0.3.0.pre.20210901151908 ruby lib +# stub: pushdown 0.4.0.pre.20210902144834 ruby lib Gem::Specification.new do |s| s.name = "pushdown".freeze - s.version = "0.3.0.pre.20210901151908" + s.version = "0.4.0.pre.20210902144834" s.required_rubygems_version = Gem::Requirement.new("> 1.3.1".freeze) if s.respond_to? :required_rubygems_version= s.metadata = { "bug_tracker_uri" => "http://todo.sr.ht/~ged/Pushdown", "changelog_uri" => "http://deveiate.org/code/pushdown/History_md.html", "documentation_uri" => "http://deveiate.org/code/pushdown", "homepage_uri" => "http://hg.sr.ht/~ged/Pushdown", "source_uri" => "http://hg.sr.ht/~ged/Pushdown" } if s.respond_to? :metadata= s.require_paths = ["lib".freeze] s.authors = ["Michael Granger".freeze] - s.date = "2021-09-01" + s.date = "2021-09-02" s.description = "A pushdown automaton toolkit for Ruby. It's based on the State Manager from the Amethyst project.".freeze s.email = ["ged@faeriemud.org".freeze] s.files = ["History.md".freeze, "LICENSE.txt".freeze, "README.md".freeze, "lib/pushdown.rb".freeze, "lib/pushdown/automaton.rb".freeze, "lib/pushdown/exceptions.rb".freeze, "lib/pushdown/spec_helpers.rb".freeze, "lib/pushdown/state.rb".freeze, "lib/pushdown/transition.rb".freeze, "lib/pushdown/transition/pop.rb".freeze, "lib/pushdown/transition/push.rb".freeze, "lib/pushdown/transition/replace.rb".freeze, "lib/pushdown/transition/switch.rb".freeze, "spec/pushdown/automaton_spec.rb".freeze, "spec/pushdown/spec_helpers_spec.rb".freeze, "spec/pushdown/state_spec.rb".freeze, "spec/pushdown/transition/pop_spec.rb".freeze, "spec/pushdown/transition/push_spec.rb".freeze, "spec/pushdown/transition/replace_spec.rb".freeze, "spec/pushdown/transition/switch_spec.rb".freeze, "spec/pushdown/transition_spec.rb".freeze, "spec/pushdown_spec.rb".freeze, "spec/spec_helper.rb".freeze] diff --git a/spec/pushdown/spec_helpers_spec.rb b/spec/pushdown/spec_helpers_spec.rb --- a/spec/pushdown/spec_helpers_spec.rb +++ b/spec/pushdown/spec_helpers_spec.rb @@ -352,6 +352,19 @@ end + it "supports giving additional arguments to pass the #on_event operation" do + state_class.transition_push( :change, :other ) + + state = state_class.new + expect( state ).to receive( :on_event ).with( :foo, 1, "another arg" ). + and_return( :change ) + + expect { + expect( state ).to transition.on_an_event( :foo, 1, "another arg" ) + }.to_not raise_error + end + + it "adds the callback to the description if on_update is specified" do state_class.transition_push( :change, :other )