use std::cell::RefCell;
use std::rc::Weak;
use super::model::Model;
use super::processor_execution_vars::ProcessorExecutionVars;
use super::{SkipBody, TemplateModelController};
pub struct GatheringModelExecutionState {
inner_model: Model,
processor_execution_vars: ProcessorExecutionVars,
model_controller: Weak<RefCell<TemplateModelController>>,
build_time_skip_body: SkipBody,
build_time_skip_close_tag: bool,
}
impl GatheringModelExecutionState {
pub(crate) fn new(
inner_model: Model,
processor_execution_vars: ProcessorExecutionVars,
model_controller: Weak<RefCell<TemplateModelController>>,
build_time_skip_body: SkipBody,
build_time_skip_close_tag: bool,
) -> Self {
Self {
inner_model,
processor_execution_vars,
model_controller,
build_time_skip_body,
build_time_skip_close_tag,
}
}
pub(crate) const fn inner_model(&self) -> &Model {
&self.inner_model
}
pub(crate) fn initialize_processor_execution_vars(&self) -> ProcessorExecutionVars {
self.processor_execution_vars.clone_vars()
}
pub(crate) fn reset_gathered_skip_flags(&self) {
if let Some(controller) = self.model_controller.upgrade() {
controller
.borrow_mut()
.skip(self.build_time_skip_body, self.build_time_skip_close_tag);
}
}
}