diff options
author | Lukas Fleischer <calcurse@cryptocrack.de> | 2014-08-06 15:48:02 +0200 |
---|---|---|
committer | Lukas Fleischer <calcurse@cryptocrack.de> | 2014-08-06 15:48:02 +0200 |
commit | f9208c0b3dcb6cb53dbad734871aeead576ad06b (patch) | |
tree | e98f651101cf707268af083357b31b6e02925efb | |
parent | c2dc3109ae23fbdb4ee3951317bd1fbf1ec846e2 (diff) | |
download | calcurse-f9208c0b3dcb6cb53dbad734871aeead576ad06b.tar.gz calcurse-f9208c0b3dcb6cb53dbad734871aeead576ad06b.zip |
Use backwards-compatible out format for queries
Print TODO items before appointments in query outputs and add an empty
line between the list of TODO items and the list of appointments. This
is how items were printed before the big parser refactoring.
Also, add a test to ensure we do not unintentionally change that format
in the future.
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
-rw-r--r-- | src/args.c | 23 | ||||
-rw-r--r-- | test/Makefile.am | 2 | ||||
-rw-r--r-- | test/data/apts-filter-001 | 8 | ||||
-rwxr-xr-x | test/filter-001.sh | 28 |
4 files changed, 51 insertions, 10 deletions
@@ -217,18 +217,18 @@ static void status_arg(void) puts(_("calcurse is not running\n")); } -/* Print TODO list and exit. */ -static void todo_arg(const char *format, int *limit, - struct item_filter *filter) +/* Print TODO list and return the number of printed items. */ +static int todo_arg(const char *format, int *limit, struct item_filter *filter) { const char *titlestr = filter->completed ? _("completed tasks:\n") : _("to do:\n"); int title = 1; + int n = 0; llist_item_t *i; LLIST_FOREACH(&todolist, i) { if (*limit == 0) - return; + break; struct todo *todo = LLIST_TS_GET_DATA(i); if (title) { @@ -236,8 +236,11 @@ static void todo_arg(const char *format, int *limit, title = 0; } print_todo(format, todo); + n++; (*limit)--; } + + return n; } /* Print the next appointment within the upcoming 24 hours. */ @@ -286,11 +289,11 @@ static void arg_print_date(long date) * If no end date is given (-1), a range of 1 day is considered. */ static void -date_arg_from_to(long from, long to, const char *fmt_apt, const char *fmt_rapt, - const char *fmt_ev, const char *fmt_rev, int *limit) +date_arg_from_to(long from, long to, int add_line, const char *fmt_apt, + const char *fmt_rapt, const char *fmt_ev, const char *fmt_rev, + int *limit) { long date; - int add_line = 0; for (date = from; date < to; date += DAYINSEC) { day_store_items(date, 0); @@ -659,9 +662,9 @@ int parse_args(int argc, char **argv) config_load(); /* To get output date format. */ io_load_app(&filter); io_load_todo(&filter); - date_arg_from_to(from, to, fmt_apt, fmt_rapt, fmt_ev, fmt_rev, - &limit); - todo_arg(fmt_todo, &limit, &filter); + int add_line = todo_arg(fmt_todo, &limit, &filter); + date_arg_from_to(from, to, add_line, fmt_apt, fmt_rapt, fmt_ev, + fmt_rev, &limit); } else if (next) { io_check_file(path_apts); io_load_app(&filter); diff --git a/test/Makefile.am b/test/Makefile.am index 5e1bfca..d036a1d 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -41,6 +41,7 @@ TESTS = \ event-004.sh \ event-005.sh \ event-006.sh \ + filter-001.sh \ ical-001.sh \ ical-002.sh \ ical-003.sh \ @@ -98,6 +99,7 @@ EXTRA_DIST = \ data/apts-event-004 \ data/apts-event-005 \ data/apts-event-006 \ + data/apts-filter-001 \ data/apts-recur \ data/conf \ data/ical-001.ical \ diff --git a/test/data/apts-filter-001 b/test/data/apts-filter-001 new file mode 100644 index 0000000..59fe31c --- /dev/null +++ b/test/data/apts-filter-001 @@ -0,0 +1,8 @@ +02/22/2013 [1] Event 1 +02/23/2013 [1] Event 2 +02/24/2013 [1] Event 3 +02/25/2013 [1] Event 4 +02/22/2013 @ 10:00 -> 02/22/2013 @ 12:00 |Appointment 1 +02/23/2013 @ 10:00 -> 02/23/2013 @ 12:00 |Appointment 2 +02/24/2013 @ 10:00 -> 02/24/2013 @ 12:00 |Appointment 3 +02/25/2013 @ 10:00 -> 02/25/2013 @ 12:00 |Appointment 4 diff --git a/test/filter-001.sh b/test/filter-001.sh new file mode 100755 index 0000000..2dcbb25 --- /dev/null +++ b/test/filter-001.sh @@ -0,0 +1,28 @@ +#!/bin/sh + +. "${TEST_INIT:-./test-init.sh}" + +if [ "$1" = 'actual' ]; then + "$CALCURSE" --read-only -D "$DATA_DIR"/ -c "$DATA_DIR/apts-filter-001" \ + -t9 -s02/23/2013 -r2 +elif [ "$1" = 'expected' ]; then + cat <<EOD +to do: +9. Gloriously slams +9. Beefburger's +9. Seasons + +02/23/13: + * Event 2 + - 10:00 -> 12:00 + Appointment 2 + +02/24/13: + * Event 3 + - 10:00 -> 12:00 + Appointment 3 +EOD +else + ./run-test "$0" +fi + |