diff --git a/rslib/src/backend/mod.rs b/rslib/src/backend/mod.rs index 62bf0f341..099aa1f87 100644 --- a/rslib/src/backend/mod.rs +++ b/rslib/src/backend/mod.rs @@ -36,7 +36,8 @@ use crate::{ sched::timespan::{answer_button_time, time_span}, search::{ concatenate_searches, negate_search, normalize_search, replace_search_term, write_nodes, - BoolSeparator, EaseKind, Node, PropertyKind, SearchNode, SortMode, StateKind, TemplateKind, + BoolSeparator, Node, PropertyKind, RatingKind, SearchNode, SortMode, StateKind, + TemplateKind, }, stats::studied_today, sync::{ @@ -355,15 +356,15 @@ impl From for BoolSeparator { } } -impl From for EaseKind { +impl From for RatingKind { fn from(r: pb::search_term::Rating) -> Self { match r { - pb::search_term::Rating::Again => EaseKind::AnswerButton(1), - pb::search_term::Rating::Hard => EaseKind::AnswerButton(2), - pb::search_term::Rating::Good => EaseKind::AnswerButton(3), - pb::search_term::Rating::Easy => EaseKind::AnswerButton(4), - pb::search_term::Rating::Any => EaseKind::AnyAnswerButton, - pb::search_term::Rating::ByReschedule => EaseKind::ManualReschedule, + pb::search_term::Rating::Again => RatingKind::AnswerButton(1), + pb::search_term::Rating::Hard => RatingKind::AnswerButton(2), + pb::search_term::Rating::Good => RatingKind::AnswerButton(3), + pb::search_term::Rating::Easy => RatingKind::AnswerButton(4), + pb::search_term::Rating::Any => RatingKind::AnyAnswerButton, + pb::search_term::Rating::ByReschedule => RatingKind::ManualReschedule, } } } diff --git a/rslib/src/search/mod.rs b/rslib/src/search/mod.rs index ef107a94a..ba396242c 100644 --- a/rslib/src/search/mod.rs +++ b/rslib/src/search/mod.rs @@ -5,7 +5,7 @@ mod sqlwriter; mod writer; pub use cards::SortMode; -pub use parser::{EaseKind, Node, PropertyKind, SearchNode, StateKind, TemplateKind}; +pub use parser::{Node, PropertyKind, RatingKind, SearchNode, StateKind, TemplateKind}; pub use writer::{ concatenate_searches, negate_search, normalize_search, replace_search_term, write_nodes, BoolSeparator, diff --git a/rslib/src/search/parser.rs b/rslib/src/search/parser.rs index 903540a4f..ee7e2909f 100644 --- a/rslib/src/search/parser.rs +++ b/rslib/src/search/parser.rs @@ -58,7 +58,7 @@ pub enum SearchNode<'a> { NoteType(Cow<'a, str>), Rated { days: u32, - ease: EaseKind, + ease: RatingKind, }, Tag(Cow<'a, str>), Duplicates { @@ -87,7 +87,7 @@ pub enum PropertyKind { Lapses(u32), Ease(f32), Position(u32), - Rated(i32, EaseKind), + Rated(i32, RatingKind), } #[derive(Debug, PartialEq, Clone)] @@ -109,7 +109,7 @@ pub enum TemplateKind<'a> { } #[derive(Debug, PartialEq, Clone)] -pub enum EaseKind { +pub enum RatingKind { AnswerButton(u8), AnyAnswerButton, ManualReschedule, @@ -353,7 +353,7 @@ fn parse_flag(s: &str) -> ParseResult { fn parse_resched(s: &str) -> ParseResult { parse_u32(s, "resched:").map(|days| SearchNode::Rated { days, - ease: EaseKind::ManualReschedule, + ease: RatingKind::ManualReschedule, }) } @@ -392,7 +392,7 @@ fn parse_prop(prop_clause: &str) -> ParseResult { "rated" => parse_prop_rated(num, prop_clause)?, "resched" => PropertyKind::Rated( parse_negative_i32(num, prop_clause)?, - EaseKind::ManualReschedule, + RatingKind::ManualReschedule, ), "ivl" => PropertyKind::Interval(parse_u32(num, prop_clause)?), "reps" => PropertyKind::Reps(parse_u32(num, prop_clause)?), @@ -470,9 +470,9 @@ fn parse_i64<'a>(num: &str, context: &'a str) -> ParseResult<'a, i64> { }) } -fn parse_answer_button<'a>(num: Option<&str>, context: &'a str) -> ParseResult<'a, EaseKind> { +fn parse_answer_button<'a>(num: Option<&str>, context: &'a str) -> ParseResult<'a, RatingKind> { Ok(if let Some(num) = num { - EaseKind::AnswerButton( + RatingKind::AnswerButton( num.parse() .map_err(|_| ()) .and_then(|n| if matches!(n, 1..=4) { Ok(n) } else { Err(()) }) @@ -487,7 +487,7 @@ fn parse_answer_button<'a>(num: Option<&str>, context: &'a str) -> ParseResult<' })?, ) } else { - EaseKind::AnyAnswerButton + RatingKind::AnyAnswerButton }) } diff --git a/rslib/src/search/sqlwriter.rs b/rslib/src/search/sqlwriter.rs index 6921794c6..a3e009d5e 100644 --- a/rslib/src/search/sqlwriter.rs +++ b/rslib/src/search/sqlwriter.rs @@ -1,7 +1,7 @@ // Copyright: Ankitects Pty Ltd and contributors // License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html -use super::parser::{EaseKind, Node, PropertyKind, SearchNode, StateKind, TemplateKind}; +use super::parser::{Node, PropertyKind, RatingKind, SearchNode, StateKind, TemplateKind}; use crate::{ card::{CardQueue, CardType}, collection::Collection, @@ -211,7 +211,7 @@ impl SqlWriter<'_> { Ok(()) } - fn write_rated(&mut self, op: &str, days: i64, ease: &EaseKind) -> Result<()> { + fn write_rated(&mut self, op: &str, days: i64, ease: &RatingKind) -> Result<()> { let today_cutoff = self.col.timing_today()?.next_day_at; let target_cutoff_ms = (today_cutoff + 86_400 * days) * 1_000; let day_before_cutoff_ms = (today_cutoff + 86_400 * (days - 1)) * 1_000; @@ -240,9 +240,9 @@ impl SqlWriter<'_> { .unwrap(); match ease { - EaseKind::AnswerButton(u) => write!(self.sql, " and ease = {})", u), - EaseKind::AnyAnswerButton => write!(self.sql, " and ease > 0)"), - EaseKind::ManualReschedule => write!(self.sql, " and ease = 0)"), + RatingKind::AnswerButton(u) => write!(self.sql, " and ease = {})", u), + RatingKind::AnyAnswerButton => write!(self.sql, " and ease > 0)"), + RatingKind::ManualReschedule => write!(self.sql, " and ease = 0)"), } .unwrap(); diff --git a/rslib/src/search/writer.rs b/rslib/src/search/writer.rs index 1715c11e3..ac4490e9e 100644 --- a/rslib/src/search/writer.rs +++ b/rslib/src/search/writer.rs @@ -5,7 +5,7 @@ use crate::{ decks::DeckID as DeckIDType, err::Result, notetype::NoteTypeID as NoteTypeIDType, - search::parser::{parse, EaseKind, Node, PropertyKind, SearchNode, StateKind, TemplateKind}, + search::parser::{parse, Node, PropertyKind, RatingKind, SearchNode, StateKind, TemplateKind}, }; use itertools::Itertools; use std::mem; @@ -154,8 +154,8 @@ fn write_template(template: &TemplateKind) -> String { } } -fn write_rated(days: &u32, ease: &EaseKind) -> String { - use EaseKind::*; +fn write_rated(days: &u32, ease: &RatingKind) -> String { + use RatingKind::*; match ease { AnswerButton(n) => format!("\"rated:{}:{}\"", days, n), AnyAnswerButton => format!("\"rated:{}\"", days), @@ -196,9 +196,9 @@ fn write_property(operator: &str, kind: &PropertyKind) -> String { Ease(f) => format!("\"prop:ease{}{}\"", operator, f), Position(u) => format!("\"prop:pos{}{}\"", operator, u), Rated(u, ease) => match ease { - EaseKind::AnswerButton(val) => format!("\"prop:rated{}{}:{}\"", operator, u, val), - EaseKind::AnyAnswerButton => format!("\"prop:rated{}{}\"", operator, u), - EaseKind::ManualReschedule => format!("\"prop:resched{}{}\"", operator, u), + RatingKind::AnswerButton(val) => format!("\"prop:rated{}{}:{}\"", operator, u, val), + RatingKind::AnyAnswerButton => format!("\"prop:rated{}{}\"", operator, u), + RatingKind::ManualReschedule => format!("\"prop:resched{}{}\"", operator, u), }, } }