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