Sha256: b2ab28b24cfdccd2e02b3efd2e97a16b041d6c25fce9a6df78804af50044b9db

Contents?: true

Size: 1.35 KB

Versions: 48

Compression:

Stored size: 1.35 KB

Contents

module Steep
  class Project
    class Pattern
      attr_reader :patterns
      attr_reader :ignores
      attr_reader :prefixes
      attr_reader :ignore_prefixes
      attr_reader :ext

      def initialize(patterns:, ignores: [], ext:)
        @patterns = patterns
        @ignores = ignores
        @ext = ext

        @prefixes = patterns.map do |pat|
          if pat == "." || pat == "./"
            ""
          else
            pat.delete_prefix("./").delete_suffix(File::Separator) << File::Separator
          end
        end
        @ignore_prefixes = ignores.map do |pat|
          if pat == "." || pat == "./"
            ""
          else
            pat.delete_prefix("./").delete_suffix(File::Separator) << File::Separator
          end
        end
      end

      def =~(path)
        unless path.is_a?(Pathname)
          path = Pathname(path.to_s)
        end

        match?(path) && !ignore?(path)
      end

      def match?(path)
        test_string(path, patterns, prefixes)
      end

      def ignore?(path)
        test_string(path, ignores, ignore_prefixes)
      end

      def test_string(path, patterns, prefixes)
        string = path.to_s
        extension = path.extname

        patterns.any? {|pat| File.fnmatch(pat, string) } ||
          prefixes.any? {|prefix| string.start_with?(prefix) && extension == ext }
      end
    end
  end
end

Version data entries

48 entries across 48 versions & 1 rubygems

Version Path
steep-1.6.0.pre.1 lib/steep/project/pattern.rb
steep-1.5.3 lib/steep/project/pattern.rb
steep-1.5.2 lib/steep/project/pattern.rb
steep-1.5.1 lib/steep/project/pattern.rb
steep-1.5.0 lib/steep/project/pattern.rb
steep-1.5.0.pre.6 lib/steep/project/pattern.rb
steep-1.5.0.pre.5 lib/steep/project/pattern.rb
steep-1.5.0.pre.4 lib/steep/project/pattern.rb
steep-1.5.0.pre.3 lib/steep/project/pattern.rb
steep-1.5.0.pre.2 lib/steep/project/pattern.rb
steep-1.5.0.pre.1 lib/steep/project/pattern.rb
steep-1.4.0 lib/steep/project/pattern.rb
steep-1.4.0.dev.5 lib/steep/project/pattern.rb
steep-1.4.0.dev.4 lib/steep/project/pattern.rb
steep-1.4.0.dev.3 lib/steep/project/pattern.rb
steep-1.3.2 lib/steep/project/pattern.rb
steep-1.3.1 lib/steep/project/pattern.rb
steep-1.4.0.dev.2 lib/steep/project/pattern.rb
steep-1.4.0.dev.1 lib/steep/project/pattern.rb
steep-1.3.0 lib/steep/project/pattern.rb