Skip to content

Commit

Permalink
Use symbol conversion instead of to_sym
Browse files Browse the repository at this point in the history
Compared to String#to_sym, symbol conversion is:

- 6 character shorter
- Highlighted as a symbol (at least by TextMate and VS Code)
- 7% faster

This offense is not being detected by Rubocop because caxlsx is using
an old version which works on 2.6 and the current version does not
detect this problem because of rubocop/rubocop#12373
  • Loading branch information
tagliala committed Nov 17, 2023
1 parent 333331d commit 5e7a3b8
Show file tree
Hide file tree
Showing 6 changed files with 22 additions and 22 deletions.
8 changes: 4 additions & 4 deletions lib/axlsx/stylesheet/styles.rb
Original file line number Diff line number Diff line change
Expand Up @@ -364,7 +364,7 @@ def parse_fill_options(options = {})
# { :border => { :style => :thick, :color => "FFFF0000", :edges => [:top, :bottom] }
# @return [Border|Integer]
def parse_border_options(options = {})
if options[:border].nil? && Border::EDGES.all? { |x| options["border_#{x}".to_sym].nil? }
if options[:border].nil? && Border::EDGES.all? { |x| options[:"border_#{x}"].nil? }
return nil
end

Expand Down Expand Up @@ -409,7 +409,7 @@ def parse_border_options(options = {})
end

Border::EDGES.each do |edge|
val = options["border_#{edge}".to_sym]
val = options[:"border_#{edge}"]

if val
borders_array << val.merge(edges: [edge])
Expand All @@ -430,8 +430,8 @@ def parse_border_options(options = {})
end
end

if options["border_#{edge}".to_sym]
edge_b_opts = edge_b_opts.merge(options["border_#{edge}".to_sym])
if options[:"border_#{edge}"]
edge_b_opts = edge_b_opts.merge(options[:"border_#{edge}"])
skip_edge = false
end

Expand Down
2 changes: 1 addition & 1 deletion test/stylesheet/tc_styles.rb
Original file line number Diff line number Diff line change
Expand Up @@ -323,7 +323,7 @@ def test_border_top_without_border_regression
}

borders.each do |edge, b_opts|
@styles.add_style("border_#{edge}".to_sym => b_opts)
@styles.add_style(:"border_#{edge}" => b_opts)

current_border = @styles.borders.last

Expand Down
2 changes: 1 addition & 1 deletion test/tc_axlsx.rb
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ def test_sanitize_unfrozen_no_sanitize
class InstanceValuesSubject
def initialize(args = {})
args.each do |key, v|
instance_variable_set("@#{key}".to_sym, v)
instance_variable_set(:"@#{key}", v)
end
end
end
Expand Down
12 changes: 6 additions & 6 deletions test/workbook/worksheet/tc_data_validation.rb
Original file line number Diff line number Diff line change
Expand Up @@ -47,22 +47,22 @@ def test_initialize

def test_boolean_attribute_validation
@boolean_options.each do |key, value|
assert_raise(ArgumentError, "#{key} must be boolean") { @dv.send("#{key}=".to_sym, 'A') }
assert_nothing_raised { @dv.send("#{key}=".to_sym, value) }
assert_raise(ArgumentError, "#{key} must be boolean") { @dv.send(:"#{key}=", 'A') }
assert_nothing_raised { @dv.send(:"#{key}=", value) }
end
end

def test_string_attribute_validation
@string_options.each do |key, value|
assert_raise(ArgumentError, "#{key} must be string") { @dv.send("#{key}=".to_sym, :symbol) }
assert_nothing_raised { @dv.send("#{key}=".to_sym, value) }
assert_raise(ArgumentError, "#{key} must be string") { @dv.send(:"#{key}=", :symbol) }
assert_nothing_raised { @dv.send(:"#{key}=", value) }
end
end

def test_symbol_attribute_validation
@symbol_options.each do |key, value|
assert_raise(ArgumentError, "#{key} must be symbol") { @dv.send("#{key}=".to_sym, "foo") }
assert_nothing_raised { @dv.send("#{key}=".to_sym, value) }
assert_raise(ArgumentError, "#{key} must be symbol") { @dv.send(:"#{key}=", "foo") }
assert_nothing_raised { @dv.send(:"#{key}=", value) }
end
end

Expand Down
4 changes: 2 additions & 2 deletions test/workbook/worksheet/tc_sheet_protection.rb
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@ def test_initialize

def test_boolean_attribute_validation
@boolean_options.each do |key, value|
assert_raise(ArgumentError, "#{key} must be boolean") { @sp.send("#{key}=".to_sym, 'A') }
assert_nothing_raised { @sp.send("#{key}=".to_sym, value) }
assert_raise(ArgumentError, "#{key} must be boolean") { @sp.send(:"#{key}=", 'A') }
assert_nothing_raised { @sp.send(:"#{key}=", value) }
end
end

Expand Down
16 changes: 8 additions & 8 deletions test/workbook/worksheet/tc_sheet_view.rb
Original file line number Diff line number Diff line change
Expand Up @@ -47,29 +47,29 @@ def test_initialize

def test_boolean_attribute_validation
@boolean_options.each do |key, value|
assert_raise(ArgumentError, "#{key} must be boolean") { @sv.send("#{key}=".to_sym, 'A') }
assert_nothing_raised { @sv.send("#{key}=".to_sym, value) }
assert_raise(ArgumentError, "#{key} must be boolean") { @sv.send(:"#{key}=", 'A') }
assert_nothing_raised { @sv.send(:"#{key}=", value) }
end
end

def test_string_attribute_validation
@string_options.each do |key, value|
assert_raise(ArgumentError, "#{key} must be string") { @sv.send("#{key}=".to_sym, :symbol) }
assert_nothing_raised { @sv.send("#{key}=".to_sym, value) }
assert_raise(ArgumentError, "#{key} must be string") { @sv.send(:"#{key}=", :symbol) }
assert_nothing_raised { @sv.send(:"#{key}=", value) }
end
end

def test_symbol_attribute_validation
@symbol_options.each do |key, value|
assert_raise(ArgumentError, "#{key} must be symbol") { @sv.send("#{key}=".to_sym, "foo") }
assert_nothing_raised { @sv.send("#{key}=".to_sym, value) }
assert_raise(ArgumentError, "#{key} must be symbol") { @sv.send(:"#{key}=", "foo") }
assert_nothing_raised { @sv.send(:"#{key}=", value) }
end
end

def test_integer_attribute_validation
@integer_options.each do |key, value|
assert_raise(ArgumentError, "#{key} must be integer") { @sv.send("#{key}=".to_sym, "foo") }
assert_nothing_raised { @sv.send("#{key}=".to_sym, value) }
assert_raise(ArgumentError, "#{key} must be integer") { @sv.send(:"#{key}=", "foo") }
assert_nothing_raised { @sv.send(:"#{key}=", value) }
end
end

Expand Down

0 comments on commit 5e7a3b8

Please sign in to comment.