Implement a macro for pushing the directory.

This commit is contained in:
Tom Alexander 2025-02-08 18:13:55 -05:00
parent 4e0f66401d
commit 3e952ef0f4
Signed by: talexander
GPG Key ID: D3A179C9A53C0EDE
2 changed files with 23 additions and 13 deletions

View File

@ -1,6 +1,7 @@
use serde::Serialize; use serde::Serialize;
use super::render_context::RenderContext; use super::render_context::RenderContext;
use crate::context::macros::push_file;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::get_web_path; use crate::intermediate::get_web_path;
use crate::intermediate::BlogPost; use crate::intermediate::BlogPost;
@ -49,12 +50,7 @@ render!(
original, original,
render_context, render_context,
{ {
render_context push_file!(render_context, &original.page.src, {
.dependency_manager
.lock()
.unwrap()
.push_file(&original.page.src)?;
let ret = (|| {
let css_files = vec![ let css_files = vec![
get_web_path( get_web_path(
render_context.config, render_context.config,
@ -127,12 +123,6 @@ render!(
footnotes, footnotes,
}; };
Ok(ret) Ok(ret)
})(); })
render_context
.dependency_manager
.lock()
.unwrap()
.pop_file()?;
ret
} }
); );

View File

@ -35,3 +35,23 @@ macro_rules! rnoop {
} }
pub(crate) use 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;