From 4e44eeaeb103f9ad43acc991918a4ae3cd1049cf Mon Sep 17 00:00:00 2001 From: kou Date: Fri, 26 Apr 2013 14:36:30 +0000 Subject: * lib/rexml/text.rb (REXML::Text.normalize): Fix a bug that all entity filters are ignored. [ruby-dev:47278] [Bug #8302] Patch by Ippei Obayashi. Thanks!!! * test/rexml/test_entity.rb (EntityTester#test_entity_filter): Add a test of the above change. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40484 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 8 ++++++++ lib/rexml/text.rb | 2 +- test/rexml/test_entity.rb | 20 ++++++++++++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index c2278137be..b7f9c6df2e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +Fri Apr 26 23:34:59 2013 Kouhei Sutou + + * lib/rexml/text.rb (REXML::Text.normalize): Fix a bug that all + entity filters are ignored. [ruby-dev:47278] [Bug #8302] + Patch by Ippei Obayashi. Thanks!!! + * test/rexml/test_entity.rb (EntityTester#test_entity_filter): Add + a test of the above change. + Fri Apr 26 22:53:55 2013 Kouhei Sutou * lib/rexml/element.rb (REXML::Attributes#to_a): Support diff --git a/lib/rexml/text.rb b/lib/rexml/text.rb index 6624e2a91e..23b17a7608 100644 --- a/lib/rexml/text.rb +++ b/lib/rexml/text.rb @@ -368,7 +368,7 @@ module REXML doctype.entities.each_value do |entity| copy = copy.gsub( entity.value, "&#{entity.name};" ) if entity.value and - not( entity_filter and entity_filter.include?(entity) ) + not( entity_filter and entity_filter.include?(entity.name) ) end else # Replace all ampersands that aren't part of an entity diff --git a/test/rexml/test_entity.rb b/test/rexml/test_entity.rb index 5900fac7a8..7b9f39495f 100644 --- a/test/rexml/test_entity.rb +++ b/test/rexml/test_entity.rb @@ -164,4 +164,24 @@ class EntityTester < Test::Unit::TestCase def test_single_pass_unnormalization # ticket 123 assert_equal '&&', REXML::Text::unnormalize('&amp;&') end + + def test_entity_filter + document = REXML::Document.new(<<-XML) + + +]> + +XML + respect_whitespace = false + parent = document.root + raw = false + entity_filter = ["copy"] + assert_equal("(c) &release-year;", + REXML::Text.new("(c) 2013", + respect_whitespace, + parent, + raw, + entity_filter).to_s) + end end -- cgit v1.2.3