mirror of
https://github.com/ankitects/anki.git
synced 2025-12-13 14:50:59 -05:00
Coerce added/edited:0 to 1, constrain rated:n to 1 <= 365
This commit is contained in:
parent
c8373f1ced
commit
87bc1e69b0
1 changed files with 20 additions and 3 deletions
|
|
@ -273,8 +273,8 @@ fn search_node_for_text_with_argument<'a>(
|
||||||
val: &'a str,
|
val: &'a str,
|
||||||
) -> ParseResult<SearchNode<'a>> {
|
) -> ParseResult<SearchNode<'a>> {
|
||||||
Ok(match key.to_ascii_lowercase().as_str() {
|
Ok(match key.to_ascii_lowercase().as_str() {
|
||||||
"added" => SearchNode::AddedInDays(val.parse()?),
|
"added" => parse_added(val)?,
|
||||||
"edited" => SearchNode::EditedInDays(val.parse()?),
|
"edited" => parse_edited(val)?,
|
||||||
"deck" => SearchNode::Deck(unescape(val)?),
|
"deck" => SearchNode::Deck(unescape(val)?),
|
||||||
"note" => SearchNode::NoteType(unescape(val)?),
|
"note" => SearchNode::NoteType(unescape(val)?),
|
||||||
"tag" => SearchNode::Tag(unescape(val)?),
|
"tag" => SearchNode::Tag(unescape(val)?),
|
||||||
|
|
@ -309,6 +309,20 @@ fn check_id_list(s: &str) -> ParseResult<&str> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// eg added:1
|
||||||
|
fn parse_added(s: &str) -> ParseResult<SearchNode<'static>> {
|
||||||
|
let n: u32 = s.parse()?;
|
||||||
|
let days = n.max(1);
|
||||||
|
Ok(SearchNode::AddedInDays(days))
|
||||||
|
}
|
||||||
|
|
||||||
|
/// eg edited:1
|
||||||
|
fn parse_edited(s: &str) -> ParseResult<SearchNode<'static>> {
|
||||||
|
let n: u32 = s.parse()?;
|
||||||
|
let days = n.max(1);
|
||||||
|
Ok(SearchNode::EditedInDays(n))
|
||||||
|
}
|
||||||
|
|
||||||
/// eg is:due
|
/// eg is:due
|
||||||
fn parse_state(s: &str) -> ParseResult<SearchNode<'static>> {
|
fn parse_state(s: &str) -> ParseResult<SearchNode<'static>> {
|
||||||
use StateKind::*;
|
use StateKind::*;
|
||||||
|
|
@ -339,7 +353,10 @@ fn parse_flag(s: &str) -> ParseResult<SearchNode<'static>> {
|
||||||
/// second arg must be between 0-4
|
/// second arg must be between 0-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, ':');
|
||||||
let days = it.next().unwrap().parse()?;
|
|
||||||
|
let n: u32 = it.next().unwrap().parse()?;
|
||||||
|
let days = n.max(1).min(365);
|
||||||
|
|
||||||
let ease = match it.next() {
|
let ease = match it.next() {
|
||||||
Some(v) => {
|
Some(v) => {
|
||||||
let n: u8 = v.parse()?;
|
let n: u8 = v.parse()?;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue