diff options
| author | Randy Morgan <[email protected]> | 2012-07-14 11:44:57 +0900 |
|---|---|---|
| committer | Randy Morgan <[email protected]> | 2012-07-14 11:44:57 +0900 |
| commit | 113f23af51ceb7fa0aa174f73f185769ac40603b (patch) | |
| tree | 6c57fb01e6f1642c57b8af5b1eefb0f95c62ebec | |
| parent | b1491f9b55b897be115abf86710289beb7be1378 (diff) | |
| download | caxlsx-113f23af51ceb7fa0aa174f73f185769ac40603b.tar.gz caxlsx-113f23af51ceb7fa0aa174f73f185769ac40603b.zip | |
fix for #112 - encode html entities
| -rw-r--r-- | axlsx.gemspec | 2 | ||||
| -rw-r--r-- | lib/axlsx.rb | 7 | ||||
| -rw-r--r-- | lib/axlsx/workbook/worksheet/worksheet.rb | 2 | ||||
| -rw-r--r-- | test/workbook/worksheet/tc_worksheet.rb | 5 |
4 files changed, 14 insertions, 2 deletions
diff --git a/axlsx.gemspec b/axlsx.gemspec index 569c7590..00ccf36c 100644 --- a/axlsx.gemspec +++ b/axlsx.gemspec @@ -20,7 +20,7 @@ Gem::Specification.new do |s| s.add_runtime_dependency 'nokogiri', '>= 1.4.1' s.add_runtime_dependency 'rubyzip', '>= 0.9.5' - + s.add_runtime_dependency "htmlentities", "~> 4.3.1" # REQUIRED by Travis-ci please do not alter these lines s.add_runtime_dependency 'rake', '0.8.7' if RUBY_VERSION == "1.9.2" s.add_runtime_dependency 'rake', '>= 0.8.7' unless RUBY_VERSION == "1.9.2" diff --git a/lib/axlsx.rb b/lib/axlsx.rb index 8f5b4540..b3ba0b52 100644 --- a/lib/axlsx.rb +++ b/lib/axlsx.rb @@ -1,4 +1,5 @@ # encoding: UTF-8 +require 'htmlentities' require 'axlsx/version.rb' require 'axlsx/util/simple_typed_list.rb' @@ -47,6 +48,12 @@ module Axlsx ref end + #global reference html entity encoding + # @return [HtmlEntities] + def self.coder + @@coder ||= ::HTMLEntities.new + end + # returns the x, y position of a cell def self.name_to_indices(name) raise ArgumentError, 'invalid cell name' unless name.size > 1 diff --git a/lib/axlsx/workbook/worksheet/worksheet.rb b/lib/axlsx/workbook/worksheet/worksheet.rb index 70762c96..9c87be15 100644 --- a/lib/axlsx/workbook/worksheet/worksheet.rb +++ b/lib/axlsx/workbook/worksheet/worksheet.rb @@ -322,6 +322,7 @@ module Axlsx def name=(v) DataTypeValidator.validate "Worksheet.name", String, v raise ArgumentError, (ERR_SHEET_NAME_TOO_LONG % v) if v.size > 31 + v = Axlsx::coder.encode(v) sheet_names = @workbook.worksheets.map { |s| s.name } raise ArgumentError, (ERR_DUPLICATE_SHEET_NAME % v) if sheet_names.include?(v) @name=v @@ -527,7 +528,6 @@ module Axlsx # This intentionally does not use nokogiri for performance reasons # @return [String] def to_xml_string - rels = relationships str = '<?xml version="1.0" encoding="UTF-8"?>' str << worksheet_node str << sheet_pr_node diff --git a/test/workbook/worksheet/tc_worksheet.rb b/test/workbook/worksheet/tc_worksheet.rb index c930d06b..37054529 100644 --- a/test/workbook/worksheet/tc_worksheet.rb +++ b/test/workbook/worksheet/tc_worksheet.rb @@ -14,6 +14,11 @@ class TestWorksheet < Test::Unit::TestCase assert_equal(ws.pn, "worksheets/sheet2.xml") end + def test_name_is_html_encoded + @ws.name = '<foo> & <bar>' + assert_equal(@ws.name, '<foo> & <bar%gt;') + end + def test_page_margins assert(@ws.page_margins.is_a? Axlsx::PageMargins) end |
