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.26.1 lib/utils/line_blamer.rb
utils-0.26.0 lib/utils/line_blamer.rb
utils-0.25.0 lib/utils/line_blamer.rb
utils-0.24.2 lib/utils/line_blamer.rb
utils-0.24.1 lib/utils/line_blamer.rb
utils-0.24.0 lib/utils/line_blamer.rb
utils-0.23.3 lib/utils/line_blamer.rb
utils-0.23.1 lib/utils/line_blamer.rb
utils-0.23.0 lib/utils/line_blamer.rb
utils-0.22.1 lib/utils/line_blamer.rb
utils-0.22.0 lib/utils/line_blamer.rb
utils-0.21.2 lib/utils/line_blamer.rb
utils-0.21.1 lib/utils/line_blamer.rb
utils-0.21.0 lib/utils/line_blamer.rb
utils-0.20.0 lib/utils/line_blamer.rb
utils-0.19.0 lib/utils/line_blamer.rb
utils-0.18.1 lib/utils/line_blamer.rb
utils-0.18.0 lib/utils/line_blamer.rb
utils-0.17.0 lib/utils/line_blamer.rb
utils-0.16.0 lib/utils/line_blamer.rb