Sha256: 5dc395f79ed5d1e551b9d4a3158f451abfef5a3b90aa97cf3bd1004c12bda7d2

Contents?: true

Size: 1.13 KB

Versions: 1

Compression:

Stored size: 1.13 KB

Contents

require 'pre-commit/utils'

module PreCommit
  class RubySymbolHashrockets

    attr_accessor :staged_files, :error_message

    HASHROCKET_PATTERN = ':(?:\$|@|@@|[_A-Za-z])?\w*[=!?]?\s*=>\s*'

    def self.call
      check = new
      check.staged_files = Utils.staged_files('*')
      result = check.run

      if !result
        $stderr.puts check.error_message
        $stderr.puts
        $stderr.puts 'pre-commit: You can bypass this check using `git commit -n`'
        $stderr.puts
      end

      result
    end

    def run
      # There is nothing to check
      return true if staged_files.empty?

      if detected_bad_code?
        @error_message = "pre-commit: detected :symbol => value hashrocket:\n"
        @error_message += violations[:lines]

        @passed = false
      else
        @passed = true
      end

      @passed
    end

    def detected_bad_code?
      violations[:success]
    end

    def violations
      @violations ||= begin
        lines = `#{Utils.grep} '#{HASHROCKET_PATTERN}' #{staged_files}`
        success = $?.exitstatus == 0

        { :lines => lines, :success => success}
      end
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
pre-commit-0.7.0 lib/pre-commit/checks/ruby_symbol_hashrockets.rb