From 28b8b1a72affbab9ca81eb7629e9557adca372f1 Mon Sep 17 00:00:00 2001 From: Geremia Taglialatela Date: Tue, 23 May 2023 13:42:55 +0200 Subject: Improve cell type from value implementation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Use `Regexp.match?` instead of `=~` when match is not needed - Use `Regexp.match` instead of `string.match` for uniformity ``` match?: 7335121.2 i/s =~: 2329358.3 i/s - 3.15x (± 0.00) slower ``` --- lib/axlsx/workbook/worksheet/cell.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/axlsx/workbook/worksheet/cell.rb b/lib/axlsx/workbook/worksheet/cell.rb index 49afa485..09cf2064 100644 --- a/lib/axlsx/workbook/worksheet/cell.rb +++ b/lib/axlsx/workbook/worksheet/cell.rb @@ -504,9 +504,9 @@ module Axlsx :time elsif v.is_a?(TrueClass) || v.is_a?(FalseClass) :boolean - elsif v.respond_to?(:to_i) && v.to_s =~ Axlsx::NUMERIC_REGEX + elsif v.respond_to?(:to_i) && Axlsx::NUMERIC_REGEX.match?(v.to_s) :integer - elsif v.respond_to?(:to_f) && (v.to_s =~ Axlsx::SAFE_FLOAT_REGEX || ((matchdata = v.to_s.match(MAYBE_FLOAT_REGEX)) && matchdata[:exp].to_i.between?(Float::MIN_10_EXP, Float::MAX_10_EXP))) + elsif v.respond_to?(:to_f) && (Axlsx::SAFE_FLOAT_REGEX.match?(v.to_s) || ((matchdata = MAYBE_FLOAT_REGEX.match(v.to_s)) && matchdata[:exp].to_i.between?(Float::MIN_10_EXP, Float::MAX_10_EXP))) :float elsif Axlsx::ISO_8601_REGEX.match?(v.to_s) :iso_8601 -- cgit v1.2.3