class Apist::ResultCallback

Attributes

arguments[R]
name[R]

Public Class Methods

new(name, arguments) click to toggle source
# File lib/apist/resultcallback.rb, line 10
def initialize(name, arguments)
  @name = name
  @arguments = arguments
end

Public Instance Methods

apply(node, method) click to toggle source
# File lib/apist/resultcallback.rb, line 15
def apply(node, method)
  return apply_to_array node, method if node.is_a? Array

  return node.to_s if @name === :to_s

  filter = Apist::Filter.new node, method
  return filter.send @name, *@arguments if filter.respond_to? @name

  resource = method.resource
  return call_resource_method node, resource if resource.respond_to? @name

  return node.send @name, *@arguments if node.respond_to? @name

  raise Apist::Error::Method, "Method '#{@name}' was not found"
end
apply_to_array(array, method) click to toggle source
# File lib/apist/resultcallback.rb, line 31
def apply_to_array(array, method)
  result = []
  array.each do |node|
    result << apply(node, method)
  end
  return result
end
call_resource_method(node, resource) click to toggle source
# File lib/apist/resultcallback.rb, line 39
def call_resource_method(node, resource)
  arguments = @arguments.unshift node
  resource.send @name, *arguments
end