module Blueprints
# Module that blueprints file is executed against. Defined blueprint and namespace methods.
class FileContext
@@current = nil
cattr_accessor :current
attr_reader :file
def initialize(file)
file = Pathname.new(file)
@file = file.relative_path_from(Blueprints.config.root)
FileContext.current = self
instance_eval(File.read(file))
FileContext.current = nil
end
# Creates a new blueprint by name and block passed
def blueprint(name, &block)
Blueprint.new(name, @file, &block)
end
# Creates new namespace by name, and evaluates block against it.
def namespace(name)
old_namespace = Namespace.root
namespace = Namespace.new(name)
Namespace.root = namespace
yield
old_namespace.add_child(namespace)
Namespace.root = old_namespace
namespace
end
# Creates dependency for current blueprint on some other blueprint and marks that instance variable with same name
# should be used for value of column. Only works on "Class.blueprint :name" type of blueprints
def d(name)
Buildable::Dependency.new(name)
end
end
end