mirror of
https://github.com/ankitects/anki.git
synced 2025-09-19 06:22:22 -04:00
Introduce "resched:n" instead of 0 and a flag for "rated"
This commit is contained in:
parent
7e58660aab
commit
cbfe14ef4f
2 changed files with 18 additions and 11 deletions
|
@ -122,7 +122,7 @@ pub enum TemplateKind<'a> {
|
||||||
pub(super) enum EaseKind {
|
pub(super) enum EaseKind {
|
||||||
Rated(u8),
|
Rated(u8),
|
||||||
Reviewed,
|
Reviewed,
|
||||||
All,
|
Manually,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl std::fmt::Display for EaseKind {
|
impl std::fmt::Display for EaseKind {
|
||||||
|
@ -132,7 +132,7 @@ impl std::fmt::Display for EaseKind {
|
||||||
match self {
|
match self {
|
||||||
Rated(u) => write!(f, " and ease = {}", u),
|
Rated(u) => write!(f, " and ease = {}", u),
|
||||||
Reviewed => write!(f, " and ease in (1, 2, 3, 4)"),
|
Reviewed => write!(f, " and ease in (1, 2, 3, 4)"),
|
||||||
All => write!(f, ""),
|
Manually => write!(f, " and ease = 0"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -305,6 +305,7 @@ fn search_node_for_text_with_argument<'a>(
|
||||||
"is" => parse_state(val)?,
|
"is" => parse_state(val)?,
|
||||||
"flag" => parse_flag(val)?,
|
"flag" => parse_flag(val)?,
|
||||||
"rated" => parse_rated(val)?,
|
"rated" => parse_rated(val)?,
|
||||||
|
"resched" => parse_resched(val)?,
|
||||||
"dupe" => parse_dupes(val)?,
|
"dupe" => parse_dupes(val)?,
|
||||||
"prop" => parse_prop(val)?,
|
"prop" => parse_prop(val)?,
|
||||||
"re" => SearchNode::Regex(unescape_quotes(val)),
|
"re" => SearchNode::Regex(unescape_quotes(val)),
|
||||||
|
@ -378,14 +379,11 @@ fn parse_rated(val: &str) -> ParseResult<SearchNode<'static>> {
|
||||||
|
|
||||||
let ease = match it.next() {
|
let ease = match it.next() {
|
||||||
Some(v) => {
|
Some(v) => {
|
||||||
let c: char = v.parse().unwrap();
|
let u: u8 = v.parse().unwrap();
|
||||||
match c {
|
if (1..5).contains(&u) {
|
||||||
'0' | '1' | '2' | '3' | '4' => {
|
EaseKind::Rated(u)
|
||||||
let n = c.to_digit(10).unwrap() as u8;
|
} else {
|
||||||
EaseKind::Rated(n)
|
return Err(ParseError {})
|
||||||
}
|
|
||||||
'a' => EaseKind::All,
|
|
||||||
_ => return Err(ParseError {}),
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
None => EaseKind::Reviewed,
|
None => EaseKind::Reviewed,
|
||||||
|
@ -394,6 +392,15 @@ fn parse_rated(val: &str) -> ParseResult<SearchNode<'static>> {
|
||||||
Ok(SearchNode::Rated { days, ease })
|
Ok(SearchNode::Rated { days, ease })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// eg resched:3
|
||||||
|
fn parse_resched(val: &str) -> ParseResult<SearchNode<'static>> {
|
||||||
|
let mut it = val.splitn(1, ':');
|
||||||
|
let days = it.next().unwrap().parse()?;
|
||||||
|
let ease = EaseKind::Manually;
|
||||||
|
|
||||||
|
Ok(SearchNode::Rated { days, ease })
|
||||||
|
}
|
||||||
|
|
||||||
/// eg dupes:1231,hello
|
/// eg dupes:1231,hello
|
||||||
fn parse_dupes(val: &str) -> ParseResult<SearchNode> {
|
fn parse_dupes(val: &str) -> ParseResult<SearchNode> {
|
||||||
let mut it = val.splitn(2, ',');
|
let mut it = val.splitn(2, ',');
|
||||||
|
|
|
@ -159,7 +159,7 @@ fn write_rated(days: &u32, ease: &EaseKind) -> String {
|
||||||
match ease {
|
match ease {
|
||||||
Rated(n) => format!("\"rated:{}:{}\"", days, n),
|
Rated(n) => format!("\"rated:{}:{}\"", days, n),
|
||||||
Reviewed => format!("\"rated:{}\"", days),
|
Reviewed => format!("\"rated:{}\"", days),
|
||||||
All => format!("\"rated:{}:a\"", days),
|
Manually => format!("\"resched:{}\"", days),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue