diff options
author | luigi <007.lva@gmail.com> | 2021-01-09 18:32:01 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-10 00:32:01 +0100 |
commit | 087ed84367537ac168ed3e00bb7eb4bd582dc3d0 (patch) | |
tree | 2374e63ef1aabe4b9991dd30c4eba8adfec89839 /lib | |
parent | 93951431269403201550e914dee508a522becf8b (diff) |
Optimize map { ... }.compact calls (#15513)
* Optimize map { ... }.compact using Enumerable#filter_map, supported since Ruby 2.7 * Add poyfill for Enumerable#filter_map
Diffstat (limited to 'lib')
-rw-r--r-- | lib/enumerable.rb | 26 | ||||
-rw-r--r-- | lib/paperclip/attachment_extensions.rb | 2 |
2 files changed, 27 insertions, 1 deletions
diff --git a/lib/enumerable.rb b/lib/enumerable.rb new file mode 100644 index 000000000..66918f65e --- /dev/null +++ b/lib/enumerable.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +module Enumerable + # TODO: Remove this once stop to support Ruby 2.6 + if RUBY_VERSION < '2.7.0' + def filter_map + if block_given? + result = [] + each do |element| + res = yield element + result << res if res + end + result + else + Enumerator.new do |yielder| + result = [] + each do |element| + res = yielder.yield element + result << res if res + end + result + end + end + end + end +end diff --git a/lib/paperclip/attachment_extensions.rb b/lib/paperclip/attachment_extensions.rb index 94f7769b6..e25a34213 100644 --- a/lib/paperclip/attachment_extensions.rb +++ b/lib/paperclip/attachment_extensions.rb @@ -27,7 +27,7 @@ module Paperclip return true if original_filename == other_filename return false if original_filename.nil? - formats = styles.values.map(&:format).compact + formats = styles.values.filter_map(&:format) return false if formats.empty? |