Sha256: 19f4db0400eeabde6dd2f2d4b0dea02efbb10d0f0fd22e6b25a18e7cb854fab8

Contents?: true

Size: 1.25 KB

Versions: 2

Compression:

Stored size: 1.25 KB

Contents

require_relative "fshelpyhelp"
require_relative "status"
require_relative "matcher"
require_relative "file"
require "ostruct"

module Stowaway
  class Sweeper
    include FSHelpyHelp

    def initialize(files, status = Status.new, matcher = Matcher.new, ext_to_ignore = [])
      @result = OpenStruct.new({ :files => files, :name_only_matches => []})
      @status = status
      @matcher = matcher
      @ignore = ext_to_ignore || []
      @ignore += [/^\.|\.jpg$|\.jpeg$|\.gif$|\.png$|\.ico$|\.bmp$/i]
    end

    def sweep(path)
      dir = Dir.new(path)

      dir.each do |f|
        next if ignore?(f)

        file = File.join(dir.path, f)

        if File.directory?(file)
          sweep(file)
        else
          inspect_file(file)
        end
      end
      @result
    end

    private

    def inspect_file(file)
      @status.out "Sweeping: #{file}"
      File.open(file, 'r') do |i|
        while line = i.gets
          remove_match(line) #rescue nil
        end
      end
      @status.flush
    end

    def remove_match(line)
      @result.files.delete_if do |file|
        if @matcher.match?(line, file)
          true
        elsif line.include?(file.name)
          @result.name_only_matches << file
          true
        end
      end
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
stowaway-0.1.9 lib/stowaway/sweeper.rb
stowaway-0.1.8 lib/stowaway/sweeper.rb