diff options
| author | mneumann <mneumann@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-11-15 23:26:20 +0000 |
|---|---|---|
| committer | mneumann <mneumann@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-11-15 23:26:20 +0000 |
| commit | 438b2d26a1f2beb95c754c24b170b5347d22e228 (patch) | |
| tree | 96f95f56b0a5b3cfa508a3b669b068c0705a644c /lib/xmlrpc | |
| parent | f232bdfbe0d14a7dc5a838601b1a3b4d880d52d5 (diff) | |
| download | ruby-438b2d26a1f2beb95c754c24b170b5347d22e228.tar.gz ruby-438b2d26a1f2beb95c754c24b170b5347d22e228.tar.xz ruby-438b2d26a1f2beb95c754c24b170b5347d22e228.zip | |
* imported and refactored original test cases
* added methods XMLRPC::XMLParser.each_installed_parser and
XMLRPC::XMLWriter.each_installed_writer to simply original test cases
* use Object#allocate instead of defining an empty #initialize
* module XMLRPC::Marshallable is now only used for tagging
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@7274 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/xmlrpc')
| -rw-r--r-- | lib/xmlrpc/create.rb | 17 | ||||
| -rw-r--r-- | lib/xmlrpc/parser.rb | 38 | ||||
| -rw-r--r-- | lib/xmlrpc/utils.rb | 7 |
3 files changed, 31 insertions, 31 deletions
diff --git a/lib/xmlrpc/create.rb b/lib/xmlrpc/create.rb index 072e72ab4..0bfa4ab55 100644 --- a/lib/xmlrpc/create.rb +++ b/lib/xmlrpc/create.rb @@ -86,6 +86,18 @@ module XMLRPC end # class XMLParser + Classes = [Simple, XMLParser] + + # yields an instance of each installed XML writer + def self.each_installed_writer + XMLRPC::XMLWriter::Classes.each do |klass| + begin + yield klass.new + rescue LoadError + end + end + end + end # module XMLWriter class Create @@ -248,7 +260,10 @@ module XMLRPC if Config::ENABLE_MARSHALLING and param.class.included_modules.include? XMLRPC::Marshallable # convert Ruby object into Hash ret = {"___class___" => param.class.name} - param.__get_instance_variables.each {|name, val| + param.instance_variables.each {|v| + name = v[1..-1] + val = param.instance_variable_get(v) + if val.nil? ret[name] = val if Config::ENABLE_NIL_CREATE else diff --git a/lib/xmlrpc/parser.rb b/lib/xmlrpc/parser.rb index da214ba1c..ed0e9a66f 100644 --- a/lib/xmlrpc/parser.rb +++ b/lib/xmlrpc/parser.rb @@ -112,31 +112,13 @@ module XMLRPC begin mod = Module klass.split("::").each {|const| mod = mod.const_get(const.strip)} - - Thread.critical = true - # let initialize take 0 parameters - mod.module_eval %{ - begin - alias __initialize initialize - rescue NameError - end - def initialize; end - } - - obj = mod.new - - # restore old initialize - mod.module_eval %{ - undef initialize - begin - alias initialize __initialize - rescue NameError - end - } - Thread.critical = false + obj = mod.allocate + hash.delete "___class___" - hash.each {|k,v| obj.__set_instance_variable(k, v) } + hash.each {|key, value| + obj.instance_variable_set("@#{ key }", value) if key =~ /^([\w_][\w_0-9]*)$/ + } obj rescue hash @@ -801,6 +783,16 @@ module XMLRPC NQXMLStreamParser, NQXMLTreeParser, REXMLStreamParser, XMLScanStreamParser] + # yields an instance of each installed parser + def self.each_installed_parser + XMLRPC::XMLParser::Classes.each do |klass| + begin + yield klass.new + rescue LoadError + end + end + end + end # module XMLParser diff --git a/lib/xmlrpc/utils.rb b/lib/xmlrpc/utils.rb index 14dd08b21..d542cfe4e 100644 --- a/lib/xmlrpc/utils.rb +++ b/lib/xmlrpc/utils.rb @@ -17,13 +17,6 @@ module XMLRPC # key/value pair "___class___" => ClassName # module Marshallable - def __get_instance_variables - instance_variables.collect {|var| [var[1..-1], eval(var)] } - end - - def __set_instance_variable(key, value) - eval("@#$1 = value") if key =~ /^([\w_][\w_0-9]*)$/ - end end |
