From 0b38e26e615730e593362ea39c5b54ee9cd01b47 Mon Sep 17 00:00:00 2001 From: mvntainer Date: Wed, 9 Aug 2023 11:59:17 -0400 Subject: [PATCH] add extended support, supports uuid and naivedatetime --- Cargo.lock | 28 ++++++++++++++++++++++++++++ sailfish/Cargo.toml | 3 +++ sailfish/src/runtime/render.rs | 30 ++++++++++++++++++++++++++++++ 3 files changed, 61 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index acddb2e3..a2caa1cd 100755 --- a/Cargo.lock +++ b/Cargo.lock @@ -47,6 +47,17 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "getrandom" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + [[package]] name = "glob" version = "0.3.1" @@ -172,6 +183,7 @@ dependencies = [ "sailfish-macros", "serde", "serde_json", + "uuid", "version_check", ] @@ -313,12 +325,28 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" +[[package]] +name = "uuid" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" +dependencies = [ + "getrandom", + "serde", +] + [[package]] name = "version_check" version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + [[package]] name = "winapi" version = "0.3.9" diff --git a/sailfish/Cargo.toml b/sailfish/Cargo.toml index c568a232..9e9b7b7a 100755 --- a/sailfish/Cargo.toml +++ b/sailfish/Cargo.toml @@ -18,6 +18,7 @@ default = ["config", "derive", "perf-inline"] config = ["sailfish-macros/config"] # automatically import derive macro derive = ["sailfish-macros"] +extended_support = ["uuid", "chrono"] # enable json filter json = ["serde", "serde_json"] # add more #[inline] attribute @@ -26,6 +27,8 @@ perf-inline = [] [dependencies] itoap = "1.0.1" ryu = "1.0.13" +uuid = { version = "1.4.1", features = ["v4", "v8", "serde"], optional = true } +chrono = { version = "0.4.26", features = ["serde"], optional = true} serde = { version = "1.0.159", optional = true } serde_json = { version = "1.0.95", optional = true } diff --git a/sailfish/src/runtime/render.rs b/sailfish/src/runtime/render.rs index e9b3f704..620d5631 100644 --- a/sailfish/src/runtime/render.rs +++ b/sailfish/src/runtime/render.rs @@ -124,6 +124,36 @@ impl Render for char { } } +#[cfg(feature="extended_support")] +impl Render for uuid::Uuid { + #[inline] + fn render(&self, b: &mut Buffer) -> Result<(), RenderError> { + b.push_str(&self.to_string()); + Ok(()) + } + + #[inline] + fn render_escaped(&self, b: &mut Buffer) -> Result<(), RenderError> { + escape::escape_to_buf(&self.to_string(), b); + Ok(()) + } +} + +#[cfg(feature="extended_support")] +impl Render for chrono::NaiveDateTime { + #[inline] + fn render(&self, b: &mut Buffer) -> Result<(), RenderError> { + b.push_str(&self.to_string()); + Ok(()) + } + + #[inline] + fn render_escaped(&self, b: &mut Buffer) -> Result<(), RenderError> { + escape::escape_to_buf(&self.to_string(), b); + Ok(()) + } +} + impl Render for PathBuf { #[inline] fn render(&self, b: &mut Buffer) -> Result<(), RenderError> {