From e1d7691ebd38e27b14f2549e01e59c08ea84d821 Mon Sep 17 00:00:00 2001 From: Minijackson Date: Sun, 28 Nov 2021 16:35:37 +0100 Subject: filters: relativize links when inside inline element --- src/filters.rs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/filters.rs b/src/filters.rs index 8dbe578..9e37371 100644 --- a/src/filters.rs +++ b/src/filters.rs @@ -1,6 +1,6 @@ use std::{collections::HashMap, path::Path}; -use log::trace; +use log::{trace, warn}; use pandoc_ast::MutVisitor; // If a link points to `./a/b/c.ext`, and a file in the output directory `pdbook/./a/b/c.html` @@ -13,10 +13,13 @@ pub struct RelativizeUrls<'a> { } impl<'a> pandoc_ast::MutVisitor for RelativizeUrls<'a> { - fn walk_inline(&mut self, inline: &mut pandoc_ast::Inline) { + fn visit_inline(&mut self, inline: &mut pandoc_ast::Inline) { let link = match inline { pandoc_ast::Inline::Link(_, _, target) => &mut target.0, - _ => return, + _ => { + self.walk_inline(inline); + return; + } }; if link.starts_with('#') || link.contains("://") { @@ -26,6 +29,7 @@ impl<'a> pandoc_ast::MutVisitor for RelativizeUrls<'a> { let link_path = self.source_dir.join(&link); if link_path.is_absolute() { + warn!("Link is absolute: '{}'", link_path.display()); return; } @@ -46,7 +50,13 @@ impl<'a> pandoc_ast::MutVisitor for RelativizeUrls<'a> { .expect("Path constructed from UTF-8 valid strings in not UTF-8 valid") .to_string(); - trace!("Relativizing link '{}' -> into '{}'", link_path.display(), link); + trace!( + "Relativizing link '{}' -> into '{}'", + link_path.display(), + link + ); + } else { + warn!("Could not relativize link '{}'", link_path.display()); } } } -- cgit v1.2.3