From 66a8ebe014a649c72b5fdb042e673f523c721cf2 Mon Sep 17 00:00:00 2001 From: Paul Beckingham Date: Fri, 9 Sep 2011 00:24:50 -0400 Subject: [PATCH 1/2] EXPOSITION - Began an overview document of how the processing works. --- EXPOSITION | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 EXPOSITION diff --git a/EXPOSITION b/EXPOSITION new file mode 100644 index 000000000..c68e4c8c3 --- /dev/null +++ b/EXPOSITION @@ -0,0 +1,59 @@ +Startup + On startup, main creates a global Context object, then calls the + Context::initialize and Context::run methods. + + Context is a large object that holds all task information, both in terms of + the task data, and intermediate run-time data. Having one global Context + object means we don't have 50 global variables. Context is therefore just a + big bucket of data. + + Context::initialize sets up all the data and processes the command line. The + initialization process is a big chicken-and-egg problem, because the command + line depends on configuration (aliases) and the command line can force a + reload of configuration (rc:foo). This is solved by look-ahead: the command + line is scanned for 'rc:xxx' and 'rc.data.location:xxx' arguments, then later + for overrides. + + The Context::run method handles all the debug output and exceptions. Its + main purpose is to set up exception handling and call Context::dispatch. + + +Command Line Parsing + Command line parsing is difficult because of all the ambiguity. The solution + is to make several passes over the command line. For example, the task + command determines whether subsequent arguments are interpreted as part of a + filter or set of modifications. + + + +Dispatch + Dispatch is simple: once the command line is parsed, the command is used to + look up a command object, then call its execute method. + + Context stores an associative map of command object pointers indexed by a + string. This means the 'done' string is an index to the CmdDone object that + implements the functionality. + + + +Command Objects + + +Column Objects + + +GC + + +TDB2 + + +Filter + + +Sorting + + +Render + + From c42179aff49dbaa250ed566880b16c33f343367c Mon Sep 17 00:00:00 2001 From: Paul Beckingham Date: Fri, 9 Sep 2011 00:34:44 -0400 Subject: [PATCH 2/2] ANALYSIS - Removed some fixed items, added more info about other tests. --- test/ANALYSIS | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/test/ANALYSIS b/test/ANALYSIS index c5dfd8a8c..56e987ba5 100644 --- a/test/ANALYSIS +++ b/test/ANALYSIS @@ -2,7 +2,7 @@ FH month and year are treated as IDs * project.t -PB problem known, disabled output (???) +PB There is a bug in the calculation * text.t PB need to use a UTF-8 friendly way of doing input[--eol]. @@ -18,4 +18,10 @@ FH merge fails because of missing undo.data in data dirs. FH 'task info' shows tasks from the completed.data file when doing a filter on the ID could it be confused and interpretes this as an UUID +* uuid.t +PB There is a (likely) timezone problem in uuid.t that causes an off-by-one day + problem that we have seen before. + +* bug.concat.t +PB The word 'original' is parsed as 'or'(operator) ' '(space) 'iginal'(word).