From 59166c787dc98e007bc41990a8eb587b4308ec05 Mon Sep 17 00:00:00 2001 From: Sergey Potapov Date: Wed, 16 Aug 2023 08:14:55 +0200 Subject: [PATCH 1/4] Rename var blacklist -> denylist --- src/core/filter_list.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/core/filter_list.rs b/src/core/filter_list.rs index 3e12341..58d5acb 100644 --- a/src/core/filter_list.rs +++ b/src/core/filter_list.rs @@ -18,15 +18,15 @@ impl FilterList { Self::Allow(allowlist) } - pub fn deny(blacklist: Vec) -> Self { - Self::Deny(blacklist) + pub fn deny(denylist: Vec) -> Self { + Self::Deny(denylist) } pub fn is_allowed(&self, lang: Lang) -> bool { match self { Self::All => true, Self::Allow(ref allowlist) => allowlist.contains(&lang), - Self::Deny(ref blacklist) => !blacklist.contains(&lang), + Self::Deny(ref denylist) => !denylist.contains(&lang), } } } From 8aae55036e70147f2a540879067e57ed52c21393 Mon Sep 17 00:00:00 2001 From: Sergey Potapov Date: Wed, 16 Aug 2023 08:20:47 +0200 Subject: [PATCH 2/4] Add serde feature --- .github/workflows/ci.yml | 6 ++++++ Cargo.toml | 1 + src/lang.rs | 15 +++++++++++++++ src/scripts/script.rs | 11 +++++++++++ 4 files changed, 33 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a0619ea..c5e9717 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -42,6 +42,12 @@ jobs: command: test args: --features arbitrary + - name: cargo test --all-features + uses: actions-rs/cargo@v1 + with: + command: test + args: --all-features + rustfmt: name: Rustfmt runs-on: ubuntu-latest diff --git a/Cargo.toml b/Cargo.toml index d63b3d1..ce1d60f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,6 +22,7 @@ include = [ hashbrown = "0.12.0" once_cell = "1.10.0" enum-map = { version = "2", optional = true } +serde = { version = "1", optional = true, features = ["derive"] } arbitrary = { version = "1", optional = true, features = ["derive"] } [dev-dependencies] diff --git a/src/lang.rs b/src/lang.rs index b0e034b..ba84ff3 100644 --- a/src/lang.rs +++ b/src/lang.rs @@ -10,6 +10,11 @@ use crate::error::ParseError; /// Represents a language following [ISO 639-3](https://en.wikipedia.org/wiki/ISO_639-3) standard. #[cfg_attr(feature = "enum-map", derive(::enum_map::Enum))] #[cfg_attr(feature = "arbitrary", derive(::arbitrary::Arbitrary))] +#[cfg_attr( + feature = "serde", + derive(::serde::Serialize, ::serde::Deserialize), + serde(rename_all = "lowercase") +)] #[derive(PartialEq, Eq, Debug, Hash, Clone, Copy)] pub enum Lang { /// Esperanto (Esperanto) @@ -721,4 +726,14 @@ mod tests { assert_eq!(Lang::Deu.to_string(), "Deutsch"); assert_eq!(Lang::Eng.to_string(), "English"); } + + #[cfg(feature = "serde")] + #[test] + fn test_serialize_and_deserialize() { + let langs = vec![Lang::Epo, Lang::Ukr, Lang::Spa]; + let json_langs = serde_json::to_string(&langs).unwrap(); + assert_eq!(json_langs, r#"["epo","ukr","spa"]"#); + let parsed_langs: Vec = serde_json::from_str(&json_langs).unwrap(); + assert_eq!(parsed_langs, langs); + } } diff --git a/src/scripts/script.rs b/src/scripts/script.rs index be839cd..cd0e8ef 100644 --- a/src/scripts/script.rs +++ b/src/scripts/script.rs @@ -8,6 +8,7 @@ use crate::Lang; /// Represents a writing system (Latin, Cyrillic, Arabic, etc). #[cfg_attr(feature = "enum-map", derive(::enum_map::Enum))] #[cfg_attr(feature = "arbitrary", derive(::arbitrary::Arbitrary))] +#[cfg_attr(feature = "serde", derive(::serde::Serialize, ::serde::Deserialize))] #[derive(PartialEq, Eq, Debug, Clone, Copy, Hash)] pub enum Script { // Keep this in alphabetic order (for C bindings) @@ -205,4 +206,14 @@ mod tests { assert_eq!(Script::Cyrillic.to_string(), "Cyrillic"); assert_eq!(Script::Arabic.to_string(), "Arabic"); } + + #[cfg(feature = "serde")] + #[test] + fn test_serialize_and_deserialize() { + let scripts = vec![Script::Georgian, Script::Cyrillic]; + let json_scripts = serde_json::to_string(&scripts).unwrap(); + assert_eq!(json_scripts, r#"["Georgian","Cyrillic"]"#); + let parsed_scripts: Vec