ENH: Allow listpri filtering via TERM.
This even simplified the argument handling, since there can be no invalid priority any more; all other strings are taken as TERMs. And the check for empty ${1:-} was superfluous, anyway. Apart from these simplifications, it's basically just passing $@ to _list.
This commit is contained in:
@@ -4,13 +4,6 @@ test_description='list priority functionality
|
||||
'
|
||||
. ./test-lib.sh
|
||||
|
||||
test_todo_session 'listpri usage' <<EOF
|
||||
>>> todo.sh listpri ?
|
||||
usage: todo.sh listpri PRIORITY
|
||||
note: PRIORITY must a single letter from A to Z.
|
||||
=== 1
|
||||
EOF
|
||||
|
||||
cat > todo.txt <<EOF
|
||||
(B) smell the uppercase Roses +flowers @outside
|
||||
(C) notice the sunflowers
|
||||
@@ -42,7 +35,7 @@ cat > todo.txt <<EOF
|
||||
(n) not a prioritized task
|
||||
notice the (C)opyright
|
||||
EOF
|
||||
test_todo_session 'listpri filtering' <<EOF
|
||||
test_todo_session 'listpri filtering priorities' <<EOF
|
||||
>>> todo.sh -p listpri
|
||||
1 (B) smell the uppercase Roses +flowers @outside
|
||||
2 (C) notice the sunflowers
|
||||
@@ -68,4 +61,35 @@ TODO: 0 of 5 tasks shown
|
||||
TODO: 0 of 5 tasks shown
|
||||
EOF
|
||||
|
||||
cat > todo.txt <<EOF
|
||||
(B) ccc xxx this line should be third.
|
||||
ccc xxx this line should be third.
|
||||
(A) aaa zzz this line should be first.
|
||||
aaa zzz this line should be first.
|
||||
(B) bbb yyy this line should be second.
|
||||
bbb yyy this line should be second.
|
||||
EOF
|
||||
test_todo_session 'listpri filtering of TERM' <<EOF
|
||||
>>> todo.sh -p listpri "should be"
|
||||
3 (A) aaa zzz this line should be first.
|
||||
5 (B) bbb yyy this line should be second.
|
||||
1 (B) ccc xxx this line should be third.
|
||||
--
|
||||
TODO: 3 of 6 tasks shown
|
||||
|
||||
>>> todo.sh -p listpri a "should be"
|
||||
3 (A) aaa zzz this line should be first.
|
||||
--
|
||||
TODO: 1 of 6 tasks shown
|
||||
|
||||
>>> todo.sh -p listpri b second
|
||||
5 (B) bbb yyy this line should be second.
|
||||
--
|
||||
TODO: 1 of 6 tasks shown
|
||||
|
||||
>>> todo.sh -p listpri x "should be"
|
||||
--
|
||||
TODO: 0 of 6 tasks shown
|
||||
EOF
|
||||
|
||||
test_done
|
||||
|
||||
24
todo.sh
24
todo.sh
@@ -58,7 +58,7 @@ shorthelp()
|
||||
listall|lsa [TERM...]
|
||||
listcon|lsc
|
||||
listfile|lf SRC [TERM...]
|
||||
listpri|lsp [PRIORITY]
|
||||
listpri|lsp [PRIORITY] [TERM...]
|
||||
listproj|lsprj
|
||||
move|mv ITEM# DEST [SRC]
|
||||
prepend|prep ITEM# "TEXT TO PREPEND"
|
||||
@@ -143,10 +143,11 @@ help()
|
||||
sorted by priority with line numbers. If TERM specified, lists
|
||||
all lines that contain TERM in SRC file.
|
||||
|
||||
listpri [PRIORITY]
|
||||
lsp [PRIORITY]
|
||||
listpri [PRIORITY] [TERM...]
|
||||
lsp [PRIORITY] [TERM...]
|
||||
Displays all tasks prioritized PRIORITY.
|
||||
If no PRIORITY specified, lists all prioritized tasks.
|
||||
If TERM specified, lists only prioritized tasks that contain TERM.
|
||||
|
||||
listproj
|
||||
lsprj
|
||||
@@ -1009,22 +1010,11 @@ case $action in
|
||||
;;
|
||||
|
||||
"listpri" | "lsp" )
|
||||
shift ## was "listpri", new $1 is priority to list
|
||||
|
||||
if [ "${1:-}" ]
|
||||
then
|
||||
## A priority was specified
|
||||
pri=$( printf "%s\n" "$1" | tr 'a-z' 'A-Z' | grep '^[A-Z]$' ) || {
|
||||
die "usage: $TODO_SH listpri PRIORITY
|
||||
note: PRIORITY must a single letter from A to Z."
|
||||
}
|
||||
else
|
||||
## No priority specified; show all priority tasks
|
||||
pri="[A-Z]"
|
||||
fi
|
||||
shift ## was "listpri", new $1 is priority to list or first TERM
|
||||
|
||||
pri=$(printf "%s\n" "$1" | tr 'a-z' 'A-Z' | grep '^[A-Z]$') && shift || pri="[A-Z]"
|
||||
post_filter_command="grep '^ *[0-9]\+ (${pri}) '"
|
||||
_list "$TODO_FILE"
|
||||
_list "$TODO_FILE" "$@"
|
||||
;;
|
||||
|
||||
"move" | "mv" )
|
||||
|
||||
Reference in New Issue
Block a user