Skip to main content

aqc_text_engine_core/
engine.rs

1//! Text byte-stream engine.
2
3use aqc_file_engine_core::{
4    Engine, EngineOutput, EngineRequirement, FileEngine, Provenance, merged_reconcile,
5};
6
7use crate::reconcile::reconcile_text_file;
8use crate::requirement::{ResolvedTextFileRequirements, TextFileRequirements};
9
10#[derive(Debug, Default)]
11pub struct TextFileEngine;
12
13impl FileEngine<ResolvedTextFileRequirements> for TextFileEngine {
14    fn reconcile(
15        current_bytes: Option<&[u8]>,
16        resolved_requirements: &ResolvedTextFileRequirements,
17    ) -> EngineOutput {
18        reconcile_text_file(current_bytes, resolved_requirements)
19    }
20}
21
22impl Engine for TextFileEngine {
23    fn id(&self) -> &'static str {
24        crate::ENGINE_ID
25    }
26
27    fn reconcile(
28        &self,
29        current_bytes: Option<&[u8]>,
30        reqs: &[(Provenance, Box<dyn EngineRequirement>)],
31    ) -> EngineOutput {
32        merged_reconcile(
33            current_bytes,
34            reqs,
35            TextFileRequirements::merge,
36            <Self as FileEngine<ResolvedTextFileRequirements>>::reconcile,
37        )
38    }
39}