BakeSourceBakeScope

module Scope

Used for containing all methods defined in a bakefile.

Definitions

def self.load(file_path, path = [])

Load the specified file into a unique scope module, which can then be included into a class Bake::Base instance.

Implementation

def self.load(file_path, path = [])
	scope = Module.new
	
	if scope.respond_to?(:set_temporary_name)
		scope.set_temporary_name("#{self.name}[#{file_path}]")
	end
	
	scope.extend(self)
	
	scope.const_set(:FILE_PATH, file_path)
	scope.const_set(:PATH, path)
	
	# yield scope if block_given?
	
	scope.module_eval(File.read(file_path), file_path)
	
	return scope
end

def recipes

Recipes defined in this scope.

Signature

yields {|recipe| ...}
parameter recipe Recipe
returns Enumerable

Implementation

def recipes
	return to_enum(:recipes) unless block_given?
	
	names = self.instance_methods
	
	names.each do |name|
		yield recipe_for(name)
	end
end

def file_path

The path of the file that was used to Bake::Scope.load this scope.

Implementation

def file_path
	pp file_path_self: self
	self.const_get(:FILE_PATH)
end

def path

The path of the scope, relative to the root of the context.

Implementation

def path
	self.const_get(:PATH)
end

def recipe_for(name)

Look up a recipe with a specific name.

Signature

parameter name String

The instance method to look up.

Implementation

def recipe_for(name)
	Recipe.new(self, name, self.instance_method(name))
end