natter/src/context/object.rs

42 lines
1.0 KiB
Rust
Raw Normal View History

use std::path::Path;
2023-10-24 00:04:44 -04:00
use serde::Serialize;
use crate::config::Config;
use crate::error::CustomError;
use crate::intermediate::IObject;
2023-10-27 13:01:45 -04:00
use super::plain_text::RenderPlainText;
2023-10-27 14:54:54 -04:00
use super::target::RenderTarget;
2023-10-27 13:01:45 -04:00
2023-10-24 00:04:44 -04:00
#[derive(Debug, Serialize)]
#[serde(untagged)]
2023-10-27 13:01:45 -04:00
pub(crate) enum RenderObject {
PlainText(RenderPlainText),
2023-10-27 14:54:54 -04:00
Target(RenderTarget),
2023-10-27 13:01:45 -04:00
}
impl RenderObject {
pub(crate) fn new<D: AsRef<Path>, F: AsRef<Path>>(
config: &Config,
output_directory: D,
output_file: F,
object: &IObject,
) -> Result<RenderObject, CustomError> {
2023-10-27 13:01:45 -04:00
match object {
IObject::PlainText(inner) => Ok(RenderObject::PlainText(RenderPlainText::new(
2023-10-27 13:01:45 -04:00
config,
output_directory,
output_file,
inner,
)?)),
2023-10-27 14:54:54 -04:00
IObject::Target(inner) => Ok(RenderObject::Target(RenderTarget::new(
config,
output_directory,
output_file,
inner,
)?)),
2023-10-27 13:01:45 -04:00
}
}
}