From 7eb5bef01e600938d13ca889d07b331ff5c4a6ba Mon Sep 17 00:00:00 2001 From: Geremia Taglialatela Date: Wed, 21 Sep 2022 09:39:09 +0200 Subject: Move worksheet name forbidden chars to a constant --- lib/axlsx/util/constants.rb | 3 +++ lib/axlsx/workbook/worksheet/worksheet.rb | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/axlsx/util/constants.rb b/lib/axlsx/util/constants.rb index 3f30216f..f1c00e44 100644 --- a/lib/axlsx/util/constants.rb +++ b/lib/axlsx/util/constants.rb @@ -277,6 +277,9 @@ module Axlsx # worksheet maximum name length WORKSHEET_MAX_NAME_LENGTH = 31 + # worksheet name forbidden characters + WORKSHEET_NAME_FORBIDDEN_CHARS = '[]*/\?:'.freeze + # error messages RestrictionValidor ERR_RESTRICTION = "Invalid Data: %s. %s must be one of %s.".freeze diff --git a/lib/axlsx/workbook/worksheet/worksheet.rb b/lib/axlsx/workbook/worksheet/worksheet.rb index b51e2c00..cfb1d38e 100644 --- a/lib/axlsx/workbook/worksheet/worksheet.rb +++ b/lib/axlsx/workbook/worksheet/worksheet.rb @@ -686,7 +686,7 @@ module Axlsx raise ArgumentError, (ERR_SHEET_NAME_EMPTY) if name.empty? character_length = name.encode("utf-16")[1..-1].encode("utf-16").bytesize / 2 raise ArgumentError, (ERR_SHEET_NAME_TOO_LONG % name) if character_length > WORKSHEET_MAX_NAME_LENGTH - raise ArgumentError, (ERR_SHEET_NAME_CHARACTER_FORBIDDEN % name) if '[]*/\?:'.chars.any? { |char| name.include? char } + raise ArgumentError, (ERR_SHEET_NAME_CHARACTER_FORBIDDEN % name) if WORKSHEET_NAME_FORBIDDEN_CHARS.chars.any? { |char| name.include? char } name = Axlsx::coder.encode(name) sheet_names = @workbook.worksheets.reject { |s| s == self }.map { |s| s.name } raise ArgumentError, (ERR_DUPLICATE_SHEET_NAME % name) if sheet_names.include?(name) -- cgit v1.2.3