class AmsHal::Embed

Attributes

name[R]
object[R]
options[R]
scope[R]
serializer[R]

Public Class Methods

new(serializer, name, options = {}, &block) click to toggle source
# File lib/ams_hal/embed.rb, line 9
def initialize(serializer, name, options = {}, &block)
  @serializer = serializer
  @name = name
  @options = options
  @block = block
end

Public Instance Methods

resource_for(serializer) click to toggle source
# File lib/ams_hal/embed.rb, line 16
def resource_for(serializer)
  @object = serializer.object
  @scope = serializer.scope

  @self_before_instance_eval = nil
  # Use the return value of the block unless it is nil.
  if @block
    @self_before_instance_eval = eval "self", @block.binding
    @resource = instance_eval(&@block)
  else
    @resource = @object.public_send(name)
  end
end

Protected Instance Methods

method_missing(method, *args, &block) click to toggle source
Calls superclass method
# File lib/ams_hal/embed.rb, line 32
def method_missing(method, *args, &block)
  return super unless @self_before_instance_eval
  @self_before_instance_eval.send method, *args, &block
end