diff --git a/src/context/blog_post_page.rs b/src/context/blog_post_page.rs index 2a764b3..9dce558 100644 --- a/src/context/blog_post_page.rs +++ b/src/context/blog_post_page.rs @@ -1,6 +1,7 @@ use serde::Serialize; use super::render_context::RenderContext; +use crate::context::macros::push_file; use crate::error::CustomError; use crate::intermediate::get_web_path; use crate::intermediate::BlogPost; @@ -49,12 +50,7 @@ render!( original, render_context, { - render_context - .dependency_manager - .lock() - .unwrap() - .push_file(&original.page.src)?; - let ret = (|| { + push_file!(render_context, &original.page.src, { let css_files = vec![ get_web_path( render_context.config, @@ -127,12 +123,6 @@ render!( footnotes, }; Ok(ret) - })(); - render_context - .dependency_manager - .lock() - .unwrap() - .pop_file()?; - ret + }) } ); diff --git a/src/context/macros.rs b/src/context/macros.rs index 9635f8e..e4a3431 100644 --- a/src/context/macros.rs +++ b/src/context/macros.rs @@ -35,3 +35,23 @@ macro_rules! rnoop { } pub(crate) use rnoop; + +/// Push a file onto the render DependencyManager's file stack while inside the code block. +macro_rules! push_file { + ($render_context:ident, $path:expr, $body:tt) => {{ + $render_context + .dependency_manager + .lock() + .unwrap() + .push_file($path)?; + let ret = (|| $body)(); + $render_context + .dependency_manager + .lock() + .unwrap() + .pop_file()?; + ret + }}; +} + +pub(crate) use push_file;