use super::Template;
use crate::ast::{Functions, Variables};
use crate::{Result, SourceCode, Spreadsheet};
use serde::{Deserialize, Serialize};
use std::convert;
use std::path;
#[derive(Deserialize, Serialize)]
struct TemplateAtRest {
pub functions: Functions,
pub spreadsheet: Spreadsheet,
pub variables: Variables,
csv_line_number: usize,
}
impl convert::From<&Template<'_>> for TemplateAtRest {
fn from(template: &Template) -> Self {
TemplateAtRest {
functions: template.functions.clone(),
spreadsheet: template.spreadsheet.borrow().clone(),
variables: template.variables.clone(),
csv_line_number: template.csv_line_number,
}
}
}
impl Template<'_> {
pub fn write_object_file(&self, source_code: &SourceCode) -> Result<path::PathBuf> {
let object_code_filename = source_code.object_code_filename();
Ok(object_code_filename)
}
}