summaryrefslogtreecommitdiff
path: root/lib/soap/wsdlDriver.rb
diff options
context:
space:
mode:
authornahi <nahi@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-12-21 15:08:56 +0000
committernahi <nahi@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-12-21 15:08:56 +0000
commit3edeb852fe27ae9d11596697ea74f9b583f69e8a (patch)
treeec583bf4781cefd0a19735386b456046b8993d70 /lib/soap/wsdlDriver.rb
parent3a664c4b407c9273b90eaca48da83b8719eb5b1b (diff)
* lib/soap/*, test/soap/*, sample/soap/authheader/*: eval cleanup.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@7628 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/soap/wsdlDriver.rb')
-rw-r--r--lib/soap/wsdlDriver.rb45
1 files changed, 21 insertions, 24 deletions
diff --git a/lib/soap/wsdlDriver.rb b/lib/soap/wsdlDriver.rb
index aa822df4e4..83db5c133c 100644
--- a/lib/soap/wsdlDriver.rb
+++ b/lib/soap/wsdlDriver.rb
@@ -79,17 +79,13 @@ class WSDLDriver
class << self
def __attr_proxy(symbol, assignable = false)
name = symbol.to_s
- module_eval <<-EOD
- def #{name}
- @servant.#{name}
- end
- EOD
+ self.__send__(:define_method, name, proc {
+ @servant.__send__(name)
+ })
if assignable
- module_eval <<-EOD
- def #{name}=(rhs)
- @servant.#{name} = rhs
- end
- EOD
+ self.__send__(:define_method, name + '=', proc { |rhs|
+ @servant.__send__(name + '=', rhs)
+ })
end
end
end
@@ -348,7 +344,7 @@ class WSDLDriver
def create_method_obj(names, params)
o = Object.new
for idx in 0 ... params.length
- o.instance_eval("@#{ names[idx] } = params[idx]")
+ o.instance_variable_set('@' + names[idx], params[idx])
end
o
end
@@ -436,22 +432,23 @@ class WSDLDriver
end
def add_rpc_method_interface(name, parts_names)
- i = 0
- param_names = parts_names.collect { |orgname| i += 1; "arg#{ i }" }
- callparam = (param_names.collect { |pname| ", " + pname }).join
- @host.instance_eval <<-EOS
- def #{ name }(#{ param_names.join(", ") })
- @servant.rpc_call(#{ name.dump }#{ callparam })
- end
- EOS
+ sclass = class << @host; self; end
+ sclass.__send__(:define_method, name, proc { |*arg|
+ unless arg.size == parts_names.size
+ raise ArgumentError.new(
+ "wrong number of arguments (#{arg.size} for #{parts_names.size})")
+ end
+ @servant.rpc_call(name, *arg)
+ })
+ @host.method(name)
end
def add_document_method_interface(name)
- @host.instance_eval <<-EOS
- def #{ name }(h, b)
- @servant.document_send(#{ name.dump }, h, b)
- end
- EOS
+ sclass = class << @host; self; end
+ sclass.__send__(:define_method, name, proc { |h, b|
+ @servant.document_send(name, h, b)
+ })
+ @host.method(name)
end
def setup_options