wip: adding edn parsing to mixer track

This commit is contained in:
🪞👃🪞 2024-08-09 11:23:12 +03:00
parent 10f191282e
commit a819e042c7
9 changed files with 89 additions and 74 deletions

View file

@ -11,3 +11,4 @@ toml = "0.8.12"
better-panic = "0.3.0"
midly = "0.5"
clap = { version = "4.5.4", features = [ "derive" ] }
clojure-reader = "0.1.0"

View file

@ -7,6 +7,7 @@ pub use std::collections::BTreeMap;
pub use crossterm::event::{Event, KeyEvent, KeyCode, KeyModifiers};
pub use ratatui::prelude::{Rect, Style, Color, Buffer};
pub use ratatui::style::Stylize;
pub use clojure_reader::{edn::{read, Edn}, error::Error as EdnError};
pub(crate) use std::error::Error;
pub(crate) use std::io::{stdout};
@ -42,6 +43,18 @@ submod! {
exit render handle
}
/// EDN parsing helper.
#[macro_export] macro_rules! edn {
($edn:ident { $($pat:pat => $expr:expr),* $(,)? }) => {
match $edn { $($pat => $expr),* }
};
($edn:ident in $args:ident { $($pat:pat => $expr:expr),* $(,)? }) => {
for $edn in $args {
edn!($edn { $($pat => $expr),* })
}
};
}
/// Standard result type.
pub type Usually<T> = Result<T, Box<dyn Error>>;