summaryrefslogtreecommitdiffhomepage
path: root/lib/axlsx.rb
diff options
context:
space:
mode:
authorOleg Yakovenko <[email protected]>2021-04-26 23:14:09 +0300
committerGitHub <[email protected]>2021-04-26 22:14:09 +0200
commit6e74fb8db66695649ad0726d88dbecea2dad1722 (patch)
tree1452f2f616f11c8dde3c7c54e21a2e06a76b5501 /lib/axlsx.rb
parent946f287a37c7a5d2b4fe2ae8d109848e257241b1 (diff)
downloadcaxlsx-6e74fb8db66695649ad0726d88dbecea2dad1722.tar.gz
caxlsx-6e74fb8db66695649ad0726d88dbecea2dad1722.zip
Optimize Axlsx.cell_range (#94)
Optimize Axlsx.cell_range by using minmax_by instead of sorting the cells (the sorted cells are not used for anything else in this method).
Diffstat (limited to 'lib/axlsx.rb')
-rw-r--r--lib/axlsx.rb9
1 files changed, 5 insertions, 4 deletions
diff --git a/lib/axlsx.rb b/lib/axlsx.rb
index 5be3c526..0c8c3850 100644
--- a/lib/axlsx.rb
+++ b/lib/axlsx.rb
@@ -51,10 +51,11 @@ module Axlsx
# determines the cell range for the items provided
def self.cell_range(cells, absolute=true)
return "" unless cells.first.is_a? Cell
- cells = sort_cells(cells)
- reference = "#{cells.first.reference(absolute)}:#{cells.last.reference(absolute)}"
+
+ first_cell, last_cell = cells.minmax_by(&:pos)
+ reference = "#{first_cell.reference(absolute)}:#{last_cell.reference(absolute)}"
if absolute
- escaped_name = cells.first.row.worksheet.name.gsub '&apos;', "''"
+ escaped_name = first_cell.row.worksheet.name.gsub '&apos;', "''"
"'#{escaped_name}'!#{reference}"
else
reference
@@ -66,7 +67,7 @@ module Axlsx
# @param [Array] cells
# @return [Array]
def self.sort_cells(cells)
- cells.sort { |x, y| [x.index, x.row.row_index] <=> [y.index, y.row.row_index] }
+ cells.sort_by(&:pos)
end
#global reference html entity encoding