From 280afb42ea2c6c9562545214706419c913c69b26 Mon Sep 17 00:00:00 2001 From: rick Date: Thu, 2 Dec 2010 17:53:16 -0800 Subject: [PATCH] extract sub-page logic from Gollum::Page#footer --- lib/gollum/page.rb | 37 ++++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/lib/gollum/page.rb b/lib/gollum/page.rb index 2b9ad5ad..5ec7cfb5 100644 --- a/lib/gollum/page.rb +++ b/lib/gollum/page.rb @@ -196,19 +196,7 @@ module Gollum # # Returns the footer Page or nil if none exists. def footer - return nil if page_match('_Footer', self.filename) - - dirs = self.path.split('/') - dirs.pop - map = @wiki.tree_map_for(self.version.id) - while !dirs.empty? - if page = find_page_in_tree(map, '_Footer', dirs.join('/')) - return page - end - dirs.pop - end - - find_page_in_tree(map, '_Footer', '') + find_sub_page :footer end # Gets a Boolean determining whether this page is a historical version. @@ -356,5 +344,28 @@ module Gollum false end end + + # Loads a sub page. Sub page nanes (footers) are prefixed with + # an underscore to distinguish them from other Pages. + # + # name - String page name. + # + # Returns the Page or nil if none exists. + def find_sub_page(name) + name = "_#{name.to_s.capitalize}" + return nil if page_match(name, self.filename) + + dirs = self.path.split('/') + dirs.pop + map = @wiki.tree_map_for(self.version.id) + while !dirs.empty? + if page = find_page_in_tree(map, name, dirs.join('/')) + return page + end + dirs.pop + end + + find_page_in_tree(map, name, '') + end end end