Rename EaseKind to RatingKind

This commit is contained in:
RumovZ 2021-01-30 19:03:50 +01:00
parent b0890b0e47
commit 692aa16f6b
5 changed files with 29 additions and 28 deletions

View file

@ -36,7 +36,8 @@ use crate::{
sched::timespan::{answer_button_time, time_span}, sched::timespan::{answer_button_time, time_span},
search::{ search::{
concatenate_searches, negate_search, normalize_search, replace_search_term, write_nodes, 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, stats::studied_today,
sync::{ sync::{
@ -355,15 +356,15 @@ impl From<BoolSeparatorProto> for BoolSeparator {
} }
} }
impl From<pb::search_term::Rating> for EaseKind { impl From<pb::search_term::Rating> for RatingKind {
fn from(r: pb::search_term::Rating) -> Self { fn from(r: pb::search_term::Rating) -> Self {
match r { match r {
pb::search_term::Rating::Again => EaseKind::AnswerButton(1), pb::search_term::Rating::Again => RatingKind::AnswerButton(1),
pb::search_term::Rating::Hard => EaseKind::AnswerButton(2), pb::search_term::Rating::Hard => RatingKind::AnswerButton(2),
pb::search_term::Rating::Good => EaseKind::AnswerButton(3), pb::search_term::Rating::Good => RatingKind::AnswerButton(3),
pb::search_term::Rating::Easy => EaseKind::AnswerButton(4), pb::search_term::Rating::Easy => RatingKind::AnswerButton(4),
pb::search_term::Rating::Any => EaseKind::AnyAnswerButton, pb::search_term::Rating::Any => RatingKind::AnyAnswerButton,
pb::search_term::Rating::ByReschedule => EaseKind::ManualReschedule, pb::search_term::Rating::ByReschedule => RatingKind::ManualReschedule,
} }
} }
} }

View file

@ -5,7 +5,7 @@ mod sqlwriter;
mod writer; mod writer;
pub use cards::SortMode; 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::{ pub use writer::{
concatenate_searches, negate_search, normalize_search, replace_search_term, write_nodes, concatenate_searches, negate_search, normalize_search, replace_search_term, write_nodes,
BoolSeparator, BoolSeparator,

View file

@ -58,7 +58,7 @@ pub enum SearchNode<'a> {
NoteType(Cow<'a, str>), NoteType(Cow<'a, str>),
Rated { Rated {
days: u32, days: u32,
ease: EaseKind, ease: RatingKind,
}, },
Tag(Cow<'a, str>), Tag(Cow<'a, str>),
Duplicates { Duplicates {
@ -87,7 +87,7 @@ pub enum PropertyKind {
Lapses(u32), Lapses(u32),
Ease(f32), Ease(f32),
Position(u32), Position(u32),
Rated(i32, EaseKind), Rated(i32, RatingKind),
} }
#[derive(Debug, PartialEq, Clone)] #[derive(Debug, PartialEq, Clone)]
@ -109,7 +109,7 @@ pub enum TemplateKind<'a> {
} }
#[derive(Debug, PartialEq, Clone)] #[derive(Debug, PartialEq, Clone)]
pub enum EaseKind { pub enum RatingKind {
AnswerButton(u8), AnswerButton(u8),
AnyAnswerButton, AnyAnswerButton,
ManualReschedule, ManualReschedule,
@ -353,7 +353,7 @@ fn parse_flag(s: &str) -> ParseResult<SearchNode> {
fn parse_resched(s: &str) -> ParseResult<SearchNode> { fn parse_resched(s: &str) -> ParseResult<SearchNode> {
parse_u32(s, "resched:").map(|days| SearchNode::Rated { parse_u32(s, "resched:").map(|days| SearchNode::Rated {
days, days,
ease: EaseKind::ManualReschedule, ease: RatingKind::ManualReschedule,
}) })
} }
@ -392,7 +392,7 @@ fn parse_prop(prop_clause: &str) -> ParseResult<SearchNode> {
"rated" => parse_prop_rated(num, prop_clause)?, "rated" => parse_prop_rated(num, prop_clause)?,
"resched" => PropertyKind::Rated( "resched" => PropertyKind::Rated(
parse_negative_i32(num, prop_clause)?, parse_negative_i32(num, prop_clause)?,
EaseKind::ManualReschedule, RatingKind::ManualReschedule,
), ),
"ivl" => PropertyKind::Interval(parse_u32(num, prop_clause)?), "ivl" => PropertyKind::Interval(parse_u32(num, prop_clause)?),
"reps" => PropertyKind::Reps(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 { Ok(if let Some(num) = num {
EaseKind::AnswerButton( RatingKind::AnswerButton(
num.parse() num.parse()
.map_err(|_| ()) .map_err(|_| ())
.and_then(|n| if matches!(n, 1..=4) { Ok(n) } else { 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 { } else {
EaseKind::AnyAnswerButton RatingKind::AnyAnswerButton
}) })
} }

View file

@ -1,7 +1,7 @@
// Copyright: Ankitects Pty Ltd and contributors // Copyright: Ankitects Pty Ltd and contributors
// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html // 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::{ use crate::{
card::{CardQueue, CardType}, card::{CardQueue, CardType},
collection::Collection, collection::Collection,
@ -211,7 +211,7 @@ impl SqlWriter<'_> {
Ok(()) 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 today_cutoff = self.col.timing_today()?.next_day_at;
let target_cutoff_ms = (today_cutoff + 86_400 * days) * 1_000; let target_cutoff_ms = (today_cutoff + 86_400 * days) * 1_000;
let day_before_cutoff_ms = (today_cutoff + 86_400 * (days - 1)) * 1_000; let day_before_cutoff_ms = (today_cutoff + 86_400 * (days - 1)) * 1_000;
@ -240,9 +240,9 @@ impl SqlWriter<'_> {
.unwrap(); .unwrap();
match ease { match ease {
EaseKind::AnswerButton(u) => write!(self.sql, " and ease = {})", u), RatingKind::AnswerButton(u) => write!(self.sql, " and ease = {})", u),
EaseKind::AnyAnswerButton => write!(self.sql, " and ease > 0)"), RatingKind::AnyAnswerButton => write!(self.sql, " and ease > 0)"),
EaseKind::ManualReschedule => write!(self.sql, " and ease = 0)"), RatingKind::ManualReschedule => write!(self.sql, " and ease = 0)"),
} }
.unwrap(); .unwrap();

View file

@ -5,7 +5,7 @@ use crate::{
decks::DeckID as DeckIDType, decks::DeckID as DeckIDType,
err::Result, err::Result,
notetype::NoteTypeID as NoteTypeIDType, 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 itertools::Itertools;
use std::mem; use std::mem;
@ -154,8 +154,8 @@ fn write_template(template: &TemplateKind) -> String {
} }
} }
fn write_rated(days: &u32, ease: &EaseKind) -> String { fn write_rated(days: &u32, ease: &RatingKind) -> String {
use EaseKind::*; use RatingKind::*;
match ease { match ease {
AnswerButton(n) => format!("\"rated:{}:{}\"", days, n), AnswerButton(n) => format!("\"rated:{}:{}\"", days, n),
AnyAnswerButton => format!("\"rated:{}\"", days), AnyAnswerButton => format!("\"rated:{}\"", days),
@ -196,9 +196,9 @@ fn write_property(operator: &str, kind: &PropertyKind) -> String {
Ease(f) => format!("\"prop:ease{}{}\"", operator, f), Ease(f) => format!("\"prop:ease{}{}\"", operator, f),
Position(u) => format!("\"prop:pos{}{}\"", operator, u), Position(u) => format!("\"prop:pos{}{}\"", operator, u),
Rated(u, ease) => match ease { Rated(u, ease) => match ease {
EaseKind::AnswerButton(val) => format!("\"prop:rated{}{}:{}\"", operator, u, val), RatingKind::AnswerButton(val) => format!("\"prop:rated{}{}:{}\"", operator, u, val),
EaseKind::AnyAnswerButton => format!("\"prop:rated{}{}\"", operator, u), RatingKind::AnyAnswerButton => format!("\"prop:rated{}{}\"", operator, u),
EaseKind::ManualReschedule => format!("\"prop:resched{}{}\"", operator, u), RatingKind::ManualReschedule => format!("\"prop:resched{}{}\"", operator, u),
}, },
} }
} }