diff --git a/src/renderer/html_handlebars/helpers/navigation.rs b/src/renderer/html_handlebars/helpers/navigation.rs
index 235c3949b8..77316a1178 100644
--- a/src/renderer/html_handlebars/helpers/navigation.rs
+++ b/src/renderer/html_handlebars/helpers/navigation.rs
@@ -5,165 +5,230 @@ use serde_json;
use handlebars::{Context, Handlebars, Helper, RenderContext, RenderError, Renderable};
-// Handlebars helper for navigation
+type StringMap = BTreeMap;
-pub fn previous(_h: &Helper, r: &Handlebars, rc: &mut RenderContext) -> Result<(), RenderError> {
- debug!("[fn]: previous (handlebars helper)");
+/// Target for `find_chapter`.
+enum Target {
+ Previous,
+ Next,
+}
+
+impl Target {
+ /// Returns target if found.
+ fn find(&self,
+ base_path: &String,
+ current_path: &String,
+ current_item: &StringMap,
+ previous_item: &StringMap,
+ ) -> Result