class WADL::ResourceAndAddress
A resource bound beneath a certain address. Used to keep track of a path through a twisting resource hierarchy that includes references.
Public Class Methods
new(resource, address = nil, combine_address_with_resource = true)
click to toggle source
Calls superclass method
# File lib/wadl/resource_and_address.rb, line 38 def initialize(resource, address = nil, combine_address_with_resource = true) @resource = resource @address = combine_address_with_resource ? resource.address(address) : address super(resource) end
Public Instance Methods
address()
click to toggle source
# File lib/wadl/resource_and_address.rb, line 59 def address @address end
auth(header, value)
click to toggle source
# File lib/wadl/resource_and_address.rb, line 72 def auth(header, value) @address.auth(header, value) self end
bind(*args)
click to toggle source
# File lib/wadl/resource_and_address.rb, line 63 def bind(*args) ResourceAndAddress.new(@resource, @address.deep_copy, false).bind!(*args) end
bind!(args = {})
click to toggle source
# File lib/wadl/resource_and_address.rb, line 67 def bind!(args = {}) @address.bind!(args) self end
find_resource(*args, &block)
click to toggle source
# File lib/wadl/resource_and_address.rb, line 98 def find_resource(*args, &block) resource = @resource.find_resource(*args, &block) resource && ResourceAndAddress.new(resource, @address) end
find_resource_by_path(*args, &block)
click to toggle source
# File lib/wadl/resource_and_address.rb, line 103 def find_resource_by_path(*args, &block) resource = @resource.find_resource_by_path(*args, &block) resource && ResourceAndAddress.new(resource, @address) end
id()
click to toggle source
The id method is not delegated, because it's the name of a (deprecated) built-in Ruby method. We wnat to delegate it.
# File lib/wadl/resource_and_address.rb, line 47 def id @resource.id end
inspect()
click to toggle source
# File lib/wadl/resource_and_address.rb, line 55 def inspect "ResourceAndAddress\n Resource: #{@resource}\n #{@address.inspect}" end
method_missing(name, *args, &block)
click to toggle source
#method_missing is to catch generated methods that don't get delegated.
Calls superclass method
# File lib/wadl/resource_and_address.rb, line 82 def method_missing(name, *args, &block) if @resource.respond_to?(name) result = @resource.send(name, *args, &block) result.is_a?(Resource) ? ResourceAndAddress.new(result, @address.dup) : result else super end end
resource(*args, &block)
click to toggle source
#method_missing won't catch these guys because they were defined in the delegation operation.
# File lib/wadl/resource_and_address.rb, line 93 def resource(*args, &block) resource = @resource.resource(*args, &block) resource && ResourceAndAddress.new(resource, @address) end
to_s()
click to toggle source
# File lib/wadl/resource_and_address.rb, line 51 def to_s inspect end
uri(args = {})
click to toggle source
# File lib/wadl/resource_and_address.rb, line 77 def uri(args = {}) @address.deep_copy.bind!(args).uri end