class Algerb::Generator

Public Instance Methods

generate(files) click to toggle source
# File lib/algerb/generator.rb, line 4
def generate(files)
  generate_autoloader_body(files)
end
generate_autoloader_body(files) click to toggle source
# File lib/algerb/generator.rb, line 8
def generate_autoloader_body(files)
  builder = Algerb::FilesBuilder.new
  files.each do |file|
    builder.add file
  end
  _generate_autoloader_body(builder.files.files)
end

Private Instance Methods

_generate_autoloader_body(files, parent = nil, level = 0) click to toggle source
# File lib/algerb/generator.rb, line 17
def _generate_autoloader_body(files, parent = nil, level = 0)
  files.sort_by {|name, file| name }.inject('') do |result, key_value|
    name, file = key_value
    path = remove_ext(prefix(parent) + file.name)
    if file.is_a?(Algerb::File)
      result += indent(level) + "autoload :#{file_to_class(file.name)}, '#{path}'\n"
    else
      result += indent(level) + "module #{file_to_class(file.name)}\n"
      result += _generate_autoloader_body(file.files, path, level + 1)
      result += indent(level) + "end\n"
    end
    result
  end
end
indent(level) click to toggle source
# File lib/algerb/generator.rb, line 40
def indent(level)
  '  ' * level
end
prefix(parent) click to toggle source
# File lib/algerb/generator.rb, line 32
def prefix(parent)
  if parent.nil?
    ''
  else
    "#{parent}/"
  end
end