mirror of
https://github.com/ankitects/anki.git
synced 2025-09-24 16:56:36 -04:00
Extends the SearchNode interface to support field and unqualified searches (#1821)
* Add field search option to SearchNode * Add unqualified/literal search option to SearchNode * Rename text to literal_text * Interpret field name parameter literally
This commit is contained in:
parent
27f2e39ff9
commit
a3d9a25d18
2 changed files with 18 additions and 1 deletions
|
@ -68,6 +68,12 @@ message SearchNode {
|
|||
repeated SearchNode nodes = 1;
|
||||
Joiner joiner = 2;
|
||||
}
|
||||
message Field {
|
||||
string field_name = 1;
|
||||
string text = 2;
|
||||
bool is_re = 3;
|
||||
}
|
||||
|
||||
oneof filter {
|
||||
Group group = 1;
|
||||
SearchNode negated = 2;
|
||||
|
@ -88,6 +94,8 @@ message SearchNode {
|
|||
string tag = 17;
|
||||
string note = 18;
|
||||
uint32 introduced_in_days = 19;
|
||||
Field field = 20;
|
||||
string literal_text = 21;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@ use crate::{
|
|||
search::{
|
||||
parse_search, Negated, Node, PropertyKind, RatingKind, SearchNode, StateKind, TemplateKind,
|
||||
},
|
||||
text::escape_anki_wildcards_for_search_node,
|
||||
text::{escape_anki_wildcards, escape_anki_wildcards_for_search_node},
|
||||
};
|
||||
|
||||
impl TryFrom<pb::SearchNode> for Node {
|
||||
|
@ -98,6 +98,15 @@ impl TryFrom<pb::SearchNode> for Node {
|
|||
Node::Group(nodes)
|
||||
}
|
||||
}
|
||||
Filter::Field(field) => Node::Search(SearchNode::SingleField {
|
||||
field: escape_anki_wildcards(&field.field_name),
|
||||
text: escape_anki_wildcards(&field.text),
|
||||
is_re: field.is_re,
|
||||
}),
|
||||
Filter::LiteralText(text) => {
|
||||
let text = escape_anki_wildcards(&text);
|
||||
Node::Search(SearchNode::UnqualifiedText(text))
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Node::Search(SearchNode::WholeCollection)
|
||||
|
|
Loading…
Reference in a new issue