From d3b27c302c46a92231388d872ab7a4001e0cb0d5 Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Sun, 26 Apr 2020 14:47:58 +1000 Subject: [PATCH] split decks into module --- rslib/src/decks/mod.rs | 27 +++++++++++++++++++++++ rslib/src/{decks.rs => decks/schema11.rs} | 22 +----------------- 2 files changed, 28 insertions(+), 21 deletions(-) create mode 100644 rslib/src/decks/mod.rs rename rslib/src/{decks.rs => decks/schema11.rs} (92%) diff --git a/rslib/src/decks/mod.rs b/rslib/src/decks/mod.rs new file mode 100644 index 000000000..038698874 --- /dev/null +++ b/rslib/src/decks/mod.rs @@ -0,0 +1,27 @@ +// Copyright: Ankitects Pty Ltd and contributors +// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html + +use crate::define_newtype; + +mod schema11; +pub use schema11::Deck; + +define_newtype!(DeckID, i64); + +pub(crate) fn child_ids<'a>(decks: &'a [Deck], name: &str) -> impl Iterator + 'a { + let prefix = format!("{}::", name.to_ascii_lowercase()); + decks + .iter() + .filter(move |d| d.name().to_ascii_lowercase().starts_with(&prefix)) + .map(|d| d.id()) +} + +pub(crate) fn get_deck(decks: &[Deck], id: DeckID) -> Option<&Deck> { + for d in decks { + if d.id() == id { + return Some(d); + } + } + + None +} diff --git a/rslib/src/decks.rs b/rslib/src/decks/schema11.rs similarity index 92% rename from rslib/src/decks.rs rename to rslib/src/decks/schema11.rs index b066f7ef6..ee9608df6 100644 --- a/rslib/src/decks.rs +++ b/rslib/src/decks/schema11.rs @@ -1,8 +1,8 @@ // Copyright: Ankitects Pty Ltd and contributors // License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html +use super::DeckID; use crate::{ - define_newtype, serde::{default_on_invalid, deserialize_bool_from_anything, deserialize_number_from_string}, timestamp::TimestampSecs, types::Usn, @@ -12,8 +12,6 @@ use serde_json::Value; use serde_tuple::Serialize_tuple; use std::collections::HashMap; -define_newtype!(DeckID, i64); - #[derive(Serialize, PartialEq, Debug, Clone)] #[serde(untagged)] pub enum Deck { @@ -218,21 +216,3 @@ impl Default for NormalDeck { } } } - -pub(crate) fn child_ids<'a>(decks: &'a [Deck], name: &str) -> impl Iterator + 'a { - let prefix = format!("{}::", name.to_ascii_lowercase()); - decks - .iter() - .filter(move |d| d.name().to_ascii_lowercase().starts_with(&prefix)) - .map(|d| d.id()) -} - -pub(crate) fn get_deck(decks: &[Deck], id: DeckID) -> Option<&Deck> { - for d in decks { - if d.id() == id { - return Some(d); - } - } - - None -}