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)
-
- (Object) check(path, tests)
Tests a path against a list of test.
-
- (Object) find(directories, patterns = [], by_extension = false, case_sensitive = false, &block)
Find a list of files in directories matching given regexps or patterns.
Instance Method Details
- (Object) check(path, tests)
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 |
- (Object) find(directories, patterns = [], by_extension = false, case_sensitive = false, &block)
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 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 |