update Wiki#find_page_in_this_tree to use the new cached tree map.

This commit is contained in:
rick
2010-08-24 11:47:20 -07:00
parent 068a902a00
commit 292f6ec8dc
+21 -20
View File
@@ -174,20 +174,15 @@ module Gollum
dirs = self.path.split('/') dirs = self.path.split('/')
dirs.pop dirs.pop
map = @wiki.tree_map_for(self.version.id)
while !dirs.empty? while !dirs.empty?
tree = self.version.tree / dirs.join('/') if page = find_page_in_this_tree(map, dirs.join('/'), '_Footer')
if page = find_page_in_this_tree(tree, dirs.join('/'), '_Footer')
return page return page
end end
dirs.pop dirs.pop
end end
tree = self.version.tree find_page_in_this_tree(map, '', '_Footer')
if page = find_page_in_this_tree(tree, '', '_Footer')
return page
end
return nil
end end
######################################################################### #########################################################################
@@ -289,22 +284,28 @@ module Gollum
# Find a page in a given tree without recursing into subtrees. # Find a page in a given tree without recursing into subtrees.
# #
# tree - The Grit::Tree in which to look. # tree - The Array tree map from Wiki#tree_map.
# dir - The String path of the given Grit::Tree. # dir - The String path of the given Grit::Tree.
# name - The canonical String page name. # name - The canonical String page name.
# #
# 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_this_tree(tree, dir, name) def find_page_in_this_tree(map, dir, name)
treemap = {} checked = dir.downcase
tree.contents.each do |item| map.each do |(full_name, blob_sha)|
case item dir_name = ::File.dirname(full_name)
when Grit::Blob if dir_name == '.'
if page_match(name, item.name) dir_name = ''
path = dir == '' ? '' : ::File.join('/', dir) else
page = self.class.new(@wiki).populate(item, path) dir_name.downcase!
page.version = self.version end
return page blob_name = ::File.basename(full_name)
end
if checked == dir_name && page_match(name, blob_name)
path = dir == '' ? '' : ::File.join('/', dir)
blob = Grit::Blob.create(@wiki.repo, :id => blob_sha, :name => blob_name)
page = self.class.new(@wiki).populate(blob, path)
page.version = self.version
return page
end end
end end