summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authoraycabta <aycabta@gmail.com>2020-12-24 22:09:09 +0900
committeraycabta <aycabta@gmail.com>2020-12-24 23:26:22 +0900
commit167dc37632300e0061351ab87ddc89ebe9c5f53f (patch)
tree96988ed4c293ba4f9e09647dcb631f7ab5c9f211 /lib
parent2c752ff9309496d18c2158f593cab2b6fc671783 (diff)
[ruby/irb] Try not to register the exact same measuring method twice
https://github.com/ruby/irb/commit/cc66b5573e
Diffstat (limited to 'lib')
-rw-r--r--lib/irb/cmd/measure.rb4
-rw-r--r--lib/irb/init.rb14
2 files changed, 14 insertions, 4 deletions
diff --git a/lib/irb/cmd/measure.rb b/lib/irb/cmd/measure.rb
index 0806f84ed7..5e0bef62af 100644
--- a/lib/irb/cmd/measure.rb
+++ b/lib/irb/cmd/measure.rb
@@ -20,11 +20,11 @@ module IRB
when :on
IRB.conf[:MEASURE] = true
added = IRB.set_measure_callback(type, arg)
- puts "#{added[0]} is added."
+ puts "#{added[0]} is added." if added
else
IRB.conf[:MEASURE] = true
added = IRB.set_measure_callback(type, arg)
- puts "#{added[0]} is added."
+ puts "#{added[0]} is added." if added
end
nil
end
diff --git a/lib/irb/init.rb b/lib/irb/init.rb
index 45a35cf94d..8428a4278f 100644
--- a/lib/irb/init.rb
+++ b/lib/irb/init.rb
@@ -158,8 +158,18 @@ module IRB # :nodoc:
else
added = [:TIME, IRB.conf[:MEASURE_PROC][:TIME], arg]
end
- IRB.conf[:MEASURE_CALLBACKS] << added if added
- added
+ if added
+ found = IRB.conf[:MEASURE_CALLBACKS].find{ |m| m[0] == added[0] && m[2] == added[2] }
+ if found
+ # already added
+ nil
+ else
+ IRB.conf[:MEASURE_CALLBACKS] << added if added
+ added
+ end
+ else
+ nil
+ end
end
def IRB.unset_measure_callback(type = nil)