use crate::contracts::{ContractConflict, RetrievedContract};
use saya_types::ClaimId;
use std::collections::HashSet;
use std::fmt::Write;
pub(super) const DISPUTE_MARKER: &str = "[disputed] ";
pub(super) fn disputed_ids(conflicts: &[ContractConflict]) -> HashSet<String> {
conflicts
.iter()
.flat_map(|c| c.claim_ids.iter().map(ClaimId::as_str).map(str::to_owned))
.collect()
}
pub(super) fn conflict_lines(contract: &RetrievedContract) -> String {
let mut out = String::new();
for conflict in &contract.conflicts {
let _ = writeln!(
out,
" conflict: {kind} is disputed by {n} claims",
kind = conflict.kind,
n = conflict.claim_ids.len(),
);
}
if !contract.conflicts.is_empty() {
let _ = writeln!(
out,
" do not choose between disputed claims silently; use the undisputed claims \
and say the disputed point is unresolved if it matters to the answer.",
);
}
out
}