Helper class used to convert types.
Decodes the given str
using XMLRPC::Base64.decode
# File xmlrpc/parser.rb, line 100 def self.base64(str) XMLRPC::Base64.decode(str) end
Converts a String to true
or false
Raises an exception if str
is not 0
or
1
# File xmlrpc/parser.rb, line 48 def self.boolean(str) case str when "0" then false when "1" then true else raise "RPC-value of type boolean is wrong" end end
Converts a the given str
to a dateTime.iso8601
formatted date.
Raises an exception if the String isn’t in dateTime.iso8601
format.
See also, XMLRPC::DateTime
# File xmlrpc/parser.rb, line 69 def self.dateTime(str) case str when /^(-?\d\d\d\d)-?(\d\d)-?(\d\d)T(\d\d):(\d\d):(\d\d)(?:Z|([+-])(\d\d):?(\d\d))?$/ a = [$1, $2, $3, $4, $5, $6].collect{|i| i.to_i} if $7 ofs = $8.to_i*3600 + $9.to_i*60 ofs = -ofs if $7=='+' utc = Time.utc(*a) + ofs a = [ utc.year, utc.month, utc.day, utc.hour, utc.min, utc.sec ] end XMLRPC::DateTime.new(*a) when /^(-?\d\d)-?(\d\d)-?(\d\d)T(\d\d):(\d\d):(\d\d)(Z|([+-]\d\d):(\d\d))?$/ a = [$1, $2, $3, $4, $5, $6].collect{|i| i.to_i} if a[0] < 70 a[0] += 2000 else a[0] += 1900 end if $7 ofs = $8.to_i*3600 + $9.to_i*60 ofs = -ofs if $7=='+' utc = Time.utc(*a) + ofs a = [ utc.year, utc.month, utc.day, utc.hour, utc.min, utc.sec ] end XMLRPC::DateTime.new(*a) else raise "wrong dateTime.iso8601 format " + str end end
Converts a String to a Float
See also String.to_f
# File xmlrpc/parser.rb, line 60 def self.double(str) str.to_f end
Converts the given hash
to an XMLRPC::FaultException object by passing the
faultCode
and faultString
attributes of the Hash
to XMLRPC::FaultException.new
Raises an Exception if the given hash
doesn’t meet the
requirements. Those requirements being:
2 keys
'faultCode'
key is an Integer
'faultString'
key is a String
# File xmlrpc/parser.rb, line 139 def self.fault(hash) if hash.kind_of? Hash and hash.size == 2 and hash.has_key? "faultCode" and hash.has_key? "faultString" and hash["faultCode"].kind_of? Integer and hash["faultString"].kind_of? String XMLRPC::FaultException.new(hash["faultCode"], hash["faultString"]) else raise "wrong fault-structure: #{hash.inspect}" end end
Converts a String to an Integer
See also String.to_i
# File xmlrpc/parser.rb, line 41 def self.int(str) str.to_i end
Converts the given hash
to a marshalled object.
Returns the given hash
if an exception occurs.
# File xmlrpc/parser.rb, line 107 def self.struct(hash) # convert to marshalled object klass = hash["___class___"] if klass.nil? or Config::ENABLE_MARSHALLING == false hash else begin mod = Module klass.split("::").each {|const| mod = mod.const_get(const.strip)} obj = mod.allocate hash.delete "___class___" hash.each {|key, value| obj.instance_variable_set("@#{ key }", value) if key =~ /^([a-zA-Z_]\w*)$/ } obj rescue hash end end end
Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.
If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.
If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.
If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.