From ca6336c7157541d55d6672687f951dd5c065c2a9 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Fri, 14 Jun 2019 16:45:59 -0400 Subject: [PATCH] user guide: add page navigation links --- rb/assets/user_guide.html.erb | 13 +++++++++++ rb/gen_user_guide.rb | 41 +++++++++++++++++++++++++++++------ 2 files changed, 47 insertions(+), 7 deletions(-) diff --git a/rb/assets/user_guide.html.erb b/rb/assets/user_guide.html.erb index c88ec3a..380d18b 100644 --- a/rb/assets/user_guide.html.erb +++ b/rb/assets/user_guide.html.erb @@ -28,6 +28,19 @@ a { 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 { padding-left: 2ex; } diff --git a/rb/gen_user_guide.rb b/rb/gen_user_guide.rb index 3b3e872..1e5d50c 100644 --- a/rb/gen_user_guide.rb +++ b/rb/gen_user_guide.rb @@ -79,15 +79,15 @@ class Generator @markdown_renderer = Redcarpet::Markdown.new(renderer) 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| - unless pages.last.name == section.page - pages << Page.new(section.page, section.title) + unless @pages.last.name == section.page + @pages << Page.new(section.page, section.title) end - pages.last.contents += render_section(section) + @pages.last.contents += render_section(section) end - pages.each do |page| + @pages.each do |page| page.contents.gsub!("${changelog}", changelog) page.contents.gsub!(%r{\$\{#(.+?)\}}) do |match| section_name = $1 @@ -100,9 +100,10 @@ class Generator erb = ERB.new(template, nil, "<>") if multi_page - pages.each do |page| + @pages.each_with_index do |page, page_index| subpage_title = " - #{page.title}" content = page.contents + content += render_page_links(page_index) html_result = erb.result(binding.clone) File.open(File.join(output_file, "#{page.name}.html"), "w") do |fh| fh.write(html_result) @@ -110,7 +111,7 @@ class Generator end else subpage_title = "" - content = pages.reduce("") do |result, page| + content = @pages.reduce("") do |result, page| result + page.contents end html_result = erb.result(binding.clone) @@ -120,6 +121,32 @@ class Generator end end + def render_page_links(page_index) + page_nav_prev = + if page_index > 1 + %[« Prev
#{@pages[page_index - 1].title}
] + else + "" + end + page_nav_toc = + if page_index > 0 + %[Table of Contents] + else + "" + end + page_nav_next = + if page_index < @pages.size - 1 + %[Next »
#{@pages[page_index + 1].title}
] + else + "" + end + %[] + end + def render_toc toc_content = %[

Table of Contents

\n] @sections.each do |section|