From b8c9921c02f843444a05796dfbf6ec9ff4fe50b6 Mon Sep 17 00:00:00 2001 From: matz Date: Thu, 18 Oct 2007 07:41:21 +0000 Subject: * lib/rexml/source.rb (REXML::SourceFactory::SourceFactory): more duck typed. better performance on JRuby. http://headius.blogspot.com/2007/10/another-performance-discovery-rexml.html git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13737 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 6 ++++++ lib/rexml/source.rb | 13 +++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 191cbb1281..aa7cc8ddb8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Thu Oct 18 16:39:34 2007 Yukihiro Matsumoto + + * lib/rexml/source.rb (REXML::SourceFactory::SourceFactory): more + duck typed. better performance on JRuby. + http://headius.blogspot.com/2007/10/another-performance-discovery-rexml.html + Thu Oct 18 09:33:25 2007 Yukihiro Matsumoto * range.c (range_first): takes first n element if argument is diff --git a/lib/rexml/source.rb b/lib/rexml/source.rb index bc99c0ed6a..659bcdc195 100644 --- a/lib/rexml/source.rb +++ b/lib/rexml/source.rb @@ -7,13 +7,14 @@ module REXML # @param arg Either a String, or an IO # @return a Source, or nil if a bad argument was given def SourceFactory::create_from(arg) - if arg.kind_of? String - Source.new(arg) - elsif arg.respond_to? :read and - arg.respond_to? :readline and - arg.respond_to? :nil? and - arg.respond_to? :eof? + if arg.respond_to? :read and + arg.respond_to? :readline and + arg.respond_to? :nil? and + arg.respond_to? :eof? IOSource.new(arg) + elsif arg.respond_to? :to_str + require 'stringio' + IOSource.new(StringIO.new(arg)) elsif arg.kind_of? Source arg else -- cgit v1.2.3