class Ella::Generator

This is an abstract class for the numerous generators that make up the bulk of this project. It cannot be run on its own. TODO: The first parameter should be part of the hash, for clarity.

Public Class Methods

new(directory: nil, files: [], templates: [], template_vars: {}) click to toggle source
# File lib/ella/generator.rb, line 8
def initialize(directory: nil, files: [], templates: [], template_vars: {})
  @directory = NameFormatter.new(directory) if directory
  @files = files
  @templates = templates
  @template_vars = template_vars
end

Public Instance Methods

run() click to toggle source
# File lib/ella/generator.rb, line 15
def run
  raise NotImplementedError, 'Subclasses must define \'run\'.'
end

Private Instance Methods

generator_type() click to toggle source
# File lib/ella/generator.rb, line 21
def generator_type
  self.class.name.gsub(/^.*::(.*)Generator$/, '\1').downcase + 's'
end
make_directory(special_name = nil) click to toggle source
# File lib/ella/generator.rb, line 25
def make_directory(special_name = nil)
  target = special_name || generator_type
  return if Dir.exist?(target)

  Log.create(target + '/')
  Dir.mkdir(target)
end
make_test_directory() click to toggle source
# File lib/ella/generator.rb, line 33
def make_test_directory
  make_directory('tests')
  make_directory("tests/#{generator_type}")
end
target_name() click to toggle source
# File lib/ella/generator.rb, line 38
def target_name
  @directory ? @directory.snake_case : @directory
end