Skip to main content

semdiff_differ_text/
report_summary.rs

1use crate::{TextDiff, TextDiffReporter, is_text_file};
2use semdiff_core::fs::FileLeaf;
3use semdiff_core::{DetailReporter, MayUnsupported};
4use semdiff_output::summary::SummaryReport;
5use std::convert;
6
7impl<W> DetailReporter<TextDiff, FileLeaf, SummaryReport<W>> for TextDiffReporter {
8    type Error = convert::Infallible;
9
10    fn report_unchanged(
11        &self,
12        _name: &str,
13        _diff: &TextDiff,
14        reporter: &SummaryReport<W>,
15    ) -> Result<MayUnsupported<()>, Self::Error> {
16        reporter.increment_unchanged();
17        Ok(MayUnsupported::Ok(()))
18    }
19
20    fn report_modified(
21        &self,
22        _name: &str,
23        _diff: &TextDiff,
24        reporter: &SummaryReport<W>,
25    ) -> Result<MayUnsupported<()>, Self::Error> {
26        reporter.increment_modified();
27        Ok(MayUnsupported::Ok(()))
28    }
29
30    fn report_added(
31        &self,
32        _name: &str,
33        data: &FileLeaf,
34        reporter: &SummaryReport<W>,
35    ) -> Result<MayUnsupported<()>, Self::Error> {
36        if !is_text_file(&data.kind, &data.content) {
37            return Ok(MayUnsupported::Unsupported);
38        }
39        reporter.increment_added();
40        Ok(MayUnsupported::Ok(()))
41    }
42
43    fn report_deleted(
44        &self,
45        _name: &str,
46        data: &FileLeaf,
47        reporter: &SummaryReport<W>,
48    ) -> Result<MayUnsupported<()>, Self::Error> {
49        if !is_text_file(&data.kind, &data.content) {
50            return Ok(MayUnsupported::Unsupported);
51        }
52        reporter.increment_deleted();
53        Ok(MayUnsupported::Ok(()))
54    }
55}