Convert intermediate objects into render objects.

This commit is contained in:
Tom Alexander
2023-10-27 12:47:12 -04:00
parent 4c59011389
commit 744d3e50fb
4 changed files with 77 additions and 3 deletions

View File

@@ -1,10 +1,36 @@
use std::path::Path;
use serde::Serialize;
use crate::blog_post::Heading;
use crate::config::Config;
use crate::error::CustomError;
use super::RenderObject;
#[derive(Debug, Serialize)]
#[serde(tag = "type")]
#[serde(rename = "heading")]
pub(crate) struct RenderHeading {
level: organic::types::HeadlineLevel,
title: Vec<RenderObject>,
}
impl RenderHeading {
pub(crate) fn new<D: AsRef<Path>, F: AsRef<Path>>(
config: &Config,
output_directory: D,
output_file: F,
heading: &Heading,
) -> Result<RenderHeading, CustomError> {
let title = heading
.title
.iter()
.map(|obj| RenderObject::new(config, &output_directory, &output_file, obj))
.collect::<Result<Vec<_>, _>>()?;
Ok(RenderHeading {
level: heading.level,
title,
})
}
}

View File

@@ -1,5 +1,22 @@
use std::path::Path;
use serde::Serialize;
use crate::blog_post::Object;
use crate::config::Config;
use crate::error::CustomError;
#[derive(Debug, Serialize)]
#[serde(untagged)]
pub(crate) enum RenderObject {}
impl RenderObject {
pub(crate) fn new<D: AsRef<Path>, F: AsRef<Path>>(
config: &Config,
output_directory: D,
output_file: F,
section: &Object,
) -> Result<RenderObject, CustomError> {
todo!()
}
}