Module: Templater::Discovery

Extended by:
Discovery
Included in:
Discovery
Defined in:
lib/templater/discovery.rb

Overview

This provides a hook system which programs that use Templater can use to discover generators installed through gems. This requires two separate things, the Templater-using progrma will have to call the #discover! method giving a scope, like this:

Templater::Discovery.discover!("name-of-scope")

Where "name-of-scope" should be a string that uniquely identifies your program. Any gem wishing to then add a generator, that is automatically picked up, will then need to add a Generators file at the root of the project (don't forget to add it to the gem's manifest of files).

- lib /
- spec /
- Rakefile
- Generators

This file should look something like this:

scope "name-of-scope" do
  require ...something...
end

Multiple scopes can be added to the same Generators file for use with different generator programs.

Instance Method Summary collapse

Instance Method Details

#discover!(scope) ⇒ Object

Searches installed gems for Generators files and loads all code blocks in them that match the given scope.

Parameters

scope

The name of the scope to search for



46
47
48
49
50
51
52
# File 'lib/templater/discovery.rb', line 46

def discover!(scope)
  @scopes = {}
  generator_files.each do |file|
    load file
  end
  @scopes[scope].each { |block| block.call } if @scopes[scope]
end

#scope(scope, &block) ⇒ Object

Adds a block of code specific for a certain scope of generators, where the scope would probably be the name of the program running the generator.

Parameters

scope

The name of the scope

block<&Proc>

A block of code to execute provided the scope is correct



36
37
38
39
# File 'lib/templater/discovery.rb', line 36

def scope(scope, &block)
  @scopes[scope] ||= []
  @scopes[scope] << block
end