From 497457b7a9221944a91d595465599e8451d678e4 Mon Sep 17 00:00:00 2001 From: Geremia Taglialatela Date: Fri, 19 May 2023 12:55:59 +0200 Subject: Fix hash transformation related offenses MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Style/HashConversion - Style/HashTransformKeys ``` Comparison (IPS): transform_keys: 2890030.0 i/s Hash[map]: 1777641.0 i/s - 1.63x (± 0.00) slower Comparison (Memory): transform_keys: 168 allocated Hash[map]: 248 allocated - 1.48x more ``` --- .rubocop_todo.yml | 13 ------------- lib/axlsx/workbook/worksheet/cell_serializer.rb | 2 +- lib/axlsx/workbook/worksheet/rich_text_run.rb | 2 +- 3 files changed, 2 insertions(+), 15 deletions(-) diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 19c4b3f5..20efee78 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -223,13 +223,6 @@ Style/GuardClause: - 'lib/axlsx/workbook/worksheet/table.rb' - 'lib/axlsx/workbook/worksheet/worksheet.rb' -# This cop supports safe autocorrection (--autocorrect). -# Configuration parameters: AllowSplatArgument. -Style/HashConversion: - Exclude: - - 'lib/axlsx/workbook/worksheet/cell_serializer.rb' - - 'lib/axlsx/workbook/worksheet/rich_text_run.rb' - # This cop supports unsafe autocorrection (--autocorrect-all). # Configuration parameters: AllowedReceivers. # AllowedReceivers: Thread.current @@ -244,12 +237,6 @@ Style/HashEachMethods: Style/HashSyntax: Enabled: false -# This cop supports unsafe autocorrection (--autocorrect-all). -Style/HashTransformKeys: - Exclude: - - 'lib/axlsx/workbook/worksheet/cell_serializer.rb' - - 'lib/axlsx/workbook/worksheet/rich_text_run.rb' - # This cop supports safe autocorrection (--autocorrect). # Configuration parameters: AllowIfModifier. Style/IfInsideElse: diff --git a/lib/axlsx/workbook/worksheet/cell_serializer.rb b/lib/axlsx/workbook/worksheet/cell_serializer.rb index f45d3c73..dceca7eb 100644 --- a/lib/axlsx/workbook/worksheet/cell_serializer.rb +++ b/lib/axlsx/workbook/worksheet/cell_serializer.rb @@ -26,7 +26,7 @@ module Axlsx def run_xml_string(cell, str = +'') if cell.is_text_run? valid = RichTextRun::INLINE_STYLES - [:value, :type] - data = Hash[Axlsx.instance_values_for(cell).map { |k, v| [k.to_sym, v] }] + data = Axlsx.instance_values_for(cell).transform_keys(&:to_sym) data = data.select { |key, value| valid.include?(key) && !value.nil? } RichText.new(cell.value.to_s, data).to_xml_string(str) elsif cell.contains_rich_text? diff --git a/lib/axlsx/workbook/worksheet/rich_text_run.rb b/lib/axlsx/workbook/worksheet/rich_text_run.rb index 883d01d3..ffd2f941 100644 --- a/lib/axlsx/workbook/worksheet/rich_text_run.rb +++ b/lib/axlsx/workbook/worksheet/rich_text_run.rb @@ -207,7 +207,7 @@ module Axlsx # @return [String] def to_xml_string(str = +'') valid = RichTextRun::INLINE_STYLES - data = Hash[Axlsx.instance_values_for(self).map { |k, v| [k.to_sym, v] }] + data = Axlsx.instance_values_for(self).transform_keys(&:to_sym) data = data.select { |key, value| valid.include?(key) && !value.nil? } str << '' -- cgit v1.2.3