class Belajar::Generator

Constants

LEADING_NUMBERS
PART_JOINTS

Public Instance Methods

prepare() click to toggle source
# File lib/belajar/generator.rb, line 25
def prepare
  begin
    solutions_path = Belajar.config.solutions_path
  rescue ConfigurationError
    base_dir       = File.dirname(Belajar.config.courses_path)
    solutions_dir  = Belajar::Configuration::SOLUTIONS_DIR
    solutions_path = File.join(base_dir, solutions_dir)
  end

  create_dir(Belajar.config.courses_path)
  create_dir(solutions_path)

  Belajar.config.solutions_path = solutions_path
  Belajar.config.save
end
scaffold(courses_path, target_path) click to toggle source
# File lib/belajar/generator.rb, line 8
def scaffold(courses_path, target_path)
  Dir[File.join(courses_path, '*/*/*/*.md')].each do |file|
    content_dir_parts = file.split('/')[-4..-2].map do |part|
      clean_up_path_part(part)
    end

    content_dir = File.join(content_dir_parts)
    directory   = File.join(target_path, File.dirname(content_dir))

    solution_file = File.basename(content_dir) + Solution::FILE_SUFFIX
    file_path     = File.join(directory, solution_file)

    create_dir(directory)
    create_file(file_path)
  end
end

Private Instance Methods

clean_up_path_part(text) click to toggle source
# File lib/belajar/generator.rb, line 54
def clean_up_path_part(text)
  text.gsub(LEADING_NUMBERS, '').gsub(PART_JOINTS, '_').downcase
end
create_dir(path) click to toggle source
# File lib/belajar/generator.rb, line 43
def create_dir(path)
  return if path.nil? || path.empty?
  FileUtils.makedirs(path) unless Dir.exist?(path)
end
create_file(path) click to toggle source
# File lib/belajar/generator.rb, line 48
def create_file(path)
  return if path.nil? || path.empty?
  create_dir(File.dirname(path))
  FileUtils.touch(path) unless File.exist?(path)
end