class Fabrique::BeanDefinition

Attributes

constructor_args[R]
factory_method[R]
gem[R]
id[R]
properties[R]
type[R]

Public Class Methods

new(attrs = {}) click to toggle source
# File lib/fabrique/bean_definition.rb, line 6
def initialize(attrs = {})
  @id = attrs["id"]
  @type = attrs["class"]
  @gem = GemDefinition.new(attrs["gem"]) if attrs["gem"]
  @constructor_args = attrs["constructor_args"] || []
  @constructor_args = keywordify(@constructor_args) if @constructor_args.is_a?(Hash)
  @properties = attrs["properties"] || {}
  @scope = attrs["scope"] || "singleton"
  @factory_method = attrs["factory_method"] || "new"
end

Public Instance Methods

dependencies() click to toggle source
# File lib/fabrique/bean_definition.rb, line 17
def dependencies
  (accumulate_dependencies(@type) + accumulate_dependencies(@constructor_args) + accumulate_dependencies(@properties)).uniq
end
singleton?() click to toggle source
# File lib/fabrique/bean_definition.rb, line 21
def singleton?
  @scope == "singleton"
end

Private Instance Methods

accumulate_dependencies(data, acc = []) click to toggle source
# File lib/fabrique/bean_definition.rb, line 31
def accumulate_dependencies(data, acc = [])
  if data.is_a?(Hash)
    accumulate_dependencies(data.values, acc)
  elsif data.is_a?(Array)
    data.each do |o|
      accumulate_dependencies(o, acc)
    end
  elsif data.is_a?(BeanReference) or data.is_a?(BeanPropertyReference)
    acc << data
  end
  acc
end
keywordify(args) click to toggle source
# File lib/fabrique/bean_definition.rb, line 27
def keywordify(args)
  args.inject({}) { |m, (k, v)| k = k.intern rescue k; m[k.intern] = v; m }
end