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