Fancy terminal-based personal calendar and task tracker
Find a file
2021-12-14 23:51:00 +01:00
.githooks Add pre-commit hook to avoid committing unformatted code 2021-11-17 22:53:01 +01:00
src Fix range calculation for date formulas 2021-12-14 23:51:00 +01:00
.gitignore Create project 2021-08-04 23:17:37 +02:00
Cargo.lock Load file from .config/today/main.today by default 2021-12-12 19:35:54 +00:00
Cargo.toml Load file from .config/today/main.today by default 2021-12-12 19:35:54 +00:00
example.today Clean up examples 2021-12-06 22:28:17 +01:00
README.md Start implementing parser 2021-11-07 21:59:20 +00:00

today

Commands

The TASK command

TASK title
(DATE annotation)*
[FROM annotation]
[UNTIL annotation]
(DONE annotation)*
    long description

The NOTE command

NOTE title
(DATE annotation)+
[FROM annotation]
[UNTIL annotation]
(DONE annotation)*
    long description

The BIRTHDAY command

BIRTHDAY name
BDATE annotation

Annotations

The DATE annotation

Most commands allow or require DATE annotations. They are roughly structured like DATE start [-- end]. The end part can only contain time-related information if the start specifies a time.

More specifically, there are three variants of the DATE annotation:

DATE date [delta] [time] [-- [date] [delta] [time]] [; delta]
DATE weekday [time] [-- [weekday] [delta] [time]]
DATE formula [delta] [time] [-- [delta] [time]]

In all three cases, the end must contain at least one of the optional elements if it is present. Deltas in the end may represent fractional days (e. g. +3h) as long as they are not immediately followed by a time and the start includes a time. Other deltas may only represent whole-day intervals (they may contain sub-day specifiers like +24h or +25h-60m as long as they sum to a whole-day interval).

In the case of the date variant, a repetition delta can be specified following a semicolon.

If multiple DATE annotations from a single command start on the same date, all except the first are ignored.

The FROM and UNTIL annotations

Commands that allow DATE annotations also allow the FROM and UNTIL annotations. These can be used to restrict occurrences of entries.

The FROM annotation has the form FROM date and only keeps occurences that end at or after the specified date. These occurences may begin before the specified date.

The UNTIL annotation has the form UNTIL date and only keeps occurrences that start at or before the specified date. These occurrences may extend past the specified date.

The BDATE annotations

This is a very simple date annotation for birthdays. It has the form BDATE date where the year may optionally be replaced by a ?.

If the year is specified, the person's current age is displayed in the birthday occurrence title.

Examples

NOTE Spielerunde
DATE sun 22:00 -- 24:00
DATE sun 22:00 -- 00:00
DATE sun 22:00 -- +2h
DATE (wd = sun) 22:00 -- 24:00
DATE 2021-11-07 22:00 -- 24:00; +w
DATE 2021-11-07 22:00 -- +2h; +w

NOTE daily
DATE *
DATE (true)
DATE 2021-11-07; +d

NOTE on weekends
DATE (wd = sat | wd = sun)

NOTE weekends
DATE sat -- sun
DATE 2021-11-06 -- 2021-11-07; +w
DATE 2021-11-06 -- +d; +w
DATE (wd = sat) -- +d

NOTE last of each month
DATE (m = 1) -d

BIRTHDAY Max
BDATE 1987-05-14

BIRTHDAY Martha
BDATE ?-09-21

NOTE Physics lecture
DATE wed 14:00 -- 15:30
DATE 2021-05-07 14:00 -- 15:30
FROM 2021-04-14
UNTIL 2021-07-28
EXCEPT 2021-05-06
	This is a description of the event. It might mention further information
	that doesn't fit into the title.

	It may even contain multiple paragraphs, separated by an arbitrary amount
	of empty lines, as long as every non-empty line is indented.