summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-04-26 14:36:30 +0000
committerkou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-04-26 14:36:30 +0000
commit4e44eeaeb103f9ad43acc991918a4ae3cd1049cf (patch)
treed3a6f08ef29bd0e84b8ca3f47ea762295f4fb076
parent562648e48ca42e6a263d52677638683add7327a6 (diff)
* 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--ChangeLog8
-rw-r--r--lib/rexml/text.rb2
-rw-r--r--test/rexml/test_entity.rb20
3 files changed, 29 insertions, 1 deletions
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 <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 '&amp;&', REXML::Text::unnormalize('&#38;amp;&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