diff options
author | kou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-04-26 14:36:30 +0000 |
---|---|---|
committer | kou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-04-26 14:36:30 +0000 |
commit | 4e44eeaeb103f9ad43acc991918a4ae3cd1049cf (patch) | |
tree | d3a6f08ef29bd0e84b8ca3f47ea762295f4fb076 | |
parent | 562648e48ca42e6a263d52677638683add7327a6 (diff) | |
download | ruby-4e44eeaeb103f9ad43acc991918a4ae3cd1049cf.tar.gz |
* 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
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | lib/rexml/text.rb | 2 | ||||
-rw-r--r-- | test/rexml/test_entity.rb | 20 |
3 files changed, 29 insertions, 1 deletions
@@ -1,3 +1,11 @@ +Fri Apr 26 23:34:59 2013 Kouhei Sutou <kou@cozmixng.org> + + * 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 <kou@cozmixng.org> * 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) +<!DOCTYPE root [ +<!ENTITY copy "(c)"> +<!ENTITY release-year "2013"> +]> +<root/> +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 |