Module: Bovem::ShellMethods::Read
- Included in:
- Bovem::Shell
- Defined in:
- lib/bovem/shell.rb
Overview
Methods to find or check entries.
Instance Method Summary collapse
-
#check(path, tests) ⇒ Object
Tests a path against a list of test.
-
#find(directories, patterns = [], by_extension = false, case_sensitive = false, &block) ⇒ Object
Find a list of files in directories matching given regexps or patterns.
Instance Method Details
#check(path, tests) ⇒ Object
Tests a path against a list of test.
Valid tests are every method available in http://www.ruby-doc.org/core-1.9.3/FileTest.html (plus read
, write
, execute
, exec
, dir
). Trailing question mark can be omitted.
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/bovem/shell.rb', line 65 def check(path, tests) path = path.ensure_string tests.ensure_array.all? {|test| # Adjust test name test = test.ensure_string.strip test = case test when "read" then "readable" when "write" then "writable" when "execute", "exec" then "executable" when "dir" then "directory" else test end # Execute test test += "?" if test !~ /\?$/ FileTest.respond_to?(test) ? FileTest.send(test, path) : nil } end |
#find(directories, patterns = [], by_extension = false, case_sensitive = false, &block) ⇒ Object
Find a list of files in directories matching given regexps or patterns.
You can also pass a block to perform matching. The block will receive a single argument and the path will be considered matched if the blocks not evaluates to nil
or false
.
Inside the block, you can call Find.prune
to stop searching in the current directory.
97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
# File 'lib/bovem/shell.rb', line 97 def find(directories, patterns = [], by_extension = false, case_sensitive = false, &block) rv = [] directories = directories.ensure_array.compact {|d| File.(d.ensure_string) } patterns = normalize_patterns(patterns, by_extension, case_sensitive) directories.each do |directory| if self.check(directory, [:directory, :readable, :executable]) then Find.find(directory) do |entry| found = patterns.blank? ? true : match_pattern(entry, patterns, by_extension, &block) rv << entry if found end end end rv end |