lib/hightop/enumerable.rb in hightop-0.2.2 vs lib/hightop/enumerable.rb in hightop-0.2.3
- old
+ new
@@ -1,14 +1,10 @@
module Enumerable
- def top(*args, &block)
+ def top(*args, **options, &block)
if block || !(respond_to?(:scoping) || respond_to?(:with_scope))
- limit, options, _ = args
- if limit.is_a?(Hash) && args.size == 1
- options = limit
- limit = nil
- end
- options ||= {}
+ # TODO raise error if too many arguments
+ limit = args[0]
min = options[:min]
counts = Hash.new(0)
map(&block).each do |v|
counts[v] += 1
@@ -18,11 +14,11 @@
arr = counts.sort_by { |_, v| -v }
arr = arr[0...limit] if limit
Hash[arr]
elsif respond_to?(:scoping)
- scoping { @klass.send(:top, *args, &block) }
+ scoping { @klass.send(:top, *args, **options, &block) }
else
- with_scope(self) { klass.send(:top, *args, &block) }
+ with_scope(self) { klass.send(:top, *args, **options, &block) }
end
end
end