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

Version Path
eac_ruby_utils-0.26.0 lib/eac_ruby_utils/filesystem_traverser.rb
eac_ruby_utils-0.25.0 lib/eac_ruby_utils/filesystem_traverser.rb
ehbrs-tools-0.3.1 vendor/eac_ruby_utils/lib/eac_ruby_utils/filesystem_traverser.rb
eac_ruby_utils-0.24.1 lib/eac_ruby_utils/filesystem_traverser.rb
ehbrs-tools-0.3.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/filesystem_traverser.rb
eac_ruby_utils-0.24.0 lib/eac_ruby_utils/filesystem_traverser.rb
eac_ruby_utils-0.23.0 lib/eac_ruby_utils/filesystem_traverser.rb
eac_ruby_utils-0.22.0 lib/eac_ruby_utils/filesystem_traverser.rb