tdl_export.byte(1) Filter and merge xml TODO list.


[--rss] [--tdl] [--filter s] [--split-by-day n] [[-help] | [--help]] [file...]


This manual page documents briefly the tdl_export.byte command.

This manual page was written for the Debian GNU/Linux distribution because the original program does not have a manual page.

The tdl_export.byte tool can be used to merge of filter TODO lists. The result is a new TODO list, or a XML document in RSS format built using the dates of items of the final TODO list.


Output RSS.


Output a new TODO list (default, use to merge TODO lists).

--filter s

Apply the given filter on read groups.

--split-by-day prefix

Split todo list(s) to create one separate todo list by day, in files named prefix->year<->month<->day<.tdl.


Files to convert. The file "-" stand for the standard input.

-help, --help

Display an help message.


Merging the TODO lists of files f1.tdl, f2.tdl and f3.tdl. The result (the final TODO list) is printed on standard output.

      tdl_export.byte f1.tdl f2.tdl f3.tdl

The same result can be obtained with the following command, since "-" as filename indicates to read a TODO list on standard input:

      cat f2.tdl | tdl_export.byte f1.tdl - f3.tdl

A filter can be given in parameter. This filter is applied on each read TODO list and allows to select only some groups or items matching the filter. The syntax of filters in given further. In the command below, we only keep items in "done" state and non empty groups:

      tdl_export.byte f1.tdl f2.tdl f3.tdl --filter 'not empty and state: done'

It is also possible to generate a XML document in RSS format instead of a new TODO list, for example to indicate the completed tasks (with "done" state), as in the following command:

      tdl_export.byte f1.tdl f2.tdl f3.tdl --filter "state: done" --rss > output.rss

At last, one can split the final TODO list in various TODO lists, one per day, by using the end date of each item. The prefix of generated files is given in parameter to the --split-by-day option. The generated files are named prefix->year<->month<->day<.tdl:

      tdl_export.byte f1.tdl f2.tdl f3.tdl --filter "state: done" --split-by-day /tmp/things-done


A small language allows to define filters on TODO lists, that is conditions on groups and items to select them. Here is a description of this language in BNF-style: [1]FILTER::=
            | group: REGEXP
            | item: REGEXP
            | empty
            | state: STATE
            | desc: REGEXP
            | before DATETIME
            | FILTER 
            | FILTER 
            | not FILTER 
            | ( FILTER )
            | done
            | suspended
            | high
            | normal
            | low
            | quoted_string
            | [^'\n' '"' '(' ')' ' ' '\009' '\012' ':' '/' '<' '>']+
            | [0-9]+-[0-9]+-[0-9]+
            | [0-9]+-[0-9]+-[0-9]+ [0-9]+:[0-9]+:[0-9]+
           .PP The REGEXP is a regular expression as the ones of the Str module of Objective-Caml.

DATETIME can be for example "2007-08-08" or "2007-08-08 23:12:07". If no time is give, then hour, minute and second are considered to be 0.

As you can see, filters on groups and items are indicated together in one expression. This is just to simplify the expression of filters. When a filer is applied on a TODO list, this filter is first splitted in two: one filter for groups and another filter for items, since some filters are invalid for items (like "empty") and some are invalid for groups (like "state:"). For example the filter "state: done and not empty" will give two filters: "state: done" for items and "not empty" for groups.


This manual page was written by Sylvain Le Gall [email protected] for the Debian GNU/Linux system (but may be used by others). Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Lesser General Public License, Version 2.1 or any later version published by the Free Software Foundation; considering as source code all the file that enable the production of this manpage.


Sylvain Le Gall <[email protected]>



Copyright © 2005, 2006 Sylvain Le Gall