Page#find_page_in_this_tree is redundant
This commit is contained in:
+15
-38
@@ -176,13 +176,13 @@ module Gollum
|
|||||||
dirs.pop
|
dirs.pop
|
||||||
map = @wiki.tree_map_for(self.version.id)
|
map = @wiki.tree_map_for(self.version.id)
|
||||||
while !dirs.empty?
|
while !dirs.empty?
|
||||||
if page = find_page_in_this_tree(map, dirs.join('/'), '_Footer')
|
if page = find_page_in_tree(map, '_Footer', dirs.join('/'))
|
||||||
return page
|
return page
|
||||||
end
|
end
|
||||||
dirs.pop
|
dirs.pop
|
||||||
end
|
end
|
||||||
|
|
||||||
find_page_in_this_tree(map, '', '_Footer')
|
find_page_in_tree(map, '_Footer', '')
|
||||||
end
|
end
|
||||||
|
|
||||||
#########################################################################
|
#########################################################################
|
||||||
@@ -254,51 +254,28 @@ module Gollum
|
|||||||
end
|
end
|
||||||
rescue Grit::GitRuby::Repository::NoSuchShaFound
|
rescue Grit::GitRuby::Repository::NoSuchShaFound
|
||||||
end
|
end
|
||||||
|
|
||||||
# Find a page in a given tree.
|
# Find a page in a given tree.
|
||||||
#
|
#
|
||||||
# map - The Array tree map from Wiki#tree_map.
|
# map - The Array tree map from Wiki#tree_map.
|
||||||
# name - The canonical String page name.
|
# name - The canonical String page name.
|
||||||
|
# checked_dir - Optional String of the directory a matching page needs
|
||||||
|
# to be in. The string should
|
||||||
#
|
#
|
||||||
# Returns a Gollum::Page or nil if the page could not be found.
|
# Returns a Gollum::Page or nil if the page could not be found.
|
||||||
def find_page_in_tree(map, name)
|
def find_page_in_tree(map, name, checked_dir = nil)
|
||||||
map.each do |(tree_name, blob_sha)|
|
if checked_dir = Wiki.normalize_directory(checked_dir)
|
||||||
blob_name = ::File.basename(tree_name)
|
checked_dir.downcase!
|
||||||
if page_match(name, blob_name)
|
|
||||||
dir = ::File.dirname(tree_name)
|
|
||||||
blob = Grit::Blob.create(@wiki.repo, :id => blob_sha, :name => blob_name)
|
|
||||||
dir.sub! /(^\/)|(^\.$)/, ''
|
|
||||||
dir = "/#{dir}" if !dir.empty?
|
|
||||||
return self.class.new(@wiki).populate(blob, dir)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
return nil # nothing was found
|
|
||||||
end
|
|
||||||
|
|
||||||
# Find a page in a given tree without recursing into subtrees.
|
|
||||||
#
|
|
||||||
# map - The Array tree map from Wiki#tree_map.
|
|
||||||
# dir - The String path of the given Grit::Tree.
|
|
||||||
# name - The canonical String page name.
|
|
||||||
#
|
|
||||||
# Returns a Gollum::Page or nil if the page could not be found.
|
|
||||||
def find_page_in_this_tree(map, dir, name)
|
|
||||||
checked = dir.downcase
|
|
||||||
map.each do |(full_name, blob_sha)|
|
map.each do |(full_name, blob_sha)|
|
||||||
dir_name = ::File.dirname(full_name)
|
|
||||||
if dir_name == '.'
|
|
||||||
dir_name = ''
|
|
||||||
else
|
|
||||||
dir_name.downcase!
|
|
||||||
end
|
|
||||||
blob_name = ::File.basename(full_name)
|
blob_name = ::File.basename(full_name)
|
||||||
|
dir = Wiki.normalize_directory(::File.dirname(full_name))
|
||||||
if checked == dir_name && page_match(name, blob_name)
|
blob_in_dir = checked_dir.nil? || dir.downcase == checked_dir
|
||||||
path = dir == '' ? '' : ::File.join('/', dir)
|
|
||||||
|
if blob_in_dir && page_match(name, blob_name)
|
||||||
blob = Grit::Blob.create(@wiki.repo, :id => blob_sha, :name => blob_name)
|
blob = Grit::Blob.create(@wiki.repo, :id => blob_sha, :name => blob_name)
|
||||||
page = self.class.new(@wiki).populate(blob, path)
|
return self.class.new(@wiki).populate(blob, dir)
|
||||||
page.version = self.version
|
|
||||||
return page
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -431,6 +431,25 @@ module Gollum
|
|||||||
def clear_cache
|
def clear_cache
|
||||||
@ref_map = {}
|
@ref_map = {}
|
||||||
@tree_map = {}
|
@tree_map = {}
|
||||||
|
end # Normalizes a given directory name for searching through tree paths.
|
||||||
|
# Ensures that a directory begins with a slash, or
|
||||||
|
#
|
||||||
|
# normalize_directory("") # => ""
|
||||||
|
# normalize_directory(".") # => ""
|
||||||
|
# normalize_directory("foo") # => "/foo"
|
||||||
|
# normalize_directory("/foo/") # => "/foo"
|
||||||
|
# normalize_directory("/") # => ""
|
||||||
|
#
|
||||||
|
# dir - String directory name.
|
||||||
|
#
|
||||||
|
# Returns a normalized String directory name, or nil if no directory
|
||||||
|
# is given.
|
||||||
|
def self.normalize_directory(dir)
|
||||||
|
if dir
|
||||||
|
dir = ::File.expand_path(dir, '/')
|
||||||
|
dir = '' if dir == '/'
|
||||||
|
end
|
||||||
|
dir
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user