Merge pull request #1499 from gollum/primer_breadcrumbs

Primer CSS breadcrumbs (related to #1394).
This commit is contained in:
Bart Kamphorst
2020-03-26 09:20:03 +01:00
committed by GitHub
4 changed files with 13 additions and 10 deletions
+5 -5
View File
@@ -20,18 +20,18 @@ module Precious
def breadcrumb
if @path
path = Pathname.new(@path)
breadcrumb = [%{<a href="#{overview_path}">Home</a>}]
breadcrumb = [%{<nav aria-label="Breadcrumb"><ol><li class="breadcrumb-item"><a href="#{overview_path}">Home</a></li>}]
path.descend do |crumb|
title = crumb.basename
if title == path.basename
breadcrumb << title
breadcrumb << %{<li class="breadcrumb-item" aria-current="page">#{title}</li>}
else
breadcrumb << %{<a href="#{overview_path}/#{crumb}/">#{title}</a>}
breadcrumb << %{<li class="breadcrumb-item"><a href="#{overview_path}/#{crumb}/">#{title}</a></li>}
end
end
breadcrumb.join(' / ')
breadcrumb << %{</ol></nav>}
breadcrumb.join("\n")
else
'Home'
end
+4 -3
View File
@@ -28,13 +28,14 @@ module Precious
def breadcrumb
path = Pathname.new(@page.url_path).parent
return '' if path.to_s == '.'
breadcrumb = []
breadcrumb = [%{<nav aria-label="Breadcrumb"><ol>}]
path.descend do |crumb|
element = "#{crumb.basename}"
next if element == @page.title
breadcrumb << %{<a href="#{overview_path}/#{crumb}/">#{element}</a>}
breadcrumb << %{<li class="breadcrumb-item"><a href="#{overview_path}/#{crumb}/">#{element}</a></li>}
end
breadcrumb.join(' / ') << ' /'
breadcrumb << %{</ol></nav>}
breadcrumb.join("\n")
end
def content
+2 -1
View File
@@ -41,7 +41,8 @@ context "Precious::Views::Overview" do
test "breadcrumb" do
@page.instance_variable_set("@path", "Mordor/Eye-Of-Sauron/Saruman")
@page.instance_variable_set("@base_url", "")
assert_equal '<a href="/gollum/overview">Home</a> / <a href="/gollum/overview/Mordor/">Mordor</a> / <a href="/gollum/overview/Mordor/Eye-Of-Sauron/">Eye-Of-Sauron</a> / Saruman', @page.breadcrumb
$stderr.puts @page.breadcrumb.inspect
assert_equal "<nav aria-label=\"Breadcrumb\"><ol><li class=\"breadcrumb-item\"><a href=\"/gollum/overview\">Home</a></li>\n<li class=\"breadcrumb-item\"><a href=\"/gollum/overview/Mordor/\">Mordor</a></li>\n<li class=\"breadcrumb-item\"><a href=\"/gollum/overview/Mordor/Eye-Of-Sauron/\">Eye-Of-Sauron</a></li>\n<li class=\"breadcrumb-item\" aria-current=\"page\">Saruman</li>\n</ol></nav>", @page.breadcrumb
end
test "breadcrumb with no path" do
+2 -1
View File
@@ -115,7 +115,8 @@ EOS
@view = Precious::Views::Page.new
@view.instance_variable_set :@page, page
@view.instance_variable_set :@content, page.formatted_data
assert_equal @view.breadcrumb, '<a href="/gollum/overview/subdir/">subdir</a> /'
assert_equal @view.breadcrumb, "<nav aria-label=\"Breadcrumb\"><ol>\n<li class=\"breadcrumb-item\"><a href=\"/gollum/overview/subdir/\">subdir</a></li>\n</ol></nav>"
# No breadcrumb on unnested page
@wiki.write_page('BC Test 2', :markdown, 'Test', commit_details)