Sha256: debd12ceb7ef388dceb0314a7a9197202d487c24c52a01388e1fc6bdc4bae845

Contents?: true

Size: 1.18 KB

Versions: 4

Compression:

Stored size: 1.18 KB

Contents

module Git
  module Conform
    class FileChecker < BaseChecker

      @file_exclusion_patterns = []

      class << self

        attr_reader :file_exclusion_patterns

        def excluded?(filename)
          file_exclusion_patterns.any? { |pattern|
            File.fnmatch?(pattern, filename)
          }
        end

      end

      def excluded?
        self.class.excluded? @filename
      end

      def conforms?
        true
      end

      def content
        File.read(@filename)
      end

      @available_checkers = []

      def self.inherited(subclass)
        # keep track of all defined subclasses
        # for the "--available" command option
        @available_checkers << subclass
        # ensure all file checkers "inherit" the @file_exclusion_patterns class instance variable
        # http://stackoverflow.com/questions/10728735/inherit-class-level-instance-variables-in-ruby
        subclass.instance_variable_set(:@file_exclusion_patterns, @file_exclusion_patterns.dup)
      end

      def self.available_checkers
        @available_checkers.map(&:name).map { |class_name|
          class_name.match(/\AGit::Conform::(.*Checker)\Z/)[1]
        }
      end

    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
git-conform-1.3.0 lib/git/conform/checkers/file_checker.rb
git-conform-1.2.1 lib/git/conform/checkers/file_checker.rb
git-conform-1.1.0 lib/git/conform/checkers/file_checker.rb
git-conform-1.0.0 lib/git/conform/checkers/file_checker.rb