class Git::Blame

Public Class Methods

new(filename, line_number = nil) click to toggle source
# File lib/Git/Blame.rb, line 81
def initialize(filename, line_number = nil)
  @filename = filename
  @line_number = line_number
end

Public Instance Methods

blame_output() click to toggle source
# File lib/Git/Blame.rb, line 94
def blame_output
  `#{command_string}`
end
command_string() click to toggle source
# File lib/Git/Blame.rb, line 86
def command_string
  if @line_number
    "git --no-pager blame -L #{@line_number},#{@line_number} #{@filename} --line-porcelain"
  else
    "git --no-pager blame #{@filename} --line-porcelain"
  end
end
entries() click to toggle source
# File lib/Git/Blame.rb, line 98
def entries
  line_count = 0
  porcelain_entry_string = ''
  entries = []
  blame_array = blame_output.split("\n")
  line_number = 0
  i = -1
  until i >= blame_array.size - 1
    until blame_array[i].split.first == 'filename'
      porcelain_entry_string << blame_array[i += 1]
      porcelain_entry_string << "\n"
    end
    porcelain_entry_string << blame_array[i += 1]
    porcelain_entry_string << "\n"
    entries << PorcelainEntry.new(porcelain_entry_string, line_number += 1).parse
    line_count = 0
    porcelain_entry_string = ''
  end
  entries
end
find(line_number) click to toggle source
# File lib/Git/Blame.rb, line 119
def find(line_number)
  entries.detect{|entry| entry.line_number == line_number}
end