Sha256: 26c684c79727de5bcbd3815ba23e454dd88b4e9bc94ce29fa709808da1766f48
Contents?: true
Size: 1.65 KB
Versions: 1
Compression:
Stored size: 1.65 KB
Contents
module TarvitHelpers class RecursiveLoader attr_reader :method def initialize(method=:require) raise "Method #{method} is invalid, must be :require or :load" unless [ :require, :load ].include?(method) @method = method end 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 def load_modules_in(dir) load_ruby_files(dir) valid_directories(dir).each do |subdir| load_modules_in dir.join(subdir) end end module Context def load_modules(dir, priorities=[], method=:require) RecursiveLoader.new(method).load_modules(dir, priorities) end end extend Context private def global_dirs(dir) (valid_directories(dir)).uniq.sort end def valid_directories(dir) Dir.open(dir).entries.select do |entry| !%w{ . .. }.include?(entry) && File.directory?(dir.join(entry)) end end def load_ruby_files(dir, priorities=[]) prioritize_files(ruby_files(dir), priorities).each do |rb| send(method, dir.join(rb)) end end RB_EXT = '.rb' def ruby_files(dir) Dir.open(dir).entries.select do |entry| entry.ends_with? RB_EXT end.sort end def prioritize(list, priorities) (priorities.select{|p| list.include?(p) } + list ).uniq end 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 end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
tarvit-helpers-0.0.23 | lib/tarvit-helpers/modules/recursive_loader.rb |