class Spank::Component

Public Class Methods

new(class_key, &block) click to toggle source
# File lib/spank/component.rb, line 5
def initialize(class_key, &block)
  @factory_method = block
  @interceptors = []
end

Public Instance Methods

as_singleton() click to toggle source
# File lib/spank/component.rb, line 18
def as_singleton
  @factory_method = memoize(@factory_method)
end
create(container) click to toggle source
# File lib/spank/component.rb, line 10
def create(container)
  instance = @factory_method.call(container)
  @interceptors.each do |interceptor|
    instance = interceptor.intercept(instance)
  end
  instance
end
intercept(method) click to toggle source
# File lib/spank/component.rb, line 22
def intercept(method)
  interceptor = InterceptorRegistration.new(method)
  @interceptors.push(interceptor)
  interceptor
end