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 -}