class Grit::Blob
Constants
- DEFAULT_MIME_TYPE
Attributes
id[R]
mode[R]
name[R]
old_name[R]
Public Class Methods
blame(repo, commit, file)
click to toggle source
The blame information for the given file at the given commit
Returns Array: [Grit::Commit, Array: [<line>]]
# File lib/grit/blob.rb, line 57 def self.blame(repo, commit, file) data = repo.git.blame({:p => true}, commit, '--', file) commits = {} blames = [] info = nil data.split("\n").each do |line| parts = line.split(/\s+/, 2) case parts.first when /^[0-9A-Fa-f]{40}$/ case line when /^([0-9A-Fa-f]{40}) (\d+) (\d+) (\d+)$/ _, id, origin_line, final_line, group_lines = *line.match(/^([0-9A-Fa-f]{40}) (\d+) (\d+) (\d+)$/) info = {:id => id} blames << [nil, []] when /^([0-9A-Fa-f]{40}) (\d+) (\d+)$/ _, id, origin_line, final_line = *line.match(/^([0-9A-Fa-f]{40}) (\d+) (\d+)$/) info = {:id => id} end when /^(author|committer)/ case parts.first when /^(.+)-mail$/ info["#{$1}_email".intern] = parts.last when /^(.+)-time$/ info["#{$1}_date".intern] = Time.at(parts.last.to_i) when /^(author|committer)$/ info[$1.intern] = parts.last end when /^filename/ info[:filename] = parts.last when /^summary/ info[:summary] = parts.last when '' c = commits[info[:id]] unless c c = Commit.create(repo, :id => info[:id], :author => Actor.from_string(info[:author] + ' ' + info[:author_email]), :authored_date => info[:author_date], :committer => Actor.from_string(info[:committer] + ' ' + info[:committer_email]), :committed_date => info[:committer_date], :message => info[:summary]) commits[info[:id]] = c end _, text = *line.match(/^\t(.*)$/) blames.last[0] = c blames.last[1] << text info = nil end end blames end
Also aliased as: old_blame
create(repo, atts)
click to toggle source
Create an unbaked Blob
containing just the specified attributes
+repo+ is the Repo +atts+ is a Hash of instance variable data
Returns Grit::Blob
(unbaked)
# File lib/grit/blob.rb, line 15 def self.create(repo, atts) self.allocate.create_initialize(repo, atts) end
Public Instance Methods
<=>(other)
click to toggle source
Compares blobs by name
# File lib/grit/blob.rb, line 121 def <=>(other) name <=> other.name end
basename()
click to toggle source
# File lib/grit/blob.rb, line 111 def basename File.basename(name) end
create_initialize(repo, atts)
click to toggle source
Initializer for Blob.create
+repo+ is the Repo +atts+ is a Hash of instance variable data
Returns Grit::Blob
(unbaked)
# File lib/grit/blob.rb, line 24 def create_initialize(repo, atts) @repo = repo atts.each do |k, v| instance_variable_set("@#{k}".to_sym, v) end self end
data()
click to toggle source
The binary contents of this blob.
Returns String
# File lib/grit/blob.rb, line 42 def data @data ||= @repo.git.cat_file({:p => true}, id) end
Also aliased as: old_data
inspect()
click to toggle source
Pretty object inspection
# File lib/grit/blob.rb, line 116 def inspect %Q{#<Grit::Blob "#{@id}">} end
mime_type()
click to toggle source
The mime type of this file (based on the filename)
Returns String
# File lib/grit/blob.rb, line 49 def mime_type guesses = MIME::Types.type_for(self.name) rescue [] guesses.first ? guesses.first.simplified : DEFAULT_MIME_TYPE end
size()
click to toggle source
The size of this blob in bytes
Returns Integer
# File lib/grit/blob.rb, line 35 def size @size ||= @repo.git.cat_file({:s => true}, id).chomp.to_i end