Sha256: 00c789a62edf1f216b232aac574176c0c5837b63c03fc947f1623b3478f7dd3b
Contents?: true
Size: 1.38 KB
Versions: 1
Compression:
Stored size: 1.38 KB
Contents
module BlueprintsBoy class Context attr_accessor :dependencies, :attrs, :factory_class def initialize(file_name, &added_callback) @file_name = file_name @added_callback = added_callback @dependencies = [] @attrs = {} @factory_class = nil instance_eval(File.read(file_name), file_name) end def depends_on(*dependencies, &block) chain(dependencies, nil, nil, &block) end def attributes(attributes, &block) chain(nil, attributes, nil, &block) end def factory(factory_class, &block) chain(nil, nil, factory_class, &block) end def chain(dependencies, attributes, factory, &block) dup.tap do |context| context.dependencies |= dependencies if dependencies context.attrs = context.attrs.merge(attributes) if attributes context.factory_class = factory if factory context.instance_eval(&block) if block end end def blueprint(*args, &block) Blueprint.new(self, *args, &block).tap do |blueprint| @added_callback.call blueprint if @added_callback end end def group(groups) groups.collect do |name, children| blueprint(name) { build(*children) } end end def dependency(name, *args, &block) BlueprintsBoy::Dependency.new(name, *args, &block) end alias_method :method_missing, :dependency end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
blueprints_boy-1.0.0 | lib/blueprints_boy/context.rb |