class Generator

Attributes

dummy_name[R]
script_name[R]

Public Class Methods

new(script_name) click to toggle source
# File lib/generator.rb, line 9
def initialize(script_name)
  @script_name = script_name.downcase
  @dummy_name = 'my_script'
end

Public Instance Methods

after_generate() click to toggle source
# File lib/generator.rb, line 56
def after_generate
  puts
  puts "#{script_name.green} has been installed in #{(File.join Dir.pwd, script_name).green}"
  puts "To start testing, run following commands"
  puts 
  puts "    cd #{script_name}".blue
  puts "    guard".blue
  puts
end
extract_data(type, regex) click to toggle source
# File lib/generator.rb, line 38
def extract_data(type, regex)
  (__send__ "template_#{type}").map do |t|
    rootpath = File.join(Dir.pwd, script_name) + '/'
    file = t.gsub(regex){ |m| rootpath }.gsub(dummy_name, script_name)
    [] << file << t
  end
end
generate_filebody(filename) click to toggle source
# File lib/generator.rb, line 26
def generate_filebody(filename)
  ERB.new(IO.read(filename)).result(binding)
end
result_directories() click to toggle source
# File lib/generator.rb, line 30
def result_directories
  extract_data :directories, /^(.+)\/lib\/\.\.\/(.+)\//
end
result_files() click to toggle source
# File lib/generator.rb, line 34
def result_files
  extract_data :files, /^(.+)\/lib\/\.\.\/template\//
end
run_generator!() click to toggle source
# File lib/generator.rb, line 46
def run_generator!
  write(result_directories) { |f| FileUtils.mkdir_p f.first }
  write(result_files) { |f| IO.write(f.first, generate_filebody(f.last)) }
  after_generate
end
template_directories() click to toggle source
# File lib/generator.rb, line 14
def template_directories
  template_paths.select { |f| File.directory? f }
end
template_files() click to toggle source
# File lib/generator.rb, line 18
def template_files
  template_paths.reject { |f| File.directory? f }
end
template_paths() click to toggle source
# File lib/generator.rb, line 22
def template_paths
  Dir.glob File.dirname(__FILE__) + "/../template/**/*"
end
write(files) { |f| ... } click to toggle source
# File lib/generator.rb, line 52
def write(files)
  files.each { |f| puts f.first.green; yield f }
end