module Chemlab::CLI::Generator

Base Chemlab class generator ($ chemlab generate …)

Constants

INVALID_GENERATOR_ERROR

Public Instance Methods

generate(what, name, args) click to toggle source
# File lib/chemlab/cli/generator.rb, line 16
def generate(what, name, args)
  raise ArgumentError, 'Please specify what to generate' unless what
  raise ArgumentError, 'Please specify a name' unless name

  unless possible_generators.has_key?(what)
    raise ArgumentError, INVALID_GENERATOR_ERROR % what,
          possible_generators.keys.join(',')
  end

  data = args.each_with_object({}) do |arg, h|
    k, v = arg.split('=')
    h[k] = v
  end

  # render the erb
  $stdout.puts ERB.new(File.read(possible_generators[what]),
                       trim_mode: '%<>').result_with_hash({ data: data, name: name })
end

Private Instance Methods

possible_generators() click to toggle source

List the possible generators @return [Hash] { 'generator' => 'templates/generator.erb' }

# File lib/chemlab/cli/generator.rb, line 39
def possible_generators
  Dir[File.expand_path('./generator/templates/*.erb', __dir__)].each_with_object({}) do |generator, generators|
    generators[File.basename(generator)[0..-5]] = generator
  end
end