From 20093d7683932875356e6900dfe1acb8a7cd4811 Mon Sep 17 00:00:00 2001 From: p6nj Date: Mon, 4 Nov 2024 18:01:56 -0500 Subject: [PATCH 1/2] simplify space parser --- src/bng/score.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bng/score.rs b/src/bng/score.rs index 7d9be29..aac798e 100644 --- a/src/bng/score.rs +++ b/src/bng/score.rs @@ -126,8 +126,8 @@ impl<'de> Deserialize<'de> for Atoms { deserializer.deserialize_struct("NotesSheet", FIELDS, NotesSheetVisitor)?; let x = all_consuming(terminated( many0(preceded(many0(one_of(" \t\r")), flat_atom_parser(¬es))), - many0(alt((char('\t'), char(' '), char('\n'), char('\r')))), - ))(&sheet) + many0(one_of(" \t\r")), + ))(dbg!(&sheet)) .map_err(nom_err_message) .map_err(AtomsSerializeError::Parsing) .map_err(de::Error::custom) From a06e0a1d02e95959cb885c8cfef158ae736a6a56 Mon Sep 17 00:00:00 2001 From: p6nj Date: Mon, 4 Nov 2024 18:06:18 -0500 Subject: [PATCH 2/2] simplify space parser --- src/bng/score.rs | 5 +++-- src/bng/score/lex/lexer.rs | 6 +++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/bng/score.rs b/src/bng/score.rs index aac798e..d283760 100644 --- a/src/bng/score.rs +++ b/src/bng/score.rs @@ -124,9 +124,10 @@ impl<'de> Deserialize<'de> for Atoms { const FIELDS: &[&str] = &["notes", "sheet"]; let NotesSheet { notes, sheet } = deserializer.deserialize_struct("NotesSheet", FIELDS, NotesSheetVisitor)?; + let maybe_yml_str_space = || many0(one_of(" \t\r")); let x = all_consuming(terminated( - many0(preceded(many0(one_of(" \t\r")), flat_atom_parser(¬es))), - many0(one_of(" \t\r")), + many0(preceded(maybe_yml_str_space(), flat_atom_parser(¬es))), + maybe_yml_str_space(), ))(dbg!(&sheet)) .map_err(nom_err_message) .map_err(AtomsSerializeError::Parsing) diff --git a/src/bng/score/lex/lexer.rs b/src/bng/score/lex/lexer.rs index 762100e..1933b43 100644 --- a/src/bng/score/lex/lexer.rs +++ b/src/bng/score/lex/lexer.rs @@ -40,7 +40,11 @@ impl Parse for Modifier { pub fn flat_atom_parser(notes: &str) -> impl Parser<&str, FlatAtom, nom::error::Error<&str>> { alt(( - map_res(map_opt(one_of(notes), |c| notes.find(c)), u8::try_from).map(FlatAtom::Note), + map_res( + map_opt(one_of(notes), |c| notes.find(dbg!(c))), + u8::try_from, + ) + .map(FlatAtom::Note), value(FlatAtom::Rest, char(Atom::REST)), value(FlatAtom::StartHere, char(Atom::START_HERE)), preceded(char(Atom::MODIFIER), Modifier::parse).map(FlatAtom::Modifier),