class Gollum::BlobEntry

Attributes

mode[R]

Gets the Fixnum mode of this blob.

path[R]

Gets the full path String for this blob.

sha[R]

Gets the String SHA for this blob.

size[R]

Gets the Fixnum size of this blob.

Public Class Methods

new(sha, path, size = nil, mode = nil) click to toggle source
# File lib/gollum-lib/blob_entry.rb, line 16
def initialize(sha, path, size = nil, mode = nil)
  @sha  = sha
  @path = path
  @size = size
  @mode = mode
  @dir  = @name = @blob = nil
end
normalize_dir(dir) click to toggle source

Normalizes a given directory name for searching through tree paths. Ensures that a directory begins with a slash, or

normalize_dir("")      # => ""
normalize_dir(".")     # => ""
normalize_dir("foo")   # => "/foo"
normalize_dir("/foo/") # => "/foo"
normalize_dir("/")     # => ""
normalize_dir("c:/")   # => ""

dir - String directory name.

Returns a normalized String directory name, or nil if no directory is given.

# File lib/gollum-lib/blob_entry.rb, line 80
def self.normalize_dir(dir)
  return unless dir

  dir = dir.dup

  # Remove '.' and '..' path segments
  dir.gsub!(%r{(\A|/)\.{1,2}(/|\z)}, '/')

  # Remove repeated slashes
  dir.gsub!(%r{//+}, '/')

  # Remove Windows drive letters, trailing slashes, and keep one leading slash
  dir.sub!(%r{\A([a-z]:)?/*(.*?)/*\z}i, '/\2')

  # Return empty string for paths that point to the toplevel
  return '' if dir == '/'

  dir
end

Public Instance Methods

blob(repo) click to toggle source

Gets a Gollum::Git::Blob instance for this blob.

repo - Gollum::Git::Repo instance for the Gollum::Git::Blob.

Returns an unbaked Gollum::Git::Blob instance.

# File lib/gollum-lib/blob_entry.rb, line 39
def blob(repo)
  @blob ||= Gollum::Git::Blob.create(repo,
                              :id => @sha, :name => name, :size => @size, :mode => @mode)
end
dir() click to toggle source

Gets the normalized directory path String for this blob.

# File lib/gollum-lib/blob_entry.rb, line 25
def dir
  @dir ||= self.class.normalize_dir(::File.dirname(@path))
end
file(wiki, commit) click to toggle source

Gets a File instance for this blob.

wiki - Gollum::Wiki instance for the Gollum::File

Returns a Gollum::File instance.

# File lib/gollum-lib/blob_entry.rb, line 58
def file(wiki, commit)
  ::Gollum::File.new(wiki, self.blob(wiki.repo), self.dir, commit)
end
inspect() click to toggle source
# File lib/gollum-lib/blob_entry.rb, line 62
def inspect
  %(#<Gollum::BlobEntry #{@sha} #{@path}>)
end
name() click to toggle source

Gets the file base name String for this blob.

# File lib/gollum-lib/blob_entry.rb, line 30
def name
  @name ||= ::File.basename(@path)
end
page(wiki, commit) click to toggle source

Gets a Page instance for this blob.

wiki - Gollum::Wiki instance for the Gollum::Page

Returns a Gollum::Page instance.

# File lib/gollum-lib/blob_entry.rb, line 49
def page(wiki, commit)
  ::Gollum::Page.new(wiki, self.blob(wiki.repo), self.dir, commit)
end