Add a method that returns a given page name scoped to a directory.

This is to allow access to non unique pages.
This commit is contained in:
Odin Dutton and Sebastian Korfmann
2012-08-01 09:12:25 +10:00
committed by Odin Dutton
parent 8422b71204
commit be086d94b5
3 changed files with 30 additions and 2 deletions
+2 -2
View File
@@ -364,9 +364,9 @@ module Gollum
# version - The String version ID to find.
#
# Returns a Gollum::Page or nil if the page could not be found.
def find(name, version)
def find(name, version, dir = nil)
map = @wiki.tree_map_for(version.to_s)
if page = find_page_in_tree(map, name)
if page = find_page_in_tree(map, name, dir)
page.version = version.is_a?(Grit::Commit) ?
version : @wiki.commit_for(version)
page.historical = page.version.to_s == version.to_s
+12
View File
@@ -199,6 +199,18 @@ module Gollum
@page_class.new(self).find(name, version)
end
# Public: Get the formatted page for a given page name scoped to a
# directory.
#
# name - The human or canonical String page name of the wiki page.
# dir - The directory String relative to the repo.
# version - The String version ID to find (default: @ref).
#
# Returns a Gollum::Page or nil if no matching page was found.
def scoped_page(name, dir, version = @ref)
@page_class.new(self).find(name, version || @ref, dir)
end
# Public: Get the static file for a given name.
#
# name - The full String pathname to the file.
+16
View File
@@ -94,6 +94,22 @@ context "Wiki" do
assert_match "b/_Sidebar.md", diff
assert_no_match regex, diff
end
test "gets scoped page from specified directory" do
@path = cloned_testpath('examples/lotr.git')
begin
wiki = Gollum::Wiki.new(@path)
index = wiki.repo.index
index.read_tree 'master'
index.add('Foobar/Elrond.md', 'Baz')
index.commit 'Add Foobar/Elrond.', [wiki.repo.commits.last], Grit::Actor.new('Tom Preston-Werner', 'tom@github.com')
assert_equal 'Rivendell/Elrond.md', wiki.scoped_page('Elrond', 'Rivendell').path
assert_equal 'Foobar/Elrond.md', wiki.scoped_page('Elrond', 'Foobar').path
ensure
FileUtils.rm_rf(@path)
end
end
end
context "Wiki page previewing" do