aboutsummaryrefslogtreecommitdiffstats
path: root/lib/warden-core/src/google/parser/dt.rs
diff options
context:
space:
mode:
Diffstat (limited to 'lib/warden-core/src/google/parser/dt.rs')
-rw-r--r--lib/warden-core/src/google/parser/dt.rs161
1 files changed, 84 insertions, 77 deletions
diff --git a/lib/warden-core/src/google/parser/dt.rs b/lib/warden-core/src/google/parser/dt.rs
index ced6f12..0e57833 100644
--- a/lib/warden-core/src/google/parser/dt.rs
+++ b/lib/warden-core/src/google/parser/dt.rs
@@ -1,100 +1,107 @@
-use crate::google::{protobuf::Timestamp, r#type::Date};
+use crate::google::protobuf::Timestamp;
-impl From<time::OffsetDateTime> for Date {
- fn from(dt: time::OffsetDateTime) -> Self {
- Self {
- year: dt.year(),
- month: dt.month() as i32,
- day: dt.day() as i32,
+#[cfg(feature = "message")]
+mod date {
+ use super::*;
+ use crate::google::r#type::Date;
+
+ impl From<time::OffsetDateTime> for Date {
+ fn from(dt: time::OffsetDateTime) -> Self {
+ Self {
+ year: dt.year(),
+ month: dt.month() as i32,
+ day: dt.day() as i32,
+ }
}
}
-}
-impl From<time::Date> for Date {
- fn from(value: time::Date) -> Self {
- Self {
- year: value.year(),
- month: value.month() as i32,
- day: value.day() as i32,
+ impl From<time::Date> for Date {
+ fn from(value: time::Date) -> Self {
+ Self {
+ year: value.year(),
+ month: value.month() as i32,
+ day: value.day() as i32,
+ }
}
}
-}
-impl TryFrom<Date> for time::Date {
- type Error = time::Error;
+ impl TryFrom<Date> for time::Date {
+ type Error = time::Error;
- fn try_from(value: Date) -> Result<Self, Self::Error> {
- Ok(Self::from_calendar_date(
- value.year,
- time::Month::try_from(value.month as u8)?,
- value.day as u8,
- )?)
+ fn try_from(value: Date) -> Result<Self, Self::Error> {
+ Ok(Self::from_calendar_date(
+ value.year,
+ time::Month::try_from(value.month as u8)?,
+ value.day as u8,
+ )?)
+ }
}
-}
-impl std::str::FromStr for Date {
- type Err = time::Error;
+ impl std::str::FromStr for Date {
+ type Err = time::Error;
- fn from_str(s: &str) -> Result<Self, Self::Err> {
- let date = time::OffsetDateTime::parse(s, &time::format_description::well_known::Rfc3339)
- .map(Date::from);
-
- match date {
- Ok(dt) => Ok(dt),
- Err(_e) => {
- let my_format = time::macros::format_description!("[year]-[month]-[day]");
- let date = time::Date::parse(s, &my_format)?;
- Ok(Date::from(date))
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
+ let date =
+ time::OffsetDateTime::parse(s, &time::format_description::well_known::Rfc3339)
+ .map(Date::from);
+
+ match date {
+ Ok(dt) => Ok(dt),
+ Err(_e) => {
+ let my_format = time::macros::format_description!("[year]-[month]-[day]");
+ let date = time::Date::parse(s, &my_format)?;
+ Ok(Date::from(date))
+ }
}
}
}
-}
-impl TryFrom<String> for Date {
- type Error = time::Error;
+ impl TryFrom<String> for Date {
+ type Error = time::Error;
- fn try_from(value: String) -> Result<Self, Self::Error> {
- <Date as std::str::FromStr>::from_str(&value)
+ fn try_from(value: String) -> Result<Self, Self::Error> {
+ <Date as std::str::FromStr>::from_str(&value)
+ }
}
-}
-
-impl TryFrom<DateItem> for Date {
- type Error = time::Error;
- fn try_from(value: DateItem) -> Result<Self, Self::Error> {
- match value {
- DateItem::String(ref string) => <Date as std::str::FromStr>::from_str(string),
- #[cfg(feature = "iso20022")]
- DateItem::Date { year, month, day } => Ok(Date { year, month, day }),
- DateItem::Timestamp { seconds, nanos } => {
- let odt = time::OffsetDateTime::try_from(crate::google::protobuf::Timestamp {
- seconds,
- nanos,
- })?;
- Ok(Self {
- year: odt.year(),
- month: odt.month() as i32,
- day: odt.day() as i32,
- })
+ impl TryFrom<DateItem> for Date {
+ type Error = time::Error;
+
+ fn try_from(value: DateItem) -> Result<Self, Self::Error> {
+ match value {
+ DateItem::String(ref string) => <Date as std::str::FromStr>::from_str(string),
+ #[cfg(feature = "message")]
+ DateItem::Date { year, month, day } => Ok(Date { year, month, day }),
+ DateItem::Timestamp { seconds, nanos } => {
+ let odt = time::OffsetDateTime::try_from(crate::google::protobuf::Timestamp {
+ seconds,
+ nanos,
+ })?;
+ Ok(Self {
+ year: odt.year(),
+ month: odt.month() as i32,
+ day: odt.day() as i32,
+ })
+ }
}
}
}
-}
-impl From<Date> for String {
- fn from(value: Date) -> Self {
- let prepend = |value: i32| -> String {
- match value.lt(&10) {
- true => format!("0{}", value),
- false => value.to_string(),
- }
- };
- format!(
- "{}-{}-{}",
- value.year,
- prepend(value.month),
- prepend(value.day),
- )
+ impl From<Date> for String {
+ fn from(value: Date) -> Self {
+ let prepend = |value: i32| -> String {
+ match value.lt(&10) {
+ true => format!("0{}", value),
+ false => value.to_string(),
+ }
+ };
+ format!(
+ "{}-{}-{}",
+ value.year,
+ prepend(value.month),
+ prepend(value.day),
+ )
+ }
}
}
@@ -108,7 +115,7 @@ pub enum DateItem {
/// ts
Timestamp { seconds: i64, nanos: i32 },
/// date
- #[cfg(feature = "iso20022")]
+ #[cfg(feature = "message")]
Date { year: i32, month: i32, day: i32 },
}
@@ -118,7 +125,7 @@ impl TryFrom<DateItem> for Timestamp {
fn try_from(value: DateItem) -> Result<Self, Self::Error> {
match value {
DateItem::String(ref string) => <Timestamp as std::str::FromStr>::from_str(string),
- #[cfg(feature = "iso20022")]
+ #[cfg(feature = "message")]
DateItem::Date { year, month, day } => {
let date = time::Date::try_from(crate::google::r#type::Date { year, month, day })?;
let time = time::Time::MIDNIGHT;