Class: Merb::Generators::Generator

Inherits:
Templater::Generator
  • Object
show all
Defined in:
lib/merb-gen/generator.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ Generator

Returns a new instance of Generator.



13
14
15
16
17
18
# File 'lib/merb-gen/generator.rb', line 13

def initialize(*args)
  super
  options[:orm] ||= Merb.orm
  options[:testing_framework] ||= Merb.test_framework
  options[:template_engine] ||= Merb.template_engine
end

Class Method Details

.source_rootObject



46
47
48
# File 'lib/merb-gen/generator.rb', line 46

def self.source_root
  File.join(File.dirname(__FILE__), '..', 'generators', 'templates')
end

Instance Method Details

#go_up(num) ⇒ String

Returns a string of num times ‘..’, useful for example in tests for namespaced generators to find the spec_helper higher up in the directory structure.

Parameters:

  • num (Integer)

    number of directories up

Returns:

  • (String)

    concatenated string



42
43
44
# File 'lib/merb-gen/generator.rb', line 42

def go_up(num)
  (["'..'"] * num).join(', ')
end

#with_modules(modules, options = {}, &block) ⇒ Object

Inside a template, wraps a block of code properly in modules, keeping the indentation correct

Parameters:

  • modules (Array[#to_s])

    an array of modules to use for nesting

  • indent<Integer> (Hash)

    a customizable set of options



24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/merb-gen/generator.rb', line 24

def with_modules(modules, options={}, &block)
  indent = options[:indent] || 0
  text = capture(&block)
  modules.each_with_index do |mod, i|
    concat(("  " * (indent + i)) + "module #{mod}\n", block.binding)
  end
  text = text.to_a.map{ |line| ("  " * modules.size) + line }.join
  concat(text, block.binding)
  modules.reverse.each_with_index do |mod, i|
    concat(("  " * (indent + modules.size - i - 1)) + "end # #{mod}\n", block.binding)
  end
end