Class: LolSoap::Builder

Inherits:
Object
  • Object
show all
Defined in:
lib/lolsoap/builder.rb

Overview

Used to build XML, with namespaces automatically added.

Examples:

General

builder = Builder.new(node, type)
builder.someTag do |t|
  t.foo 'bar'
end
# => <ns1:someTag><ns1:foo>bar</ns1:foo></ns1:someTag>

Explicitly specifying a namespace prefix

builder = Builder.new(node, type)
builder['ns2'].someTag
# => <ns2:someTag/>

Constant Summary collapse

RESERVED_METHODS =
%w(object_id respond_to_missing? inspect === to_s)

Instance Method Summary collapse

Constructor Details

#initialize(node, type = WSDL::NullType.new) ⇒ Builder

Returns a new instance of Builder.



47
48
49
50
# File 'lib/lolsoap/builder.rb', line 47

def initialize(node, type = WSDL::NullType.new)
  @node = node
  @type = type
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missingObject (private)

Add a tag manually, rather than through method_missing. This is so you can still add tags for the very small number of tags that are also existing methods.



91
92
93
# File 'lib/lolsoap/builder.rb', line 91

def __tag__(name, *args, &block)
  __prefixed_tag__(@type.prefix, @type.sub_type(name.to_s), name, *args, &block)
end

Instance Method Details

#[](prefix) ⇒ Object

Specify a namespace prefix explicitly



81
82
83
# File 'lib/lolsoap/builder.rb', line 81

def [](prefix)
  Prefix.new(self, prefix)
end

#__node__Object

Node accessor. Named to prevent method_missing conflict.



71
72
73
# File 'lib/lolsoap/builder.rb', line 71

def __node__
  @node
end

#__tag__(name, *args, &block) ⇒ Object Also known as: method_missing

Add a tag manually, rather than through method_missing. This is so you can still add tags for the very small number of tags that are also existing methods.



54
55
56
# File 'lib/lolsoap/builder.rb', line 54

def __tag__(name, *args, &block)
  __prefixed_tag__(@type.prefix, @type.sub_type(name.to_s), name, *args, &block)
end

#__type__Object

Type accessor. Named to prevent method_missing conflict.



76
77
78
# File 'lib/lolsoap/builder.rb', line 76

def __type__
  @type
end

#respond_to?(name) ⇒ Boolean

Returns:

  • (Boolean)


85
86
87
# File 'lib/lolsoap/builder.rb', line 85

def respond_to?(name)
  true
end