use differens_correlate::{CorrelateOptions, FileChanges, correlate};
use differens_tiers::{SourcePresence, diff_with_tier};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let function = "export function formatPrice(price: number) { return price.toFixed(2); }\n";
let inputs = [
("utils.ts", format!("{function}export const TAX_RATE = 0.08;\n"),
"export const TAX_RATE = 0.08;\n".to_owned()),
("pricing.ts", "export const CURRENCY = \"USD\";\n".to_owned(),
format!("export const CURRENCY = \"USD\";\n{function}")),
];
let files: Vec<_> = inputs.into_iter().map(|(path, old, new)| {
let diff = diff_with_tier(old.as_bytes(), new.as_bytes(), path, path, SourcePresence::default());
FileChanges { file_path: path.to_owned(), actions: diff.changes }
}).collect();
let moves = correlate(&files, CorrelateOptions::default());
for movement in moves {
println!("{} {} -> {} edited={} similarity={:.2}",
movement.node.label.as_deref().unwrap_or(""),
movement.from_file, movement.to_file, movement.modified, movement.similarity);
}
Ok(())
}