summaryrefslogtreecommitdiffhomepage
path: root/lib/axlsx/workbook/worksheet/cell.rb
diff options
context:
space:
mode:
authorGeremia Taglialatela <[email protected]>2023-05-16 15:54:08 +0200
committerGeremia Taglialatela <[email protected]>2023-05-16 15:54:08 +0200
commit6eb2fc56d3ab658edc1477d138b1cf0b3021ab29 (patch)
tree57874b36a7a87dd9610df7209cc52a03a4114961 /lib/axlsx/workbook/worksheet/cell.rb
parent3b9ac17d8e4dc8b315ac307ffad6f2aa0cb96741 (diff)
downloadcaxlsx-6eb2fc56d3ab658edc1477d138b1cf0b3021ab29.tar.gz
caxlsx-6eb2fc56d3ab658edc1477d138b1cf0b3021ab29.zip
Replace `sub` with `delete_prefix`/`delete_suffix`
Ruby 2.5 introduced `delete_prefix` and `delete_suffix`. Those methods are helpful when serializing formula and array formula values, that are supposed to start and end with given prefixes Also moves formula prefix to constants so they can be used by both `Cell` and `CellSerializer` classes Formula: ``` Ruby version: 3.2.2 Comparison: delete_prefix: 8759353.5 i/s sub: 2607022.4 i/s - 3.36x (± 0.00) slower Comparison: delete_prefix: 40 allocated sub: 160 allocated - 4.00x more ``` Array Formula: ``` Ruby version: 3.2.2 Comparison: delete_prefixes: 4798837.8 i/s sub_sub: 937072.1 i/s - 5.12x (± 0.00) slower Comparison: delete_prefixes: 120 allocated sub_sub: 488 allocated - 4.07x more ```
Diffstat (limited to 'lib/axlsx/workbook/worksheet/cell.rb')
-rw-r--r--lib/axlsx/workbook/worksheet/cell.rb14
1 files changed, 2 insertions, 12 deletions
diff --git a/lib/axlsx/workbook/worksheet/cell.rb b/lib/axlsx/workbook/worksheet/cell.rb
index 929a7c28..f47781f0 100644
--- a/lib/axlsx/workbook/worksheet/cell.rb
+++ b/lib/axlsx/workbook/worksheet/cell.rb
@@ -72,16 +72,6 @@ module Axlsx
CELL_TYPES = [:date, :time, :float, :integer, :richtext,
:string, :boolean, :iso_8601, :text].freeze
- # Leading characters that indicate a formula.
- # See: https://owasp.org/www-community/attacks/CSV_Injection
- FORMULA_PREFIXES = ['='].freeze
-
- # Leading characters that indicate an array formula.
- ARRAY_FORMULA_PREFIXES = ['{='].freeze
-
- # Trailing character that indicates an array formula.
- ARRAY_FORMULA_SUFFIX = '}'
-
# The index of the cellXfs item to be applied to this cell.
# @return [Integer]
# @see Axlsx::Styles
@@ -395,14 +385,14 @@ module Axlsx
def is_formula?
return false if escape_formulas
- type == :string && @value.to_s.start_with?(*FORMULA_PREFIXES)
+ type == :string && @value.to_s.start_with?(FORMULA_PREFIX)
end
def is_array_formula?
return false if escape_formulas
type == :string &&
- @value.to_s.start_with?(*ARRAY_FORMULA_PREFIXES) &&
+ @value.to_s.start_with?(ARRAY_FORMULA_PREFIX) &&
@value.to_s.end_with?(ARRAY_FORMULA_SUFFIX)
end