Merge branch 'fix/replace-pri'
This commit is contained in:
@@ -140,6 +140,18 @@ TODO: Replaced task with:
|
|||||||
1 2010-07-04 this also has a new date
|
1 2010-07-04 this also has a new date
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
cat /dev/null > todo.txt
|
||||||
|
test_todo_session 'replace handling prepended priority on add' <<EOF
|
||||||
|
>>> todo.sh -t add "new task"
|
||||||
|
1 2009-02-13 new task
|
||||||
|
TODO: 1 added.
|
||||||
|
|
||||||
|
>>> todo.sh replace 1 '(B) this also has a priority now'
|
||||||
|
1 2009-02-13 new task
|
||||||
|
TODO: Replaced task with:
|
||||||
|
1 (B) 2009-02-13 this also has a priority now
|
||||||
|
EOF
|
||||||
|
|
||||||
cat /dev/null > todo.txt
|
cat /dev/null > todo.txt
|
||||||
test_todo_session 'replace handling priority and prepended date on add' <<EOF
|
test_todo_session 'replace handling priority and prepended date on add' <<EOF
|
||||||
>>> todo.sh -t add "new task"
|
>>> todo.sh -t add "new task"
|
||||||
@@ -156,6 +168,18 @@ TODO: Replaced task with:
|
|||||||
1 (A) 2009-02-13 this is just a new one
|
1 (A) 2009-02-13 this is just a new one
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
cat /dev/null > todo.txt
|
||||||
|
test_todo_session 'replace handling prepended priority and date on add' <<EOF
|
||||||
|
>>> todo.sh -t add "new task"
|
||||||
|
1 2009-02-13 new task
|
||||||
|
TODO: 1 added.
|
||||||
|
|
||||||
|
>>> todo.sh replace 1 '(C) 2010-07-04 this also has a priority and new date'
|
||||||
|
1 2009-02-13 new task
|
||||||
|
TODO: Replaced task with:
|
||||||
|
1 (C) 2010-07-04 this also has a priority and new date
|
||||||
|
EOF
|
||||||
|
|
||||||
echo '(A) 2009-02-13 this is just a new one' > todo.txt
|
echo '(A) 2009-02-13 this is just a new one' > todo.txt
|
||||||
test_todo_session 'replace with prepended date replaces existing date' <<EOF
|
test_todo_session 'replace with prepended date replaces existing date' <<EOF
|
||||||
>>> todo.sh replace 1 2010-07-04 this also has a new date
|
>>> todo.sh replace 1 2010-07-04 this also has a new date
|
||||||
@@ -164,6 +188,14 @@ TODO: Replaced task with:
|
|||||||
1 (A) 2010-07-04 this also has a new date
|
1 (A) 2010-07-04 this also has a new date
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
echo '(A) 2009-02-13 this is just a new one' > todo.txt
|
||||||
|
test_todo_session 'replace with prepended priority replaces existing priority' <<EOF
|
||||||
|
>>> todo.sh replace 1 '(B) this also has a new priority'
|
||||||
|
1 (A) 2009-02-13 this is just a new one
|
||||||
|
TODO: Replaced task with:
|
||||||
|
1 (B) 2009-02-13 this also has a new priority
|
||||||
|
EOF
|
||||||
|
|
||||||
echo '2009-02-13 this is just a new one' > todo.txt
|
echo '2009-02-13 this is just a new one' > todo.txt
|
||||||
test_todo_session 'replace with prepended priority and date replaces existing date' <<EOF
|
test_todo_session 'replace with prepended priority and date replaces existing date' <<EOF
|
||||||
>>> todo.sh replace 1 '(B) 2010-07-04 this also has a new date'
|
>>> todo.sh replace 1 '(B) 2010-07-04 this also has a new date'
|
||||||
@@ -172,4 +204,13 @@ TODO: Replaced task with:
|
|||||||
1 (B) 2010-07-04 this also has a new date
|
1 (B) 2010-07-04 this also has a new date
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
|
||||||
|
echo '(A) 2009-02-13 this is just a new one' > todo.txt
|
||||||
|
test_todo_session 'replace with prepended priority and date replaces existing priority and date' <<EOF
|
||||||
|
>>> todo.sh replace 1 '(B) 2010-07-04 this also has a new prio+date'
|
||||||
|
1 (A) 2009-02-13 this is just a new one
|
||||||
|
TODO: Replaced task with:
|
||||||
|
1 (B) 2010-07-04 this also has a new prio+date
|
||||||
|
EOF
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
|||||||
23
todo.sh
23
todo.sh
@@ -459,20 +459,31 @@ replaceOrPrepend()
|
|||||||
|
|
||||||
# Retrieve existing priority and prepended date
|
# Retrieve existing priority and prepended date
|
||||||
local -r priAndDateExpr='^\((.) \)\{0,1\}\([0-9]\{2,4\}-[0-9]\{2\}-[0-9]\{2\} \)\{0,1\}'
|
local -r priAndDateExpr='^\((.) \)\{0,1\}\([0-9]\{2,4\}-[0-9]\{2\}-[0-9]\{2\} \)\{0,1\}'
|
||||||
priority=$(sed -e "$item!d" -e "${item}s/${priAndDateExpr}.*/\\1/" "$TODO_FILE")
|
originalPriority=$(sed -e "$item!d" -e "${item}s/${priAndDateExpr}.*/\\1/" "$TODO_FILE")
|
||||||
prepdate=$(sed -e "$item!d" -e "${item}s/${priAndDateExpr}.*/\\2/" "$TODO_FILE")
|
priority="$originalPriority"
|
||||||
|
originalPrepdate=$(sed -e "$item!d" -e "${item}s/${priAndDateExpr}.*/\\2/" "$TODO_FILE")
|
||||||
if [ "$prepdate" ] && [ "$action" = "replace" ] && [ "$(echo "$input"|sed -e "s/${priAndDateExpr}.*/\\1\\2/")" ]; then
|
prepdate="$originalPrepdate"
|
||||||
|
if [ "$action" = "replace" ]; then
|
||||||
|
replacementPrepdate="$(echo "$input"|sed -e "s/${priAndDateExpr}.*/\\2/")"
|
||||||
|
if [ "$replacementPrepdate" ]; then
|
||||||
# If the replaced text starts with a [priority +] date, it will replace
|
# If the replaced text starts with a [priority +] date, it will replace
|
||||||
# the existing date, too.
|
# the existing date, too.
|
||||||
prepdate=
|
prepdate="$replacementPrepdate"
|
||||||
|
fi
|
||||||
|
replacementPriority="$(echo "$input"|sed -e "s/${priAndDateExpr}.*/\\1/")"
|
||||||
|
if [ "$replacementPriority" ]; then
|
||||||
|
# If the replaced text starts with a priority, it will replace
|
||||||
|
# the existing priority, too.
|
||||||
|
priority="$replacementPriority"
|
||||||
|
fi
|
||||||
|
input="$(echo "$input"|sed -e "s/${priAndDateExpr}//")"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Temporarily remove any existing priority and prepended date, perform the
|
# Temporarily remove any existing priority and prepended date, perform the
|
||||||
# change (replace/prepend) and re-insert the existing priority and prepended
|
# change (replace/prepend) and re-insert the existing priority and prepended
|
||||||
# date again.
|
# date again.
|
||||||
cleaninput "for sed"
|
cleaninput "for sed"
|
||||||
sed -i.bak -e "$item s/^${priority}${prepdate}//" -e "$item s|^.*|${priority}${prepdate}${input}${backref}|" "$TODO_FILE"
|
sed -i.bak -e "$item s/^${originalPriority}${originalPrepdate}//" -e "$item s|^.*|${priority}${prepdate}${input}${backref}|" "$TODO_FILE"
|
||||||
if [ "$TODOTXT_VERBOSE" -gt 0 ]; then
|
if [ "$TODOTXT_VERBOSE" -gt 0 ]; then
|
||||||
getNewtodo "$item"
|
getNewtodo "$item"
|
||||||
case "$action" in
|
case "$action" in
|
||||||
|
|||||||
Reference in New Issue
Block a user