Skip to content

Commit

Permalink
fix whitespace parsing
Browse files Browse the repository at this point in the history
  • Loading branch information
rfuzzo committed Dec 13, 2023
1 parent eeaa417 commit 9e627dc
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 6 deletions.
8 changes: 6 additions & 2 deletions src/parser.rs
Original file line number Diff line number Diff line change
Expand Up @@ -303,7 +303,7 @@ pub fn parse_expressions<R: Read + BufRead>(mut reader: R) -> Result<Vec<Express
current_buffer += &(b as char).to_string();
if current_buffer.ends_with(".archive ") || current_buffer.ends_with(".archive\n") {
is_token = false;
buffers.push(current_buffer.to_owned());
buffers.push(current_buffer[..current_buffer.len() - 1].to_owned());
current_buffer.clear();
}
} else {
Expand All @@ -326,7 +326,11 @@ pub fn parse_expressions<R: Read + BufRead>(mut reader: R) -> Result<Vec<Express

let mut expressions: Vec<Expression> = vec![];
for str in buffers {
let expr = parse_expression(str.trim())?;
let trimmed = str.trim();
if trimmed.is_empty() {
continue;
}
let expr = parse_expression(trimmed)?;
expressions.push(expr);
}

Expand Down
9 changes: 5 additions & 4 deletions tests/unit_parser_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,6 @@ mod unit_tests {
}
}

/*
#[test]
fn test_split_note() {
let input = "[Note]\na b c.archive\nb.archive";
Expand All @@ -98,7 +97,7 @@ mod unit_tests {

let names = ["a b c.archive", "b.archive"];
if let Rule::Note(n) = rule {
assert_eq!(3, n.expressions.len());
assert_eq!(2, n.expressions.len());
for (i, e) in n.expressions.iter().enumerate() {
if let Expression::Atomic(a) = e {
assert_eq!(names[i], a.get_item().as_str());
Expand All @@ -110,14 +109,16 @@ mod unit_tests {
#[test]
fn test_nested_note() {
let input = "[Note]\n[ALL a.archive [NOT b.archive]]";
let reader = BufReader::new(input.as_bytes());
let reader = Cursor::new(input.as_bytes());

let rules = parse_rules_from_reader(reader).expect("Failed to parse rule");
assert_eq!(1, rules.len());
let rule = rules.first().expect("No rules found");
assert_eq!("", rule.get_comment());
if let Rule::Note(n) = rule {
assert_eq!(1, n.expressions.len());
}
}
*/

////////////////////////////////////////////////////////////////////////
// ORDER
Expand Down

0 comments on commit 9e627dc

Please sign in to comment.