Module: Loader::ObjectExtension
- Defined in:
- lib/loader/require.rb
Instance Method Summary collapse
-
#require_relative_directory(*args) ⇒ Object
(also: #require_directory)
require sender relative directory’s files return the directory and the sub directories file names (rb/ru).
- #require_relative_directory_r(*args) ⇒ Object (also: #require_directory_r)
Instance Method Details
#require_relative_directory(*args) ⇒ Object Also known as: require_directory
require sender relative directory’s files return the directory and the sub directories file names (rb/ru)
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/loader/require.rb', line 6 def require_relative_directory(*args) folder= args.select { |e| (e.class <= ::String) }.join(File::Separator) opts= {} args.select { |e| (e.class <= ::Hash) }.each { |hash| hash.each { |sk, sv| opts[sk]=sv } } args.select! { |e| (e.class <= ::Symbol) } opts[:recursive] ||= opts.delete(:r) || opts.delete(:R) || !([:recursive, :r, :R,].select { |e| args.include?(e) }.empty?) opts[:recursive] = !!opts[:recursive] # inclusion and exclusion [[:exclude, [:ex, :e, :EX, :E]], [:include, [:in, :i, :IN, :I]]].each do |name, aliases| aliases.each do |one_alias| opts[name] ||= opts.delete(one_alias) end opts[name] ||= [] # should be REGEXP collection opts[name] = [*opts[name]].map { |e| !(e.class <= ::Regexp) ? Regexp.new(e.to_s) : e } end opts[:caller_folder] ||= opts.delete(:f) || opts.delete(:folder) || ::Loader.caller_folder unless folder.to_s[0] == File::Separator folder= [opts[:caller_folder], folder] end #> recursive option begin path_parts= [*folder] if opts[:recursive] path_parts.push("**") end path_parts.push("*.{rb,ru}") end return Dir.glob(File.join(*path_parts)).sort_by { |e| e.split(File::Separator).size }.map { |one_path| next unless opts[:exclude].select { |regex| one_path =~ regex ? true : false }.empty? if opts[:include].empty? require(one_path); one_path else opts[:include].each do |regex| if one_path =~ regex require(one_path); one_path end end end }.compact end |
#require_relative_directory_r(*args) ⇒ Object Also known as: require_directory_r
66 67 68 |
# File 'lib/loader/require.rb', line 66 def require_relative_directory_r(*args) require_relative_directory *args, r: true, f: Loader.caller_folder end |