diff options
| author | Oleg Yakovenko <[email protected]> | 2021-04-26 23:14:09 +0300 |
|---|---|---|
| committer | GitHub <[email protected]> | 2021-04-26 22:14:09 +0200 |
| commit | 6e74fb8db66695649ad0726d88dbecea2dad1722 (patch) | |
| tree | 1452f2f616f11c8dde3c7c54e21a2e06a76b5501 /lib/axlsx.rb | |
| parent | 946f287a37c7a5d2b4fe2ae8d109848e257241b1 (diff) | |
| download | caxlsx-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.rb | 9 |
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 ''', "''" + escaped_name = first_cell.row.worksheet.name.gsub ''', "''" "'#{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 |
