///|
fn decision_text(decision : MeasurementDecision) -> String {
match decision {
Pass => "PASS"
Warn => "WARN"
Fail => "FAIL"
}
}
///|
pub fn render_markdown_report(report : MeasurementReport) -> String {
let out = StringBuilder()
out.write_string("# Visual Caliper Report\n\n")
out.write_string("Part: ")
out.write_string(report.part_id)
out.write_string("\n\n")
out.write_string("| Item | Value | Deviation | Decision |\n")
out.write_string("| --- | ---: | ---: | --- |\n")
for m in report.measurements {
out.write_string("| ")
out.write_string(m.name)
out.write_string(" | ")
out.write_string(m.value.to_string())
out.write_string(" ")
out.write_string(m.unit)
out.write_string(" | ")
out.write_string(m.deviation.to_string())
out.write_string(" ")
out.write_string(m.unit)
out.write_string(" | ")
out.write_string(decision_text(m.decision))
out.write_string(" |\n")
}
if !report.notes.is_empty() {
out.write_string("\n## Notes\n")
for note in report.notes {
out.write_string("- ")
out.write_string(note)
out.write_string("\n")
}
}
out.to_string()
}