From 5de47561b1e64dea14c144f9ed335f3600b66722 Mon Sep 17 00:00:00 2001 From: Luro02 <24826124+Luro02@users.noreply.github.com> Date: Thu, 6 Feb 2020 12:28:54 +0100 Subject: [PATCH] some minor improvements --- src/media_playlist.rs | 23 +++++++------- src/tags/basic/m3u.rs | 1 + src/tags/basic/version.rs | 12 ++++++-- .../master_playlist/i_frame_stream_inf.rs | 2 +- .../media_playlist/discontinuity_sequence.rs | 5 +++- src/utils.rs | 30 +++++++++++++++++-- 6 files changed, 56 insertions(+), 17 deletions(-) diff --git a/src/media_playlist.rs b/src/media_playlist.rs index ea9bf53..d43f5a7 100644 --- a/src/media_playlist.rs +++ b/src/media_playlist.rs @@ -419,17 +419,18 @@ mod tests { #[test] fn too_large_segment_duration_test() { - let playlist = r#" - #EXTM3U - #EXT-X-TARGETDURATION:8 - #EXT-X-VERSION:3 - #EXTINF:9.009, - http://media.example.com/first.ts - #EXTINF:9.509, - http://media.example.com/second.ts - #EXTINF:3.003, - http://media.example.com/third.ts - #EXT-X-ENDLIST"#; + let playlist = concat!( + "#EXTM3U\n", + "#EXT-X-TARGETDURATION:8\n", + "#EXT-X-VERSION:3\n", + "#EXTINF:9.009,\n", + "http://media.example.com/first.ts\n", + "#EXTINF:9.509,\n", + "http://media.example.com/second.ts\n", + "#EXTINF:3.003,\n", + "http://media.example.com/third.ts\n", + "#EXT-X-ENDLIST\n" + ); // Error (allowable segment duration = target duration = 8) assert!(playlist.parse::().is_err()); diff --git a/src/tags/basic/m3u.rs b/src/tags/basic/m3u.rs index b23032e..e2a8b78 100644 --- a/src/tags/basic/m3u.rs +++ b/src/tags/basic/m3u.rs @@ -53,6 +53,7 @@ mod test { #[test] fn test_parser() { assert_eq!("#EXTM3U".parse::().unwrap(), ExtM3u); + assert!("#EXTM2U".parse::().is_err()); } #[test] diff --git a/src/tags/basic/version.rs b/src/tags/basic/version.rs index be37b45..dc867e8 100644 --- a/src/tags/basic/version.rs +++ b/src/tags/basic/version.rs @@ -14,6 +14,7 @@ use crate::{Error, RequiredVersion}; /// # Examples /// /// Parsing from a [`str`]: +/// /// ``` /// # use hls_m3u8::tags::ExtXVersion; /// # @@ -25,7 +26,9 @@ use crate::{Error, RequiredVersion}; /// ); /// # Ok::<(), Box>(()) /// ``` +/// /// Converting to a [`str`]: +/// /// ``` /// # use hls_m3u8::tags::ExtXVersion; /// # @@ -49,6 +52,7 @@ impl ExtXVersion { /// Makes a new [`ExtXVersion`] tag. /// /// # Example + /// /// ``` /// # use hls_m3u8::tags::ExtXVersion; /// use hls_m3u8::types::ProtocolVersion; @@ -60,6 +64,7 @@ impl ExtXVersion { /// Returns the [`ProtocolVersion`] of the playlist, containing this tag. /// /// # Example + /// /// ``` /// # use hls_m3u8::tags::ExtXVersion; /// use hls_m3u8::types::ProtocolVersion; @@ -78,11 +83,14 @@ impl RequiredVersion for ExtXVersion { } impl fmt::Display for ExtXVersion { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { write!(f, "{}{}", Self::PREFIX, self.0) } + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + // + write!(f, "{}{}", Self::PREFIX, self.0) + } } impl Default for ExtXVersion { - fn default() -> Self { Self(ProtocolVersion::V1) } + fn default() -> Self { Self(ProtocolVersion::default()) } } impl From for ExtXVersion { diff --git a/src/tags/master_playlist/i_frame_stream_inf.rs b/src/tags/master_playlist/i_frame_stream_inf.rs index 1a7f749..0343564 100644 --- a/src/tags/master_playlist/i_frame_stream_inf.rs +++ b/src/tags/master_playlist/i_frame_stream_inf.rs @@ -27,8 +27,8 @@ pub struct ExtXIFrameStreamInf { stream_inf: StreamInf, } -#[derive(Default, Debug, Clone, PartialEq)] /// Builder for [`ExtXIFrameStreamInf`]. +#[derive(Default, Debug, Clone, PartialEq)] pub struct ExtXIFrameStreamInfBuilder { uri: Option, stream_inf: StreamInfBuilder, diff --git a/src/tags/media_playlist/discontinuity_sequence.rs b/src/tags/media_playlist/discontinuity_sequence.rs index 9869dee..d3ec395 100644 --- a/src/tags/media_playlist/discontinuity_sequence.rs +++ b/src/tags/media_playlist/discontinuity_sequence.rs @@ -67,7 +67,10 @@ impl RequiredVersion for ExtXDiscontinuitySequence { } impl fmt::Display for ExtXDiscontinuitySequence { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { write!(f, "{}{}", Self::PREFIX, self.0) } + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + // + write!(f, "{}{}", Self::PREFIX, self.0) + } } impl FromStr for ExtXDiscontinuitySequence { diff --git a/src/utils.rs b/src/utils.rs index e794544..5f11764 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -90,6 +90,7 @@ pub(crate) fn quote(value: T) -> String { /// it will remove it and return the rest of the input. /// /// # Error +/// /// This function will return `Error::MissingTag`, if the input doesn't start /// with the tag, that has been passed to this function. pub(crate) fn tag(input: &str, tag: T) -> crate::Result<&str> @@ -99,8 +100,8 @@ where if !input.trim().starts_with(tag.as_ref()) { return Err(Error::missing_tag(tag.as_ref(), input)); } - let result = input.split_at(tag.as_ref().len()).1; - Ok(result) + + Ok(input.trim().split_at(tag.as_ref().len()).1) } #[cfg(test)] @@ -145,5 +146,30 @@ mod tests { assert_eq!(input, "SampleString"); assert!(tag(input, "B").is_err()); + + assert_eq!( + tag( + concat!( + "\n #EXTM3U\n", + " #EXT-X-TARGETDURATION:5220\n", + " #EXTINF:0,\n", + " http://media.example.com/entire1.ts\n", + " #EXTINF:5220,\n", + " http://media.example.com/entire2.ts\n", + " #EXT-X-ENDLIST" + ), + "#EXTM3U" + ) + .unwrap(), + concat!( + "\n", + " #EXT-X-TARGETDURATION:5220\n", + " #EXTINF:0,\n", + " http://media.example.com/entire1.ts\n", + " #EXTINF:5220,\n", + " http://media.example.com/entire2.ts\n", + " #EXT-X-ENDLIST" + ) + ); } }