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