forked from janek/mostr
fix(tasks): revamp tag delimiter in task creation syntax
Prevent accidental interpretation of title parts as tags
This commit is contained in:
parent
5303d0cb41
commit
dd78a2f460
|
@ -87,7 +87,7 @@ To stop time-tracking completely, simply move to the root of all tasks.
|
||||||
|
|
||||||
### Command Syntax
|
### Command Syntax
|
||||||
|
|
||||||
`TASK` creation syntax: `NAME: TAG1 TAG2 ...`
|
`TASK` creation syntax: `NAME #TAG *PRIO # TAG1 TAG2 ...`
|
||||||
|
|
||||||
- `TASK` - create task
|
- `TASK` - create task
|
||||||
+ prefix with space if you want a task to start with a command character
|
+ prefix with space if you want a task to start with a command character
|
||||||
|
|
|
@ -91,11 +91,12 @@ pub(crate) fn extract_hashtags(input: &str) -> impl Iterator<Item=Tag> + '_ {
|
||||||
.map(to_hashtag)
|
.map(to_hashtag)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Extracts everything after a ": " as a list of tags.
|
/// Extracts everything after a " # " as a list of tags
|
||||||
|
/// as well as various embedded tags.
|
||||||
///
|
///
|
||||||
/// Expects sanitized input.
|
/// Expects sanitized input.
|
||||||
pub(crate) fn extract_tags(input: &str) -> (&str, Vec<Tag>) {
|
pub(crate) fn extract_tags(input: &str) -> (&str, Vec<Tag>) {
|
||||||
match input.split_once(": ") {
|
match input.split_once(" # ") {
|
||||||
None => (input, extract_hashtags(input).collect_vec()),
|
None => (input, extract_hashtags(input).collect_vec()),
|
||||||
Some((name, tags)) => {
|
Some((name, tags)) => {
|
||||||
let tags = extract_hashtags(name)
|
let tags = extract_hashtags(name)
|
||||||
|
@ -139,6 +140,6 @@ pub(crate) fn is_hashtag(tag: &Tag) -> bool {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_extract_tags() {
|
fn test_extract_tags() {
|
||||||
assert_eq!(extract_tags("Hello from #mars with #greetings: yeah done-it"),
|
assert_eq!(extract_tags("Hello from #mars with #greetings # yeah done-it"),
|
||||||
("Hello from #mars with #greetings", ["mars", "greetings", "yeah", "done-it"].into_iter().map(to_hashtag).collect()))
|
("Hello from #mars with #greetings", ["mars", "greetings", "yeah", "done-it"].into_iter().map(to_hashtag).collect()))
|
||||||
}
|
}
|
|
@ -1582,7 +1582,7 @@ mod tasks_test {
|
||||||
fn test_bookmarks() {
|
fn test_bookmarks() {
|
||||||
let mut tasks = stub_tasks();
|
let mut tasks = stub_tasks();
|
||||||
let zero = EventId::all_zeros();
|
let zero = EventId::all_zeros();
|
||||||
let test = tasks.make_task("test: tag");
|
let test = tasks.make_task("test # tag");
|
||||||
let parent = tasks.make_task("parent");
|
let parent = tasks.make_task("parent");
|
||||||
assert_eq!(tasks.visible_tasks().len(), 2);
|
assert_eq!(tasks.visible_tasks().len(), 2);
|
||||||
tasks.move_to(Some(parent));
|
tasks.move_to(Some(parent));
|
||||||
|
@ -1622,7 +1622,7 @@ mod tasks_test {
|
||||||
#[test]
|
#[test]
|
||||||
fn test_procedures() {
|
fn test_procedures() {
|
||||||
let mut tasks = stub_tasks();
|
let mut tasks = stub_tasks();
|
||||||
tasks.make_task_and_enter("proc: tags", State::Procedure);
|
tasks.make_task_and_enter("proc # tags", State::Procedure);
|
||||||
assert_eq!(tasks.get_own_events_history().count(), 1);
|
assert_eq!(tasks.get_own_events_history().count(), 1);
|
||||||
let side = tasks.submit(
|
let side = tasks.submit(
|
||||||
build_task("side", vec![tasks.make_event_tag(&tasks.get_current_task().unwrap().event, MARKER_DEPENDS)], None));
|
build_task("side", vec![tasks.make_event_tag(&tasks.get_current_task().unwrap().event, MARKER_DEPENDS)], None));
|
||||||
|
@ -1738,7 +1738,7 @@ mod tasks_test {
|
||||||
assert_position!(tasks, t1);
|
assert_position!(tasks, t1);
|
||||||
tasks.search_depth = 2;
|
tasks.search_depth = 2;
|
||||||
assert_eq!(tasks.visible_tasks().len(), 0);
|
assert_eq!(tasks.visible_tasks().len(), 0);
|
||||||
let t11 = tasks.make_task("t11: tag");
|
let t11 = tasks.make_task("t11 # tag");
|
||||||
assert_eq!(tasks.visible_tasks().len(), 1);
|
assert_eq!(tasks.visible_tasks().len(), 1);
|
||||||
assert_eq!(tasks.get_task_path(Some(t11)), "t1>t11");
|
assert_eq!(tasks.get_task_path(Some(t11)), "t1>t11");
|
||||||
assert_eq!(tasks.relative_path(t11), "t11");
|
assert_eq!(tasks.relative_path(t11), "t11");
|
||||||
|
|
Loading…
Reference in New Issue