class Blam

Public Class Methods

source_root() click to toggle source
# File lib/blam.rb, line 18
def self.source_root
  File.dirname(__FILE__)
end

Public Instance Methods

create_source_file() click to toggle source
# File lib/blam.rb, line 30
def create_source_file
  dir = opts[:source_dir]
  @class_parts = name.split('::')
  file_name = "#{dir}/#{get_path(name)}.rb"
  if @class_parts.count == 1
    template('templates/module.tt', file_name) unless File.exists?(file_name)
  else
    template('templates/source.tt', file_name) unless File.exists?(file_name)
  end
end
create_test_file() click to toggle source
# File lib/blam.rb, line 41
def create_test_file
  if opts[:no_tests]
    puts 'Skipped the tests, you lazy piece of shit!'
  else
    dirs = [opts[:tests_dir]]
    test_suffix = opts[:test_suffix]
    test_template = test_suffix == 'spec' ? 'rspec' : 'test'
    dirs.concat opts[:additional_test_dirs] if opts[:additional_test_dirs] && !opts[:just_unit]
    dirs.each do |dir|
      @name = name
      @path = get_path(name)
      file_name = "#{dir}/#{get_path(name)}_#{test_suffix}.rb"
      template("templates/#{test_template}.tt", file_name) unless File.exists?(file_name)
    end
  end
end
init() click to toggle source
# File lib/blam.rb, line 22
def init
  if name == '--init'
    file_name = '.blam'
    template('templates/blam.tt', file_name) unless File.exists?(file_name)
    exit(0)
  end
end

Private Instance Methods

get_path(name) click to toggle source
# File lib/blam.rb, line 60
def get_path(name)
  name.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2').gsub(/([a-z\d])([A-Z])/, '\1_\2').tr('-', '_').downcase
end
opts() click to toggle source
# File lib/blam.rb, line 64
def opts
  default_opts = { source_dir: 'lib', tests_dir: 'spec', test_suffix: 'spec' }
  cli_opts = symbolize(options)
  return default_opts.merge(cli_opts) unless File.exists?('.blam')
  raw_file_opts = ::YAML.load_file('.blam') || {}
  file_opts = symbolize(raw_file_opts)
  default_opts.merge(file_opts).merge(cli_opts)
end
symbolize(hash) click to toggle source
# File lib/blam.rb, line 73
def symbolize(hash)
  new_hash = {}
  hash.each do |key, value|
    new_hash[key.to_sym] = value
  end
  new_hash
end