class TarvitHelpers::RecursiveLoader

Constants

RB_EXT

Attributes

method[R]

Public Class Methods

new(method=:require) click to toggle source
# File lib/tarvit-helpers/modules/recursive_loader.rb, line 6
def initialize(method=:require)
  raise "Method #{method} is invalid, must be :require or :load" unless [ :require, :load ].include?(method)
  @method = method
end

Public Instance Methods

load_modules(dir, priorities=[]) click to toggle source
# File lib/tarvit-helpers/modules/recursive_loader.rb, line 11
def load_modules(dir, priorities=[])
  load_ruby_files(dir, priorities)
  prioritize(global_dirs(dir), priorities).each do |subdir|
    load_modules dir.join(subdir), priorities
  end
end
load_modules_in(dir) click to toggle source
# File lib/tarvit-helpers/modules/recursive_loader.rb, line 18
def load_modules_in(dir)
  load_ruby_files(dir)
  valid_directories(dir).each do |subdir|
    load_modules_in dir.join(subdir)
  end
end

Private Instance Methods

global_dirs(dir) click to toggle source
# File lib/tarvit-helpers/modules/recursive_loader.rb, line 35
def global_dirs(dir)
  (valid_directories(dir)).uniq.sort
end
load_ruby_files(dir, priorities=[]) click to toggle source
# File lib/tarvit-helpers/modules/recursive_loader.rb, line 45
def load_ruby_files(dir, priorities=[])
  prioritize_files(ruby_files(dir), priorities).each do |rb|
    send(method, dir.join(rb))
  end
end
prioritize(list, priorities) click to toggle source
# File lib/tarvit-helpers/modules/recursive_loader.rb, line 59
def prioritize(list, priorities)
  (priorities.select{|p| list.include?(p) } + list ).uniq
end
prioritize_files(files, priorities) click to toggle source
# File lib/tarvit-helpers/modules/recursive_loader.rb, line 63
def prioritize_files(files, priorities)
  files_priorities = priorities.map do |p|
    p.include?(RB_EXT) ? p : (p+RB_EXT)
  end
  prioritize(files, files_priorities)
end
ruby_files(dir) click to toggle source
# File lib/tarvit-helpers/modules/recursive_loader.rb, line 53
def ruby_files(dir)
  Dir.open(dir).entries.select do |entry|
    entry.ends_with? RB_EXT
  end.sort
end
valid_directories(dir) click to toggle source
# File lib/tarvit-helpers/modules/recursive_loader.rb, line 39
def valid_directories(dir)
  Dir.open(dir).entries.select do |entry|
    !%w{ . .. }.include?(entry) && File.directory?(dir.join(entry))
  end
end