module Daigaku::Loadable

Public Instance Methods

load(path) click to toggle source
# File lib/daigaku/loadable.rb, line 3
def load(path)
  return [] unless Dir.exist?(path)

  dirs = Dir.entries(path).select do |entry|
    !entry.match(/\./)
  end

  dirs.sort.map do |dir|
    dir_path   = File.join(path, dir)
    module_name = demodulize(to_s)
    class_name = singularize(module_name)
    daigaku_class(class_name).new(dir_path)
  end
end

Private Instance Methods

daigaku_class(name) click to toggle source
# File lib/daigaku/loadable.rb, line 28
def daigaku_class(name)
  Kernel.const_get("Daigaku::#{name}")
end
demodulize(string) click to toggle source
# File lib/daigaku/loadable.rb, line 20
def demodulize(string)
  string.split('::').last
end
singularize(string) click to toggle source
# File lib/daigaku/loadable.rb, line 24
def singularize(string)
  string.end_with?('s') ? string[0..-2] : string
end