Sha256: 3fab6ed4106319ae563b55a20e209d3d860fbad9d15d66c86f9587c5167b90f3

Contents?: true

Size: 924 Bytes

Versions: 3

Compression:

Stored size: 924 Bytes

Contents

# frozen_string_literal: true

require 'fast_ignore'
require_relative '../spellr'
require_relative 'file'

module Spellr
  class FileList
    include Enumerable

    def initialize(*patterns)
      @patterns = patterns
    end

    # anchored patterns are significantly faster on large codebases
    def cli_patterns
      @patterns.map do |pattern|
        if pattern.match?(%r{^([/~*]|\.{1,2}/)})
          pattern
        else
          "/#{pattern}"
        end
      end
    end

    def each
      gitignore = ::File.join(Dir.pwd, '.gitignore')
      gitignore = nil unless ::File.exist?(gitignore)

      FastIgnore.new(
        ignore_rules: Spellr.config.excludes,
        include_rules: Spellr.config.includes + cli_patterns,
        gitignore: gitignore
      ).each do |file|
        file = Spellr::File.new(file)

        yield(file)
      end
    end

    def to_a
      enum_for(:each).to_a
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
spellr-0.5.0 lib/spellr/file_list.rb
spellr-0.4.1 lib/spellr/file_list.rb
spellr-0.4.0 lib/spellr/file_list.rb