class Gollum::Git::Tree

Public Class Methods

new(tree) click to toggle source
# File lib/rugged_adapter/git_layer_rugged.rb, line 698
def initialize(tree)
  @tree = tree
end
tree_entry_from_rugged_hash(entry, root = '') click to toggle source
# File lib/rugged_adapter/git_layer_rugged.rb, line 688
def self.tree_entry_from_rugged_hash(entry, root = '')
  {
    sha:  entry[:oid],
    mode: entry[:filemode],
    type: entry[:type].to_s,
    name: entry[:name],
    path: "#{root}#{entry[:name]}"
  }
end

Public Instance Methods

/(file) click to toggle source
# File lib/rugged_adapter/git_layer_rugged.rb, line 714
def /(file)
  return self if file == '/'
  begin
  obj = @tree.path(file)
  rescue Rugged::TreeError
    return nil
  end
  return nil if obj.nil?
  obj = @tree.owner.lookup(obj[:oid])
  obj.is_a?(Rugged::Tree) ? Gollum::Git::Tree.new(obj) : Gollum::Git::Blob.new(obj)
end
[](i) click to toggle source
# File lib/rugged_adapter/git_layer_rugged.rb, line 706
def [](i)
  @tree[i]
end
blobs() click to toggle source
# File lib/rugged_adapter/git_layer_rugged.rb, line 726
def blobs
  blobs = []
  @tree.each_blob {|blob| blobs << blob_for_tree_entry(blob) }
  blobs
end
find_blob() { |blob| ... } click to toggle source
# File lib/rugged_adapter/git_layer_rugged.rb, line 732
def find_blob(&block)
  return nil unless block_given?
  blob = @tree.each_blob.find {|blob| yield blob[:name] }
  blob ? blob_for_tree_entry(blob) : nil
end
id() click to toggle source
# File lib/rugged_adapter/git_layer_rugged.rb, line 710
def id
  @tree.oid
end
keys() click to toggle source
# File lib/rugged_adapter/git_layer_rugged.rb, line 702
def keys
  @tree.map{|entry| entry[:name]}
end

Private Instance Methods

blob_for_tree_entry(blob) click to toggle source
# File lib/rugged_adapter/git_layer_rugged.rb, line 740
def blob_for_tree_entry(blob)
  Gollum::Git::Blob.new(@tree.owner.lookup(blob[:oid]), self.class.tree_entry_from_rugged_hash(blob))
end