Coerce resched:days as well

This commit is contained in:
Henrik Giesel 2021-01-11 17:25:42 +01:00
parent 5eb2c7b271
commit 81d851610e
2 changed files with 14 additions and 2 deletions

View file

@ -358,7 +358,7 @@ fn parse_flag(s: &str) -> ParseResult<SearchNode<'static>> {
} }
/// eg rated:3 or rated:10:2 /// eg rated:3 or rated:10:2
/// second arg must be between 0-4 /// second arg must be between 1-4
fn parse_rated(val: &str) -> ParseResult<SearchNode<'static>> { fn parse_rated(val: &str) -> ParseResult<SearchNode<'static>> {
let mut it = val.splitn(2, ':'); let mut it = val.splitn(2, ':');
@ -383,7 +383,10 @@ fn parse_rated(val: &str) -> ParseResult<SearchNode<'static>> {
/// eg resched:3 /// eg resched:3
fn parse_resched(val: &str) -> ParseResult<SearchNode<'static>> { fn parse_resched(val: &str) -> ParseResult<SearchNode<'static>> {
let mut it = val.splitn(1, ':'); let mut it = val.splitn(1, ':');
let days = it.next().unwrap().parse()?;
let n: u32 = it.next().unwrap().parse()?;
let days = n.max(1).min(365);
let ease = EaseKind::Manually; let ease = EaseKind::Manually;
Ok(SearchNode::Rated { days, ease }) Ok(SearchNode::Rated { days, ease })

View file

@ -732,6 +732,15 @@ mod test {
); );
assert_eq!(s(ctx, "rated:0").0, s(ctx, "rated:1").0); assert_eq!(s(ctx, "rated:0").0, s(ctx, "rated:1").0);
// resched
assert_eq!(
s(ctx, "resched:400").0,
format!(
"(c.id in (select cid from revlog where id>{} and ease = 0))",
(timing.next_day_at - (86_400 * 365)) * 1_000
)
);
// props // props
assert_eq!(s(ctx, "prop:lapses=3").0, "(lapses = 3)".to_string()); assert_eq!(s(ctx, "prop:lapses=3").0, "(lapses = 3)".to_string());
assert_eq!(s(ctx, "prop:ease>=2.5").0, "(factor >= 2500)".to_string()); assert_eq!(s(ctx, "prop:ease>=2.5").0, "(factor >= 2500)".to_string());