///|
pub fn merge_documents(
left : VcfDocument,
right : VcfDocument,
) -> VcfDocument raise ParseError {
guard left.header == right.header else {
raise ParseError::InvalidHeader(
line=0,
column=1,
message="cannot merge VCF documents with incompatible headers",
)
}
let records : Array[VcfRecord] = []
for record in left.records {
records.push(record)
}
for record in right.records {
let key = record_key(record)
if !contains_record_key(records, key) {
records.push(record)
}
}
{ header: left.header, records }
}
///|
fn contains_record_key(records : Array[VcfRecord], wanted : String) -> Bool {
for record in records {
if record_key(record) == wanted {
return true
}
}
false
}