user guide: add page navigation links

This commit is contained in:
Josh Holtrop 2019-06-14 16:45:59 -04:00
parent a11c27f415
commit ca6336c715
2 changed files with 47 additions and 7 deletions

View File

@ -28,6 +28,19 @@
a { a {
text-decoration: none; text-decoration: none;
} }
#page_nav {
margin-top: 2em;
}
#page_nav_prev {
float: left;
}
#page_nav_toc {
text-align: center;
}
#page_nav_next {
float: right;
text-align: right;
}
.code { .code {
padding-left: 2ex; padding-left: 2ex;
} }

View File

@ -79,15 +79,15 @@ class Generator
@markdown_renderer = Redcarpet::Markdown.new(renderer) @markdown_renderer = Redcarpet::Markdown.new(renderer)
changelog = @markdown_renderer.render(File.read("CHANGELOG.md")) changelog = @markdown_renderer.render(File.read("CHANGELOG.md"))
pages = [Page.new("toc", "Table of Contents", render_toc)] @pages = [Page.new("toc", "Table of Contents", render_toc)]
@sections.each do |section| @sections.each do |section|
unless pages.last.name == section.page unless @pages.last.name == section.page
pages << Page.new(section.page, section.title) @pages << Page.new(section.page, section.title)
end end
pages.last.contents += render_section(section) @pages.last.contents += render_section(section)
end end
pages.each do |page| @pages.each do |page|
page.contents.gsub!("${changelog}", changelog) page.contents.gsub!("${changelog}", changelog)
page.contents.gsub!(%r{\$\{#(.+?)\}}) do |match| page.contents.gsub!(%r{\$\{#(.+?)\}}) do |match|
section_name = $1 section_name = $1
@ -100,9 +100,10 @@ class Generator
erb = ERB.new(template, nil, "<>") erb = ERB.new(template, nil, "<>")
if multi_page if multi_page
pages.each do |page| @pages.each_with_index do |page, page_index|
subpage_title = " - #{page.title}" subpage_title = " - #{page.title}"
content = page.contents content = page.contents
content += render_page_links(page_index)
html_result = erb.result(binding.clone) html_result = erb.result(binding.clone)
File.open(File.join(output_file, "#{page.name}.html"), "w") do |fh| File.open(File.join(output_file, "#{page.name}.html"), "w") do |fh|
fh.write(html_result) fh.write(html_result)
@ -110,7 +111,7 @@ class Generator
end end
else else
subpage_title = "" subpage_title = ""
content = pages.reduce("") do |result, page| content = @pages.reduce("") do |result, page|
result + page.contents result + page.contents
end end
html_result = erb.result(binding.clone) html_result = erb.result(binding.clone)
@ -120,6 +121,32 @@ class Generator
end end
end end
def render_page_links(page_index)
page_nav_prev =
if page_index > 1
%[<a href="#{@pages[page_index - 1].name}.html">&laquo; Prev<br/>#{@pages[page_index - 1].title}</a>]
else
""
end
page_nav_toc =
if page_index > 0
%[<a href="toc.html">Table of Contents</a>]
else
""
end
page_nav_next =
if page_index < @pages.size - 1
%[<a href="#{@pages[page_index + 1].name}.html">Next &raquo<br/>#{@pages[page_index + 1].title}</a>]
else
""
end
%[<div id="page_nav">] + \
%[<div id="page_nav_prev">#{page_nav_prev}</div>] + \
%[<div id="page_nav_next">#{page_nav_next}</div>] + \
%[<div id="page_nav_toc">#{page_nav_toc}</div>] + \
%[</div>]
end
def render_toc def render_toc
toc_content = %[<h1>Table of Contents</h1>\n] toc_content = %[<h1>Table of Contents</h1>\n]
@sections.each do |section| @sections.each do |section|