Module: Loader::ObjectRequireEXT
- 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)
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 63 |
# File 'lib/loader/require.rb', line 7 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
67 68 69 |
# File 'lib/loader/require.rb', line 67 def require_relative_directory_r *args require_relative_directory *args, r: true, f: Loader.caller_folder end |