Sha256: 21c3447e8afd078e85644a2bd28692ac1e7e9542732156fb837b92741808fab5

Contents?: true

Size: 1.04 KB

Versions: 3

Compression:

Stored size: 1.04 KB

Contents

module Blueprints
  # Module that blueprints file is executed against. Defined <tt>blueprint</tt> and <tt>namespace</tt> 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

    # Wrapper around Blueprints::Dependency.new. See Blueprints::Dependency for more information.
    def d(*args)
      Dependency.new(*args)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
blueprints-0.8.2 lib/blueprints/file_context.rb
blueprints-0.8.1 lib/blueprints/file_context.rb
blueprints-0.8.0 lib/blueprints/file_context.rb