///|
pub fn export_bundle(case : BenchmarkCase, cutoffs~ : Array[Int]) -> String {
let result = run_benchmark_case(case, cutoffs~)
let manifest = render_benchmark_manifest(case)
let qrels = render_qrels_tsv(case.qrels)
let run = render_run_tsv(case.run)
let builder = StringBuilder()
builder.write_string("manifest\n========\n\{manifest}\n\n")
builder.write_string("report\n======\n\{render_benchmark_result(result)}\n\n")
builder.write_string("qrels.tsv\n=========\n\{qrels}\n\n")
builder.write_string("run.tsv\n=======\n\{run}\n")
builder.to_string()
}
///|
pub fn export_bundle_json(
case : BenchmarkCase,
cutoffs~ : Array[Int],
) -> String {
let result = run_benchmark_case(case, cutoffs~)
let manifest = render_benchmark_manifest(case)
let escaped = manifest.replace_all(old="\"", new="\\\"")
"{\"manifest\":\"\{escaped}\",\"result\":\{ToJson::to_json(result).stringify()}}"
}
///|
pub fn export_report_files(report : BenchmarkReport) -> Map[String, String] {
let files : Map[String, String] = Map([])
files["report.md"] = render_markdown_report(report)
files["report.csv"] = render_csv_report(report)
files["report.json"] = render_json_report(report)
files["report.jsonl"] = render_json_lines_report(report)
files["report.html"] = render_html_report(report)
files
}
///|
pub fn export_report_index(report : BenchmarkReport) -> String {
let files = export_report_files(report)
let rows : Array[String] = ["# MoonRAGBench exports", ""]
for name, content in files {
rows.push("- '\{name}': \{content.length()} bytes")
}
rows.join("\n")
}
///|
pub fn bundle_is_reproducible(
case : BenchmarkCase,
cutoffs~ : Array[Int],
) -> Bool {
export_bundle(case, cutoffs~) == export_bundle(case, cutoffs~)
}