lib/gitlab/paginated_response.rb in gitlab-4.15.0 vs lib/gitlab/paginated_response.rb in gitlab-4.16.0
- old
+ new
@@ -40,40 +40,23 @@
current = current.next_page
yield current
end
end
- def auto_paginate
- response = block_given? ? nil : []
- each_page do |page|
- if block_given?
- page.each do |item|
- yield item
- end
- else
- response += page
- end
- end
- response
+ def lazy_paginate
+ to_enum(:each_page).lazy.flat_map(&:to_ary)
end
- def paginate_with_limit(limit)
- response = block_given? ? nil : []
- count = 0
- each_page do |page|
- if block_given?
- page.each do |item|
- yield item
- count += 1
- break if count >= limit
- end
- else
- response += page[0, limit - count]
- count = response.length
- end
- break if count >= limit
- end
- response
+ def auto_paginate(&block)
+ return lazy_paginate.to_a unless block_given?
+
+ lazy_paginate.each(&block)
+ end
+
+ def paginate_with_limit(limit, &block)
+ return lazy_paginate.take(limit).to_a unless block_given?
+
+ lazy_paginate.take(limit).each(&block)
end
def last_page?
!(@links.nil? || @links.last.nil?)
end