lib/lite/ruby/enumerable.rb in lite-ruby-1.0.30 vs lib/lite/ruby/enumerable.rb in lite-ruby-1.0.31
- old
+ new
@@ -18,11 +18,11 @@
def cluster_by(&block)
group_by(&block).sort.transpose.pop || []
end
def deduce(identity = 0, &block)
- if block_given?
+ if defined?(yield)
map(&block).deduce(identity)
else
inject { |acc, val| acc - val } || identity
end
end
@@ -44,11 +44,11 @@
end
def exactly?(num)
found_count = 0
- if block_given?
+ if defined?(yield)
each { |*opt| found_count += 1 if yield(*opt) }
else
each { |opt| found_count += 1 if opt }
end
@@ -75,11 +75,11 @@
def expand
map { |val| val.is_a?(Enumerable) ? val.expand : val }
end
def exponential(identity = 0, &block)
- if block_given?
+ if defined?(yield)
map(&block).exponential(identity)
else
inject { |acc, val| acc**val } || identity
end
end
@@ -129,11 +129,11 @@
# rubocop:enable Metrics/MethodLength
def many?
found_count = 0
- if block_given?
+ if defined?(yield)
any? do |val|
found_count += 1 if yield(val)
found_count > 1
end
else
@@ -151,20 +151,21 @@
array[i % modulo] += [self[i]]
end
end
end
- # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength
+ # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity
+ # rubocop:disable Metrics/MethodLength, Metrics/PerceivedComplexity
def occur(amount = nil)
result = Hash.new { |hash, key| hash[key] = [] }
each do |item|
key = item
result[key] << item
end
- if block_given?
+ if defined?(yield)
result.select! { |_key, values| yield(values.size) }
else
raise ArgumentError, 'Invalid occur amount' unless amount
if amount.is_a?(Range)
@@ -174,39 +175,40 @@
end
end
result.values.flatten.uniq
end
- # rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength
+ # rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity
+ # rubocop:enable Metrics/MethodLength, Metrics/PerceivedComplexity
def pluck(*keys)
if keys.many?
map { |element| keys.map { |key| element[key] } }
else
map { |element| element[keys.first] }
end
end
def produce(identity = 0, &block)
- if block_given?
+ if defined?(yield)
map(&block).produce(identity)
else
inject { |acc, val| acc * val } || identity
end
end
def quotient(identity = 0, &block)
- if block_given?
+ if defined?(yield)
map(&block).quotient(identity)
else
inject { |acc, val| acc / val } || identity
end
end
def several?
found_count = 0
- if block_given?
+ if defined?(yield)
each { |*opt| found_count += 1 if yield(*opt) }
else
each { |opt| found_count += 1 if opt }
end