From d975ce513509d12c1f69752270ce65de4f80d7aa Mon Sep 17 00:00:00 2001 From: jj Date: Wed, 26 Sep 2012 15:08:54 +0200 Subject: [PATCH] ruby: add onstatechange_register_once --- plugins/ruby/ruby.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/plugins/ruby/ruby.rb b/plugins/ruby/ruby.rb index aeae101d3..81b73b7ce 100644 --- a/plugins/ruby/ruby.rb +++ b/plugins/ruby/ruby.rb @@ -119,6 +119,14 @@ module DFHack @onstatechange_list.delete b end + # same as onstatechange_register, but auto-unregisters if the block returns true + def onstatechange_register_once + handle = onstatechange_register { |st| + onstatechange_unregister(handle) if yield(st) + } + end + + # this method is called by dfhack every 'onstatechange' def onstatechange(newstate) @onstatechange_list ||= []