Sha256: 6b9c9ae7f084da11c759416248fb88140c698c61bf978fc9d25d255100aa7cc0

Contents?: true

Size: 566 Bytes

Versions: 49

Compression:

Stored size: 566 Bytes

Contents

module Utils
  class LineBlamer
    def initialize(file, lineno = 1)
      @file, @lineno = file, lineno
    end

    def self.for_line(line)
      location = line.source_location and new *location
    end

    def self.blame(line)
      blamer = for_line(line)
      if blame = blamer.perform
        blame.sub!(/^[0-9a-f^]+/) { Term::ANSIColor.yellow($&) }
        blame.sub!(/\(([^)]+)\)/) { "(#{Term::ANSIColor.red($1)})" }
      end
    end

    def perform(options = '')
      `git 2>/dev/null blame #{options} -L #@lineno,+1 "#@file"`.full?
    end
  end
end

Version data entries

49 entries across 49 versions & 1 rubygems

Version Path
utils-0.41.0 lib/utils/line_blamer.rb
utils-0.40.0 lib/utils/line_blamer.rb
utils-0.39.0 lib/utils/line_blamer.rb
utils-0.38.0 lib/utils/line_blamer.rb
utils-0.37.1 lib/utils/line_blamer.rb
utils-0.37.0 lib/utils/line_blamer.rb
utils-0.36.0 lib/utils/line_blamer.rb
utils-0.35.0 lib/utils/line_blamer.rb
utils-0.34.0 lib/utils/line_blamer.rb
utils-0.33.1 lib/utils/line_blamer.rb
utils-0.33.0 lib/utils/line_blamer.rb
utils-0.32.0 lib/utils/line_blamer.rb
utils-0.31.1 lib/utils/line_blamer.rb
utils-0.31.0 lib/utils/line_blamer.rb
utils-0.30.2 lib/utils/line_blamer.rb
utils-0.30.1 lib/utils/line_blamer.rb
utils-0.30.0 lib/utils/line_blamer.rb
utils-0.29.0 lib/utils/line_blamer.rb
utils-0.28.0 lib/utils/line_blamer.rb
utils-0.27.0 lib/utils/line_blamer.rb