-
Notifications
You must be signed in to change notification settings - Fork 42
Closed
Description
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);
}
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels