forked from janek/mostr
feat: allow setting multiple tag filters at once
This commit is contained in:
parent
b544616801
commit
3eefbad6d5
|
@ -120,9 +120,9 @@ Dots and slashes can be repeated to move to parent tasks.
|
||||||
|
|
||||||
Property Filters:
|
Property Filters:
|
||||||
|
|
||||||
- `#TAG` - set tag filter (empty: list all used tags)
|
- `#TAG1 TAG2` - set tag filter (empty: list all used tags)
|
||||||
- `+TAG` - add tag filter
|
- `+TAG` - add tag filter
|
||||||
- `-TAG` - remove tag filters
|
- `-TAG` - remove tag filters by prefix
|
||||||
- `?STATUS` - filter by status (type or description) - plain `?` to reset, `??` to show all
|
- `?STATUS` - filter by status (type or description) - plain `?` to reset, `??` to show all
|
||||||
- `@AUTHOR` - filter by author (`@` for self, id prefix, name prefix)
|
- `@AUTHOR` - filter by author (`@` for self, id prefix, name prefix)
|
||||||
- TBI: Filter by time
|
- TBI: Filter by time
|
||||||
|
|
|
@ -18,6 +18,7 @@ use env_logger::Builder;
|
||||||
use itertools::Itertools;
|
use itertools::Itertools;
|
||||||
use log::{debug, error, info, LevelFilter, trace, warn};
|
use log::{debug, error, info, LevelFilter, trace, warn};
|
||||||
use nostr_sdk::prelude::*;
|
use nostr_sdk::prelude::*;
|
||||||
|
use nostr_sdk::TagStandard::Hashtag;
|
||||||
use regex::Regex;
|
use regex::Regex;
|
||||||
use xdg::BaseDirectories;
|
use xdg::BaseDirectories;
|
||||||
|
|
||||||
|
@ -456,7 +457,7 @@ async fn main() {
|
||||||
|
|
||||||
Some('#') =>
|
Some('#') =>
|
||||||
match arg {
|
match arg {
|
||||||
Some(arg) => tasks.set_tag(arg.to_string()),
|
Some(arg) => tasks.set_tags(arg.split_whitespace().map(|s| Hashtag(s.to_string()).into())),
|
||||||
None => {
|
None => {
|
||||||
println!("Hashtags of all known tasks:\n{}", tasks.all_hashtags().join(" "));
|
println!("Hashtags of all known tasks:\n{}", tasks.all_hashtags().join(" "));
|
||||||
continue;
|
continue;
|
||||||
|
|
|
@ -128,6 +128,7 @@ impl Tasks {
|
||||||
],
|
],
|
||||||
sorting: VecDeque::from([
|
sorting: VecDeque::from([
|
||||||
"state".into(),
|
"state".into(),
|
||||||
|
"hashtags".into(),
|
||||||
"rtime".into(),
|
"rtime".into(),
|
||||||
"name".into(),
|
"name".into(),
|
||||||
]),
|
]),
|
||||||
|
@ -485,10 +486,10 @@ impl Tasks {
|
||||||
info!("Removed all filters");
|
info!("Removed all filters");
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn set_tag(&mut self, tag: String) {
|
pub(crate) fn set_tags(&mut self, tags: impl IntoIterator<Item=Tag>) {
|
||||||
self.tags_excluded.clear();
|
self.tags_excluded.clear();
|
||||||
self.tags.clear();
|
self.tags.clear();
|
||||||
self.add_tag(tag);
|
self.tags.extend(tags);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn add_tag(&mut self, tag: String) {
|
pub(crate) fn add_tag(&mut self, tag: String) {
|
||||||
|
|
Loading…
Reference in New Issue