Module: RForce
- Included in:
- Binding
- Defined in:
- lib/rforce.rb,
lib/rforce/binding.rb,
lib/rforce/version.rb,
lib/rforce/method_keys.rb,
lib/rforce/soap_pullable.rb,
lib/rforce/soap_response.rb,
lib/rforce/soap_response_expat.rb,
lib/rforce/soap_response_rexml.rb,
lib/rforce/soap_response_hpricot.rb,
lib/rforce/soap_response_nokogiri.rb
Defined Under Namespace
Modules: MethodKeys, SoapPullable Classes: Binding, MethodHash, SoapResponseExpat, SoapResponseHpricot, SoapResponseNokogiri, SoapResponseRexml
Constant Summary collapse
- VERSION =
'0.4.1'
- SoapResponse =
always use Nokogiri because the other ones seem to be broken
RForce::SoapResponseNokogiri
Instance Method Summary collapse
-
#expand(builder, args, xmlns = nil) ⇒ Object
Expand Ruby data structures into XML.
Instance Method Details
#expand(builder, args, xmlns = nil) ⇒ Object
Expand Ruby data structures into XML.
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/rforce.rb', line 55 def (builder, args, xmlns = nil) # Nest arrays: [:a, 1, :b, 2] => [[:a, 1], [:b, 2]] if (args.class == Array) args.each_index{|i| args[i, 2] = [args[i, 2]]} end args.each do |key, value| attributes = xmlns ? {:xmlns => xmlns} : {} # If the XML tag requires attributes, # the tag name will contain a space # followed by a string representation # of a hash of attributes. # # e.g. 'sObject {"xsi:type" => "Opportunity"}' # becomes <sObject xsi:type="Opportunity>...</sObject> if key.is_a? String key, modifier = key.split(' ', 2) attributes.merge!(eval(modifier)) if modifier end # Create an XML element and fill it with this # value's sub-items. case value when Hash, Array then builder.tag!(key, attributes) do builder, value; end when String then builder.tag!(key, attributes) { builder.text! value } end end end |