Skip to content

Commit 9462de1

Browse files
Limit object allocations (#115)
* add missing frozen_string_litteral * limit string allocations in Creek::Sheet#rows_generator
1 parent 2172e00 commit 9462de1

File tree

9 files changed

+28
-4
lines changed

9 files changed

+28
-4
lines changed

lib/creek/book.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
# frozen_string_literal: true
2+
13
require 'zip/filesystem'
24
require 'nokogiri'
35
require 'date'

lib/creek/drawing.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
# frozen_string_literal: true
2+
13
require 'pathname'
24

35
module Creek

lib/creek/shared_strings.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
# frozen_string_literal: true
2+
13
require 'zip/filesystem'
24
require 'nokogiri'
35

lib/creek/sheet.rb

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,10 @@ def rows_generator include_meta_data=false, use_simple_rows_format=false
9999
cell_style_idx = nil
100100
@book.files.file.open(path) do |xml|
101101
prefix = ''
102+
name_row = "row"
103+
name_c = "c"
104+
name_v = "v"
105+
name_t = "t"
102106
Nokogiri::XML::Reader.from_io(xml).each do |node|
103107
if prefix.empty? && node.namespaces.any?
104108
namespace = node.namespaces.detect{|_key, uri| uri == SPREADSHEETML_URI }
@@ -107,13 +111,17 @@ def rows_generator include_meta_data=false, use_simple_rows_format=false
107111
else
108112
''
109113
end
114+
name_row = "#{prefix}row"
115+
name_c = "#{prefix}c"
116+
name_v = "#{prefix}v"
117+
name_t = "#{prefix}t"
110118
end
111-
if node.name == "#{prefix}row" && node.node_type == opener
119+
if node.name == name_row && node.node_type == opener
112120
row = node.attributes
113121
row['cells'] = {}
114122
cells = {}
115123
y << (include_meta_data ? row : cells) if node.self_closing?
116-
elsif node.name == "#{prefix}row" && node.node_type == closer
124+
elsif node.name == name_row && node.node_type == closer
117125
processed_cells = fill_in_empty_cells(cells, row['r'], cell, use_simple_rows_format)
118126
@headers = processed_cells if with_headers && row['r'] == HEADERS_ROW_NUMBER
119127

@@ -127,11 +135,11 @@ def rows_generator include_meta_data=false, use_simple_rows_format=false
127135

128136
row['cells'] = processed_cells
129137
y << (include_meta_data ? row : processed_cells)
130-
elsif node.name == "#{prefix}c" && node.node_type == opener
138+
elsif node.name == name_c && node.node_type == opener
131139
cell_type = node.attributes['t']
132140
cell_style_idx = node.attributes['s']
133141
cell = node.attributes['r']
134-
elsif ["#{prefix}v", "#{prefix}t"].include?(node.name) && node.node_type == opener
142+
elsif (node.name == name_v || node.name == name_t) && node.node_type == opener
135143
unless cell.nil?
136144
node.read
137145
cells[cell] = convert(node.value, cell_type, cell_style_idx)

lib/creek/styles.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
# frozen_string_literal: true
2+
13
module Creek
24
class Styles
35
attr_accessor :book

lib/creek/styles/converter.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
# frozen_string_literal: true
2+
13
require 'set'
24

35
module Creek

lib/creek/styles/style_types.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
# frozen_string_literal: true
2+
13
# https://github.com/hmcgowan/roo/blob/master/lib/roo/excelx.rb
24
# https://github.com/woahdae/simple_xlsx_reader/blob/master/lib/simple_xlsx_reader.rb#L231
35
module Creek

lib/creek/utils.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
# frozen_string_literal: true
2+
13
module Creek
24
module Utils
35
def expand_to_rels_path(filepath)

lib/creek/version.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
# frozen_string_literal: true
2+
13
module Creek
24
VERSION = "2.6.2"
35
end

0 commit comments

Comments
 (0)