From 89ed7fc4a2fa9266c799144dbd09ed4197bcc58c Mon Sep 17 00:00:00 2001 From: David Bjerremose Date: Tue, 31 Oct 2023 16:12:55 +0100 Subject: [PATCH 1/6] feat: make parse_format_string pub --- src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib.rs b/src/lib.rs index fd22a3d..21d2530 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -24,7 +24,7 @@ mod format; mod parser; pub use format::Printf; -use parser::{parse_format_string, FormatElement}; +pub use parser::{parse_format_string, FormatElement}; pub use parser::{ConversionSpecifier, ConversionType, NumericParam}; /// Error type From 5542769caa1fad43ccde00e802bb6089f164a0a5 Mon Sep 17 00:00:00 2001 From: David Bjerremose Date: Tue, 31 Oct 2023 16:13:30 +0100 Subject: [PATCH 2/6] feat: also pub the types --- src/parser.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/parser.rs b/src/parser.rs index e17e569..f23f839 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -1,7 +1,7 @@ use crate::{PrintfError, Result}; #[derive(Debug, Clone)] -pub(crate) enum FormatElement { +pub enum FormatElement { Verbatim(String), Format(ConversionSpecifier), } @@ -69,7 +69,7 @@ pub enum ConversionType { PercentSign, } -pub(crate) fn parse_format_string(fmt: &str) -> Result> { +pub fn parse_format_string(fmt: &str) -> Result> { // find the first % let mut res = Vec::new(); let parts: Vec<&str> = fmt.splitn(2, '%').collect(); From 2e8c4db0ca988934eed467139c71c1c92c076e36 Mon Sep 17 00:00:00 2001 From: David Bjerremose Date: Wed, 15 Nov 2023 23:04:55 +0100 Subject: [PATCH 3/6] docs: add docs for parse_format_string --- src/parser.rs | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/parser.rs b/src/parser.rs index f23f839..9093fc4 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -69,6 +69,30 @@ pub enum ConversionType { PercentSign, } +/// Parses a string to a vector of [FormatElement] +/// +/// Takes a printf-style format string `fmt` +/// +/// use sprintf::{parse_format_string, FormatElement, ConversionType, ConversionSpecifier}; +/// let fmt = "Hello %#06x"; +/// let parsed = parse_format_string(fmt).unwrap(); +/// assert_eq!( +/// parsed, +/// vec![ +/// FormatElement::Verbatim("Hello ".to_owned()), +/// FormatElement::Format(ConversionSpecifier { +/// alt_form: true, +/// zero_pad: false, +/// left_adj: false, +/// space_sign: false, +/// force_sign: false, +/// width: NumericParam::Literal(6), +/// precision: NumericParam::Literal(6), +/// conversion_type: ConversionType::HexIntLower, +/// }), +/// ] +/// ); +/// pub fn parse_format_string(fmt: &str) -> Result> { // find the first % let mut res = Vec::new(); From cb204d6b3eeb1e2080f5b65695eca73c6ab6b8c8 Mon Sep 17 00:00:00 2001 From: David Bjerremose Date: Wed, 15 Nov 2023 23:08:03 +0100 Subject: [PATCH 4/6] docs: align doc comment vec --- src/parser.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/parser.rs b/src/parser.rs index 9093fc4..6df0b1a 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -90,7 +90,7 @@ pub enum ConversionType { /// precision: NumericParam::Literal(6), /// conversion_type: ConversionType::HexIntLower, /// }), -/// ] +/// ] /// ); /// pub fn parse_format_string(fmt: &str) -> Result> { From dc56dae5b0f76b0a63e40ea47b98d03346302b16 Mon Sep 17 00:00:00 2001 From: David Alexander Bjerremose Date: Mon, 11 Dec 2023 14:31:42 +0100 Subject: [PATCH 5/6] docs: properly updated doc comment --- src/parser.rs | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/src/parser.rs b/src/parser.rs index 6df0b1a..55950b4 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -77,21 +77,22 @@ pub enum ConversionType { /// let fmt = "Hello %#06x"; /// let parsed = parse_format_string(fmt).unwrap(); /// assert_eq!( -/// parsed, -/// vec![ -/// FormatElement::Verbatim("Hello ".to_owned()), -/// FormatElement::Format(ConversionSpecifier { -/// alt_form: true, -/// zero_pad: false, -/// left_adj: false, -/// space_sign: false, -/// force_sign: false, -/// width: NumericParam::Literal(6), -/// precision: NumericParam::Literal(6), -/// conversion_type: ConversionType::HexIntLower, -/// }), -/// ] -/// ); +/// parsed, +/// vec![ +/// FormatElement::Verbatim("Hello ".to_owned()), +/// FormatElement::Format(ConversionSpecifier { +/// alt_form: true, +/// zero_pad: true, +/// left_adj: false, +/// space_sign: false, +/// force_sign: false, +/// width: NumericParam::Literal(6), +/// precision: NumericParam::Literal(6), +/// conversion_type: ConversionType::HexIntLower, +/// }), +/// ] +/// ); +/// /// pub fn parse_format_string(fmt: &str) -> Result> { // find the first % From 2cc9da97d24027088a35b2a8e082fc3e7c6f2db5 Mon Sep 17 00:00:00 2001 From: David Bjerremose Date: Mon, 11 Dec 2023 15:20:50 +0100 Subject: [PATCH 6/6] doc: add Eq, split doc comment --- src/parser.rs | 34 ++++++++++++++-------------------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/src/parser.rs b/src/parser.rs index 55950b4..74cdb5d 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -1,13 +1,13 @@ use crate::{PrintfError, Result}; -#[derive(Debug, Clone)] +#[derive(Debug, Clone, PartialEq, Eq)] pub enum FormatElement { Verbatim(String), Format(ConversionSpecifier), } /// Parsed printf conversion specifier -#[derive(Debug, Clone, Copy)] +#[derive(Debug, Clone, Copy, PartialEq, Eq)] pub struct ConversionSpecifier { /// flag `#`: use `0x`, etc? pub alt_form: bool, @@ -73,26 +73,20 @@ pub enum ConversionType { /// /// Takes a printf-style format string `fmt` /// -/// use sprintf::{parse_format_string, FormatElement, ConversionType, ConversionSpecifier}; +/// use sprintf::{parse_format_string, FormatElement, ConversionType, ConversionSpecifier, NumericParam}; /// let fmt = "Hello %#06x"; /// let parsed = parse_format_string(fmt).unwrap(); -/// assert_eq!( -/// parsed, -/// vec![ -/// FormatElement::Verbatim("Hello ".to_owned()), -/// FormatElement::Format(ConversionSpecifier { -/// alt_form: true, -/// zero_pad: true, -/// left_adj: false, -/// space_sign: false, -/// force_sign: false, -/// width: NumericParam::Literal(6), -/// precision: NumericParam::Literal(6), -/// conversion_type: ConversionType::HexIntLower, -/// }), -/// ] -/// ); -/// +/// assert_eq!(parsed[0], FormatElement::Verbatim("Hello ".to_owned())); +/// assert_eq!(parsed[1], FormatElement::Format(ConversionSpecifier { +/// alt_form: true, +/// zero_pad: true, +/// left_adj: false, +/// space_sign: false, +/// force_sign: false, +/// width: NumericParam::Literal(6), +/// precision: NumericParam::Literal(6), +/// conversion_type: ConversionType::HexIntLower, +/// })); /// pub fn parse_format_string(fmt: &str) -> Result> { // find the first %