Class: Gollum::Git::Tree

Inherits:
Object
  • Object
show all
Defined in:
lib/rugged_adapter/git_layer_rugged.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(tree) ⇒ Tree

Returns a new instance of Tree.



698
699
700
# File 'lib/rugged_adapter/git_layer_rugged.rb', line 698

def initialize(tree)
  @tree = tree
end

Class Method Details

.tree_entry_from_rugged_hash(entry, root = '') ⇒ Object



688
689
690
691
692
693
694
695
696
# 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

Instance Method Details

#/(file) ⇒ Object



714
715
716
717
718
719
720
721
722
723
724
# 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) ⇒ Object



706
707
708
# File 'lib/rugged_adapter/git_layer_rugged.rb', line 706

def [](i)
  @tree[i]
end

#blobsObject



726
727
728
729
730
# 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(&block) ⇒ Object



732
733
734
735
736
# 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

#idObject



710
711
712
# File 'lib/rugged_adapter/git_layer_rugged.rb', line 710

def id
  @tree.oid
end

#keysObject



702
703
704
# File 'lib/rugged_adapter/git_layer_rugged.rb', line 702

def keys
  @tree.map{|entry| entry[:name]}
end