Generate render link based on path to file.
This commit is contained in:
parent
3e952ef0f4
commit
ff478253c3
@ -2,6 +2,7 @@ use serde::Serialize;
|
||||
|
||||
use super::macros::render;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::context::macros::push_file;
|
||||
use crate::context::RenderDocumentElement;
|
||||
use crate::context::RenderRealFootnoteDefinition;
|
||||
use crate::error::CustomError;
|
||||
@ -164,6 +165,7 @@ render!(
|
||||
.get_index_page()
|
||||
.ok_or_else(|| format!("Blog post {} needs an index page.", original.original.id))?;
|
||||
|
||||
push_file!(render_context, &index_page.src, {
|
||||
let title = index_page.title.clone();
|
||||
|
||||
let children = index_page
|
||||
@ -191,6 +193,7 @@ render!(
|
||||
children,
|
||||
footnotes,
|
||||
})
|
||||
})
|
||||
}
|
||||
);
|
||||
|
||||
|
@ -1,3 +1,4 @@
|
||||
use std::path::Path;
|
||||
use std::path::PathBuf;
|
||||
|
||||
use crate::error::CustomError;
|
||||
@ -33,4 +34,13 @@ impl DependencyManager {
|
||||
.expect("Popped more files off the dependency manager file stack than exist.");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub(crate) fn get_current_folder(&self) -> Result<&Path, CustomError> {
|
||||
Ok(self
|
||||
.file_stack
|
||||
.last()
|
||||
.ok_or("No current file")?
|
||||
.parent()
|
||||
.ok_or("Current file was not in a directory")?)
|
||||
}
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ use super::render_context::RenderContext;
|
||||
use super::GlobalSettings;
|
||||
use super::PageHeader;
|
||||
use super::RenderDocumentElement;
|
||||
use crate::context::macros::push_file;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::get_web_path;
|
||||
use crate::intermediate::IPage;
|
||||
@ -28,6 +29,7 @@ pub(crate) struct RenderPage {
|
||||
}
|
||||
|
||||
render!(RenderPage, IPage, original, render_context, {
|
||||
push_file!(render_context, &original.src, {
|
||||
let css_files = vec![
|
||||
get_web_path(
|
||||
render_context.config,
|
||||
@ -99,4 +101,5 @@ render!(RenderPage, IPage, original, render_context, {
|
||||
footnotes,
|
||||
};
|
||||
Ok(ret)
|
||||
})
|
||||
});
|
||||
|
@ -143,7 +143,29 @@ impl LinkTarget {
|
||||
.unwrap_or_default(),
|
||||
target_id
|
||||
))),
|
||||
LinkTarget::Image { src, .. } => Ok(Some(src.clone())),
|
||||
LinkTarget::Image { src, .. } => {
|
||||
let path_to_file = render_context
|
||||
.dependency_manager
|
||||
.lock()
|
||||
.unwrap()
|
||||
.get_current_folder()?
|
||||
.join(src)
|
||||
.canonicalize()?;
|
||||
let input_root_directory = render_context.config.get_root_directory();
|
||||
let relative_path_to_file = path_to_file.strip_prefix(input_root_directory)?;
|
||||
dbg!(input_root_directory);
|
||||
dbg!(&path_to_file);
|
||||
dbg!(relative_path_to_file);
|
||||
let web_path = get_web_path(
|
||||
render_context.config,
|
||||
render_context.output_root_directory,
|
||||
render_context.output_file,
|
||||
relative_path_to_file,
|
||||
)?;
|
||||
dbg!(&web_path);
|
||||
// TODO: Record interest in copying the file to output.
|
||||
Ok(Some(web_path))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user