summaryrefslogtreecommitdiff
path: root/lib/rexml/encoding.rb
diff options
context:
space:
mode:
authorser <ser@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-12-09 02:41:33 +0000
committerser <ser@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-12-09 02:41:33 +0000
commite6636fe890ab7cf8f8f1b86ca54a3e10f98d43e6 (patch)
tree97264c7f6a6c1eb2af6909f8432a6631b4d2ccbb /lib/rexml/encoding.rb
parent31963249b96e11ea1df66be8a91f016af4364d14 (diff)
* Added the lower-case Shift-JIS files to the manifest. The upper-case ones
should be deprecated, but I need a Shift-JIS encoded XML file to test against, first. * Added support for maintaining external entity occurances in DTDs * Deprecated the use of Document::DECLARATION. The new default declaration can be gotten with XMLDecl::default() * Refactored the encoding support code. It should be more robust now, and fixes a few bugs. * The XPath string() function now deals with Element nodes properly. * Serialization with Output objects now works as would be expected. * Various code cleanups, some reducing the number of warnings that Ruby 1.8.x produces with REXML. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5144 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rexml/encoding.rb')
-rw-r--r--lib/rexml/encoding.rb12
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/rexml/encoding.rb b/lib/rexml/encoding.rb
index ad8ba7e342..92ae1e8c21 100644
--- a/lib/rexml/encoding.rb
+++ b/lib/rexml/encoding.rb
@@ -18,20 +18,26 @@ module REXML
if enc and enc != UTF_8
@encoding = enc.upcase
begin
- load 'rexml/encodings/ICONV.rb'
+ load 'rexml/encodings/ICONV.rb'
+ instance_eval @@__REXML_encoding_methods
Iconv::iconv( UTF_8, @encoding, "" )
rescue LoadError, Exception => err
+ raise "Bad encoding name #@encoding" unless @encoding =~ /^[\w-]+$/
+ @encoding.untaint
enc_file = File.join( "rexml", "encodings", "#@encoding.rb" )
begin
- load enc_file
+ load enc_file
+ instance_eval @@__REXML_encoding_methods
rescue LoadError
+ puts $!.message
raise Exception.new( "No decoder found for encoding #@encoding. Please install iconv." )
end
end
else
enc = UTF_8
@encoding = enc.upcase
- load 'rexml/encodings/UTF-8.rb'
+ load 'rexml/encodings/UTF-8.rb'
+ instance_eval @@__REXML_encoding_methods
end
ensure
$VERBOSE = old_verbosity