class Hypo::Component
Attributes
container[R]
lifetime[R]
name[R]
type[R]
Public Class Methods
new(type, container, name = nil)
click to toggle source
# File lib/hypo/component.rb, line 12 def initialize(type, container, name = nil) @container = container @type = type @name = name || type.name.gsub(/(.)([A-Z](?=[a-z]))/, '\1_\2').delete('::').downcase.to_sym @lifetime = container.lifetimes[:transient] @dependency_names = @type.instance_method(:initialize).parameters .map{|p| p[1]} .select{|name| ![:attrs, :attributes].include?(name)} end
Public Instance Methods
dependencies()
click to toggle source
# File lib/hypo/component.rb, line 32 def dependencies @dependency_names.map { |dependency| @container.resolve(dependency) } end
instance(attrs = {})
click to toggle source
# File lib/hypo/component.rb, line 22 def instance(attrs = {}) instance = @lifetime.instance(self, attrs) @dependency_names.each do |dependency| instance.instance_variable_set "@#{dependency}".to_sym, @container.resolve(dependency) end instance end