commands/seekcur: fix parser

This commit is contained in:
2025-12-08 01:03:11 +09:00
parent c915c67f08
commit 93afaf1bde

View File

@@ -31,9 +31,8 @@ impl CommandRequest<'_> for SeekCurRequest {
fn serialize(&self) -> String {
let time_str = match self.mode {
SeekMode::Absolute => format!("{}", self.time),
SeekMode::Relative if self.time >= 0.0 => format!("+{}", self.time),
SeekMode::Relative => format!("-{}", -self.time),
SeekMode::RelativeReverse => unimplemented!(), // TODO: should this happen?
SeekMode::Relative => format!("+{}", self.time),
SeekMode::RelativeReverse => format!("-{}", self.time),
};
format!("{} {}", Self::COMMAND, time_str)
@@ -45,6 +44,8 @@ impl CommandRequest<'_> for SeekCurRequest {
None => return Err(RequestParserError::UnexpectedEOF),
};
debug_assert!(parts.next().is_none());
// TODO: DRY
let (mode, time) = match time_raw {
t if t.starts_with('+') => (
@@ -54,8 +55,8 @@ impl CommandRequest<'_> for SeekCurRequest {
.map_err(|_| RequestParserError::SyntaxError(0, t.to_owned()))?,
),
t if t.starts_with('-') => (
SeekMode::Relative,
-t[1..]
SeekMode::RelativeReverse,
t[1..]
.parse::<TimeWithFractions>()
.map_err(|_| RequestParserError::SyntaxError(0, t.to_owned()))?,
),
@@ -66,7 +67,7 @@ impl CommandRequest<'_> for SeekCurRequest {
),
};
debug_assert!(parts.next().is_none());
debug_assert!(time >= 0.0);
Ok(SeekCurRequest { mode, time })
}