yarp-cli 0.2.0

Prune Pi command output and archive tool calls locally
Documentation
use super::classify::body;
use super::evidence::EvidenceClass;

#[must_use]
pub fn classify(line: &[u8]) -> EvidenceClass {
    let line = body(line);
    if line.starts_with(b"diff --git ")
        || line.starts_with(b"index ")
        || line.starts_with(b"--- ")
        || line.starts_with(b"+++ ")
        || line.starts_with(b"@@ ")
        || line.starts_with(b"Binary files ")
        || line.starts_with(b"new file mode ")
        || line.starts_with(b"deleted file mode ")
        || line.starts_with(b"rename from ")
        || line.starts_with(b"rename to ")
    {
        EvidenceClass::Structure
    } else if (line.starts_with(b"+") && !line.starts_with(b"+++"))
        || (line.starts_with(b"-") && !line.starts_with(b"---"))
    {
        EvidenceClass::Example
    } else {
        EvidenceClass::Noise
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn unchanged_source_terms_are_not_diff_diagnostics() {
        assert_eq!(
            classify(b"     const error = event.error;\n"),
            EvidenceClass::Noise
        );
        assert_eq!(
            classify(b"+    throw new Error(\"boom\");\n"),
            EvidenceClass::Example
        );
    }
}