class Gitmain::Tree
Attributes
id[R]
name[R]
path[R]
repository[R]
Public Class Methods
new(repository, id, path = nil, name = nil)
click to toggle source
# File lib/gitmain/tree.rb, line 5 def initialize(repository, id, path = nil, name = nil) raise ArgumentError, 'provide a valid repository' unless repository.kind_of?(Gitmain::Repository) raise ArgumentError, 'provide a valid tree id' unless id.to_s.match(/\A[0-9a-f]{40}\z/) @repository = repository @id = id @path = path @name = name end
Public Instance Methods
blobs(klass: Gitmain::Blob, recursive: false)
click to toggle source
# File lib/gitmain/tree.rb, line 14 def blobs(klass: Gitmain::Blob, recursive: false) if recursive _tree.walk(:postorder).map do |root, object| if object[:type] == :blob blob_path = File.join(*[path, name, root].map(&:to_s).reject(&:empty?)) blob_path.sub!(/\/\z/, '') blob_path = nil if blob_path.empty? klass.new(repository, object[:oid], blob_path, object[:name]) end end.compact else _tree.each.map do |object| if object[:type] == :blob blob_path = File.join(*[path, name].map(&:to_s).reject(&:empty?)) blob_path.sub!(/\/\z/, '') blob_path = nil if blob_path.empty? klass.new(repository, object[:oid], blob_path, object[:name]) end end.compact end end
file_name()
click to toggle source
# File lib/gitmain/tree.rb, line 36 def file_name File.join(*[path, name].map(&:to_s).reject(&:empty?)) end
trees(klass: Gitmain::Tree, recursive: false)
click to toggle source
# File lib/gitmain/tree.rb, line 40 def trees(klass: Gitmain::Tree, recursive: false) if recursive _tree.walk(:postorder).map do |root, object| if object[:type] == :tree tree_path = File.join(*[path, name, root].map(&:to_s).reject(&:empty?)) tree_path.sub!(/\/\z/, '') tree_path = nil if tree_path.empty? klass.new(repository, object[:oid], tree_path, object[:name]) end end.compact else _tree.each.map do |object| if object[:type] == :tree tree_path = File.join(*[path, name].map(&:to_s).reject(&:empty?)) tree_path.sub!(/\/\z/, '') tree_path = nil if tree_path.empty? klass.new(repository, object[:oid], tree_path, object[:name]) end end.compact end end
Private Instance Methods
_tree()
click to toggle source
# File lib/gitmain/tree.rb, line 64 def _tree @_tree ||= repository.rugged(id) end