Skip to content

Commit cc66b55

Browse files
committed
Try not to register the exact same measuring method twice
1 parent e737aac commit cc66b55

File tree

2 files changed

+14
-4
lines changed

2 files changed

+14
-4
lines changed

lib/irb/cmd/measure.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@ def execute(type = nil, arg = nil)
2020
when :on
2121
IRB.conf[:MEASURE] = true
2222
added = IRB.set_measure_callback(type, arg)
23-
puts "#{added[0]} is added."
23+
puts "#{added[0]} is added." if added
2424
else
2525
IRB.conf[:MEASURE] = true
2626
added = IRB.set_measure_callback(type, arg)
27-
puts "#{added[0]} is added."
27+
puts "#{added[0]} is added." if added
2828
end
2929
nil
3030
end

lib/irb/init.rb

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,8 +158,18 @@ def IRB.set_measure_callback(type = nil, arg = nil)
158158
else
159159
added = [:TIME, IRB.conf[:MEASURE_PROC][:TIME], arg]
160160
end
161-
IRB.conf[:MEASURE_CALLBACKS] << added if added
162-
added
161+
if added
162+
found = IRB.conf[:MEASURE_CALLBACKS].find{ |m| m[0] == added[0] && m[2] == added[2] }
163+
if found
164+
# already added
165+
nil
166+
else
167+
IRB.conf[:MEASURE_CALLBACKS] << added if added
168+
added
169+
end
170+
else
171+
nil
172+
end
163173
end
164174

165175
def IRB.unset_measure_callback(type = nil)

0 commit comments

Comments
 (0)