Skip to content

Commit ed5440c

Browse files
committed
Get rid of strum dependency
1 parent bb11021 commit ed5440c

File tree

4 files changed

+82
-117
lines changed

4 files changed

+82
-117
lines changed

spdlog-internal/Cargo.toml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,4 @@ workspace = true
1414

1515
[dependencies]
1616
nom = "8.0.0"
17-
strum = { version = "0.27.0", features = ["derive"] }
18-
strum_macros = "0.27.0"
1917
thiserror = "2.0.0"

spdlog-internal/src/pattern_parser/mod.rs

Lines changed: 74 additions & 105 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
use std::borrow::Cow;
22

3-
use strum::IntoEnumIterator as _;
4-
use strum_macros::{EnumDiscriminants, EnumIter, EnumString, IntoStaticStr};
5-
63
pub mod error;
74
mod helper;
85
pub mod parse;
@@ -11,113 +8,85 @@ mod registry;
118
pub use error::{Error, Result};
129
pub use registry::{check_custom_pattern_names, PatternRegistry};
1310

14-
#[derive(
15-
Clone, Copy, Debug, Eq, PartialEq, IntoStaticStr, EnumDiscriminants, EnumIter, EnumString,
16-
)]
17-
#[strum_discriminants(derive(IntoStaticStr))]
18-
pub enum BuiltInFormatterInner {
19-
#[strum(serialize = "weekday_name")]
20-
AbbrWeekdayName,
21-
#[strum(serialize = "weekday_name_full")]
22-
WeekdayName,
23-
#[strum(serialize = "month_name")]
24-
AbbrMonthName,
25-
#[strum(serialize = "month_name_full")]
26-
MonthName,
27-
#[strum(serialize = "datetime")]
28-
FullDateTime,
29-
#[strum(serialize = "year_short")]
30-
ShortYear,
31-
#[strum(serialize = "year")]
32-
Year,
33-
#[strum(serialize = "date_short")]
34-
ShortDate,
35-
#[strum(serialize = "date")]
36-
Date,
37-
#[strum(serialize = "month")]
38-
Month,
39-
#[strum(serialize = "day")]
40-
Day,
41-
#[strum(serialize = "hour")]
42-
Hour,
43-
#[strum(serialize = "hour_12")]
44-
Hour12,
45-
#[strum(serialize = "minute")]
46-
Minute,
47-
#[strum(serialize = "second")]
48-
Second,
49-
#[strum(serialize = "millisecond")]
50-
Millisecond,
51-
#[strum(serialize = "microsecond")]
52-
Microsecond,
53-
#[strum(serialize = "nanosecond")]
54-
Nanosecond,
55-
#[strum(serialize = "am_pm")]
56-
AmPm,
57-
#[strum(serialize = "time_12")]
58-
Time12,
59-
#[strum(serialize = "time_short")]
60-
ShortTime,
61-
#[strum(serialize = "time")]
62-
Time,
63-
#[strum(serialize = "tz_offset")]
64-
TzOffset,
65-
#[strum(serialize = "unix_timestamp")]
66-
UnixTimestamp,
67-
#[strum(serialize = "full")]
68-
Full,
69-
#[strum(serialize = "level")]
70-
Level,
71-
#[strum(serialize = "level_short")]
72-
ShortLevel,
73-
#[strum(serialize = "source")]
74-
Source,
75-
#[strum(serialize = "file_name")]
76-
SourceFilename,
77-
#[strum(serialize = "file")]
78-
SourceFile,
79-
#[strum(serialize = "line")]
80-
SourceLine,
81-
#[strum(serialize = "column")]
82-
SourceColumn,
83-
#[strum(serialize = "module_path")]
84-
SourceModulePath,
85-
#[strum(serialize = "logger")]
86-
LoggerName,
87-
#[strum(serialize = "payload")]
88-
Payload,
89-
#[strum(serialize = "kv")]
90-
KV,
91-
#[strum(serialize = "pid")]
92-
ProcessId,
93-
#[strum(serialize = "tid")]
94-
ThreadId,
95-
#[strum(serialize = "eol")]
96-
Eol,
11+
macro_rules! for_builtin_formatters {
12+
( ( $($macro_params:tt)* ) => { $($macro_impl:tt)* }; ) => {
13+
mod __private {
14+
macro_rules! __callback {
15+
( $($macro_params)* ) => { $($macro_impl)* };
16+
}
17+
pub(crate) use __callback;
18+
}
19+
__private::__callback! {
20+
AbbrWeekdayName => "weekday_name",
21+
WeekdayName => "weekday_name_full",
22+
AbbrMonthName => "month_name",
23+
MonthName => "month_name_full",
24+
FullDateTime => "datetime",
25+
ShortYear => "year_short",
26+
Year => "year",
27+
ShortDate => "date_short",
28+
Date => "date",
29+
Month => "month",
30+
Day => "day",
31+
Hour => "hour",
32+
Hour12 => "hour_12",
33+
Minute => "minute",
34+
Second => "second",
35+
Millisecond => "millisecond",
36+
Microsecond => "microsecond",
37+
Nanosecond => "nanosecond",
38+
AmPm => "am_pm",
39+
Time12 => "time_12",
40+
ShortTime => "time_short",
41+
Time => "time",
42+
TzOffset => "tz_offset",
43+
UnixTimestamp => "unix_timestamp",
44+
Full => "full",
45+
Level => "level",
46+
ShortLevel => "level_short",
47+
Source => "source",
48+
SourceFilename => "file_name",
49+
SourceFile => "file",
50+
SourceLine => "line",
51+
SourceColumn => "column",
52+
SourceModulePath => "module_path",
53+
LoggerName => "logger",
54+
Payload => "payload",
55+
KV => "kv",
56+
ProcessId => "pid",
57+
ThreadId => "tid",
58+
Eol => "eol",
59+
}
60+
};
9761
}
9862

99-
#[derive(Clone, Debug, Eq, PartialEq)]
100-
pub struct BuiltInFormatter(BuiltInFormatterInner);
101-
102-
impl BuiltInFormatter {
103-
pub fn iter() -> impl Iterator<Item = BuiltInFormatter> {
104-
BuiltInFormatterInner::iter().map(BuiltInFormatter)
105-
}
63+
for_builtin_formatters! {
64+
( $( $variant:ident => $serialize:literal ),+ $(,)? ) => {
65+
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
66+
pub enum BuiltInFormatter {
67+
$( $variant ),+
68+
}
10669

107-
#[must_use]
108-
pub fn struct_name(&self) -> &'static str {
109-
BuiltInFormatterInnerDiscriminants::from(self.0).into()
110-
}
70+
impl BuiltInFormatter {
71+
pub fn iter() -> impl Iterator<Item = Self> {
72+
[ $( Self::$variant ),+ ].into_iter()
73+
}
11174

112-
#[must_use]
113-
pub fn placeholder(&self) -> &'static str {
114-
self.0.into()
115-
}
75+
#[must_use]
76+
pub fn struct_name(&self) -> &'static str {
77+
match self {
78+
$( Self::$variant => stringify!($variant), )+
79+
}
80+
}
11681

117-
#[must_use]
118-
pub fn inner(&self) -> BuiltInFormatterInner {
119-
self.0
120-
}
82+
#[must_use]
83+
pub fn placeholder(&self) -> &'static str {
84+
match self {
85+
$( Self::$variant => $serialize, )+
86+
}
87+
}
88+
}
89+
};
12190
}
12291

12392
#[derive(Clone, Debug, Eq, PartialEq)]

spdlog-internal/src/pattern_parser/registry.rs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,6 @@ where
143143
#[cfg(test)]
144144
mod tests {
145145
use super::*;
146-
use crate::pattern_parser::BuiltInFormatterInner;
147146

148147
#[test]
149148
fn custom_pattern_names_checker() {
@@ -179,7 +178,7 @@ mod tests {
179178
assert_eq!(
180179
check(["date"]),
181180
Err(Error::ConflictName {
182-
existing: PatternKind::BuiltIn(BuiltInFormatter(BuiltInFormatterInner::Date)),
181+
existing: PatternKind::BuiltIn(BuiltInFormatter::Date),
183182
incoming: PatternKind::Custom {
184183
placeholder: "date".into(),
185184
factory: ()
@@ -190,7 +189,7 @@ mod tests {
190189
check(["date", "a", "a"]),
191190
Err(Error::Multiple(vec![
192191
Error::ConflictName {
193-
existing: PatternKind::BuiltIn(BuiltInFormatter(BuiltInFormatterInner::Date)),
192+
existing: PatternKind::BuiltIn(BuiltInFormatter::Date),
194193
incoming: PatternKind::Custom {
195194
placeholder: "date".into(),
196195
factory: ()
@@ -212,7 +211,7 @@ mod tests {
212211
check(["date", "a", "a", "a"]),
213212
Err(Error::Multiple(vec![
214213
Error::ConflictName {
215-
existing: PatternKind::BuiltIn(BuiltInFormatter(BuiltInFormatterInner::Date)),
214+
existing: PatternKind::BuiltIn(BuiltInFormatter::Date),
216215
incoming: PatternKind::Custom {
217216
placeholder: "date".into(),
218217
factory: ()
@@ -234,7 +233,7 @@ mod tests {
234233
check(["b", "date", "a", "b", "a", "a"]),
235234
Err(Error::Multiple(vec![
236235
Error::ConflictName {
237-
existing: PatternKind::BuiltIn(BuiltInFormatter(BuiltInFormatterInner::Date)),
236+
existing: PatternKind::BuiltIn(BuiltInFormatter::Date),
238237
incoming: PatternKind::Custom {
239238
placeholder: "date".into(),
240239
factory: ()

spdlog/src/formatter/pattern_formatter/runtime.rs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
use spdlog_internal::pattern_parser::{
22
error::TemplateError,
33
parse::{Template, TemplateToken},
4-
BuiltInFormatter, BuiltInFormatterInner, Error as PatternParserError,
5-
PatternKind as GenericPatternKind, PatternRegistry as GenericPatternRegistry,
6-
Result as PatternParserResult,
4+
BuiltInFormatter, Error as PatternParserError, PatternKind as GenericPatternKind,
5+
PatternRegistry as GenericPatternRegistry, Result as PatternParserResult,
76
};
87

98
use super::{Pattern, PatternContext, __pattern as pattern};
@@ -205,8 +204,8 @@ impl Synthesiser {
205204
fn build_builtin_pattern(builtin: &BuiltInFormatter) -> Box<dyn Pattern> {
206205
macro_rules! match_builtin {
207206
( $($name:ident),+ $(,)? ) => {
208-
match builtin.inner() {
209-
$(BuiltInFormatterInner::$name => Box::<pattern::$name>::default()),+
207+
match builtin {
208+
$(BuiltInFormatter::$name => Box::<pattern::$name>::default()),+
210209
}
211210
};
212211
}

0 commit comments

Comments
 (0)