Compare commits

..

2 commits

Author SHA1 Message Date
2176f5dd89
rename serde de (conflicts with local) 2024-11-07 20:24:00 -05:00
9b2ad49f3b
rename serialization file (conflicts with serde) 2024-11-07 20:19:14 -05:00
3 changed files with 23 additions and 11 deletions

View file

@ -19,17 +19,17 @@ use nom::{
#[cfg(debug_assertions)] #[cfg(debug_assertions)]
use serde::Serialize; use serde::Serialize;
use serde::{ use serde::{
de::{self, Visitor}, de::{self as serde_de, Visitor},
Deserialize, Deserialize,
}; };
use strum::EnumDiscriminants; use strum::EnumDiscriminants;
use thiserror::Error; use thiserror::Error;
use utils::{inflate, InflateError}; use utils::{inflate, InflateError};
mod de;
mod lex; mod lex;
mod ser;
mod utils; mod utils;
pub use ser::*; pub use de::*;
use super::Expression as Instruction; use super::Expression as Instruction;

View file

@ -1,7 +1,23 @@
use de::Deserializer; use derive_new::new;
use nom::Parser; use nom::{
character::complete::one_of,
combinator::all_consuming,
multi::many0,
sequence::{preceded, terminated},
Parser,
};
use serde::{
de::{self, Deserializer, Visitor},
Deserialize,
};
use thiserror::Error;
use super::*; use crate::bng::score::lex::lexer::flat_atom_parser;
use super::{
utils::{inflate, InflateError},
Atoms, FlatAtom,
};
#[derive(Debug, Error)] #[derive(Debug, Error)]
enum AtomsSerializeError { enum AtomsSerializeError {

View file

@ -40,11 +40,7 @@ impl Parse for Modifier {
pub fn flat_atom_parser(notes: &str) -> impl Parser<&str, FlatAtom, nom::error::Error<&str>> { pub fn flat_atom_parser(notes: &str) -> impl Parser<&str, FlatAtom, nom::error::Error<&str>> {
alt(( alt((
map_res( map_res(map_opt(one_of(notes), |c| notes.find(c)), u8::try_from).map(FlatAtom::Note),
map_opt(one_of(notes), |c| notes.find(dbg!(c))),
u8::try_from,
)
.map(FlatAtom::Note),
value(FlatAtom::Rest, char(Atom::REST)), value(FlatAtom::Rest, char(Atom::REST)),
value(FlatAtom::StartHere, char(Atom::START_HERE)), value(FlatAtom::StartHere, char(Atom::START_HERE)),
preceded(char(Atom::MODIFIER), Modifier::parse).map(FlatAtom::Modifier), preceded(char(Atom::MODIFIER), Modifier::parse).map(FlatAtom::Modifier),