Found another weird case. Strange line endings prevent Orgize from parsing anything after them. If this occurs early in the org file, it can lead to substantial data loss.
fn main() {
// According to the spec, this is two headlines.
// org-element parses it as two headlines.
// Per discussion on https://github.com/PoiScript/orgize/issues/19 I could understand parsing it as three headlines instead.
// Orgize currently parses it as 1 headline, which is clearly wrong.
let org = orgize::Org::parse("* \n*\r\n* \n");
let headline_count = org.headlines().count();
println!("Orgize parsed {} headlines.", headline_count);
assert!(headline_count == 2 || headline_count == 3);
// Orgize seems unable to parse any further headlines after that one.
let org = orgize::Org::parse("* \n*\r\n* A\n* B\n* C\n* D\n* E\n* F\n* G\n* H\n* I\n* J\n* K\n");
let headline_count = org.headlines().count();
println!("Orgize parsed {} headlines.", headline_count);
assert!(headline_count == 12 || headline_count == 13);
// If written out, this causes data loss.
let mut fd = iobuffer::IoBuffer::new();
let mut s = String::default();
org.write_org(&mut fd).unwrap();
fd.read_to_string(&mut s).unwrap();
// Output: After parse -> emit: "* \n"
println!("After parse -> emit: {:?}", &s);
}
Found another weird case. Strange line endings prevent Orgize from parsing anything after them. If this occurs early in the org file, it can lead to substantial data loss.