use logos::Lexer;
use crate::sfz::SfzToken;
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum Header {
Region,
Group,
Control,
Global,
Curve,
Effect,
Master,
Midi,
Sample,
}
impl Header {
pub(crate) fn parse_header(lex: &mut Lexer<SfzToken>) -> Option<Header> {
let slice = lex.slice().to_ascii_lowercase();
let name = &slice[1..slice.len() - 1];
match name {
"region" => Some(Header::Region),
"group" => Some(Header::Group),
"control" => Some(Header::Control),
"global" => Some(Header::Global),
"curve" => Some(Header::Curve),
"effect" => Some(Header::Effect),
"master" => Some(Header::Master),
"midi" => Some(Header::Midi),
"sample" => Some(Header::Sample),
_ => None,
}
}
}