Sha256: cc295d649dd472149bd0393c8d1c7a01d61d4a3b63f25430bf3236b8d8bfdd8a
Contents?: true
Size: 1.24 KB
Versions: 8
Compression:
Stored size: 1.24 KB
Contents
# frozen_string_literal: true module EacRubyUtils class FilesystemTraverser attr_accessor :check_directory, :check_file, :recursive, :hidden_directories def check_path(path) path = ::Pathname.new(path.to_s) unless path.is_a?(::Pathname) internal_check_path(path, 0) end def hidden_directories? hidden_directories ? true : false end def recursive? recursive ? true : false end private def process_directory?(level) level.zero? || recursive? end def inner_check_directory(dir, level) return unless process_directory?(level) user_check_directory(dir) dir.each_entry do |e| next if %(. ..).include?(e.basename.to_s) next unless !e.basename.to_s.start_with?('.') || hidden_directories? internal_check_path(dir.join(e), level + 1) end end def internal_check_path(path, level) if path.file? user_check_file(path) elsif path.directory? inner_check_directory(path, level) else raise "Unknown filesystem object: #{path}" end end def user_check_file(path) check_file&.call(path) end def user_check_directory(path) check_directory&.call(path) end end end
Version data entries
8 entries across 8 versions & 2 rubygems