summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorEdward Anderson <[email protected]>2013-01-02 19:13:03 -0500
committerEdward Anderson <[email protected]>2013-01-02 19:21:50 -0500
commit2feb1ba5ae0d64012cff128c87631a32fc18de1a (patch)
tree0568c07421704a3452a950748fb0ffd19cc62486
parentcac5b8a3240bee9b669fe63bc0585d9294cd5b80 (diff)
downloadcaxlsx-2feb1ba5ae0d64012cff128c87631a32fc18de1a.tar.gz
caxlsx-2feb1ba5ae0d64012cff128c87631a32fc18de1a.zip
Worksheet name uniqueness doesn't apply to itself
This constraint would prevent you from creating a new worksheet with the name that it would have gotten by default.
-rw-r--r--lib/axlsx/workbook/worksheet/worksheet.rb4
-rw-r--r--test/workbook/worksheet/tc_worksheet.rb5
2 files changed, 7 insertions, 2 deletions
diff --git a/lib/axlsx/workbook/worksheet/worksheet.rb b/lib/axlsx/workbook/worksheet/worksheet.rb
index b02af18e..5f650263 100644
--- a/lib/axlsx/workbook/worksheet/worksheet.rb
+++ b/lib/axlsx/workbook/worksheet/worksheet.rb
@@ -637,14 +637,14 @@ module Axlsx
end
sheet_view.show_outline_symbols = true
end
-
end
+
def validate_sheet_name(name)
DataTypeValidator.validate "Worksheet.name", String, name
raise ArgumentError, (ERR_SHEET_NAME_TOO_LONG % name) if name.size > 31
raise ArgumentError, (ERR_SHEET_NAME_CHARACTER_FORBIDDEN % name) if '[]*/\?:'.chars.any? { |char| name.include? char }
name = Axlsx::coder.encode(name)
- sheet_names = @workbook.worksheets.map { |s| s.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)
end
diff --git a/test/workbook/worksheet/tc_worksheet.rb b/test/workbook/worksheet/tc_worksheet.rb
index b576047d..ed8c7cab 100644
--- a/test/workbook/worksheet/tc_worksheet.rb
+++ b/test/workbook/worksheet/tc_worksheet.rb
@@ -405,6 +405,11 @@ class TestWorksheet < Test::Unit::TestCase
assert_raise(ArgumentError, "worksheet name must be unique") { n = @ws.name; @ws.workbook.add_worksheet(:name=> n) }
end
+ def test_name_unique_only_checks_other_worksheet_names
+ assert_nothing_raised { @ws.name = @ws.name }
+ assert_nothing_raised { Axlsx::Package.new.workbook.add_worksheet :name => 'Sheet1' }
+ end
+
def test_name_size
assert_raise(ArgumentError, "name too long!") { @ws.name = Array.new(32, "A").join() }
assert_nothing_raised { @ws.name = Array.new(31, "A").join() }