DOM - Document Object Model =========================== Timewarrior needs DOM support, so that it can service a 'get' command and provide access to data and rules. Both are important for extensions. Data to be Accessed ------------------- Here are the data accessible via DOM references: - Configuration - Exclusions - Command line args in raw form (for rules, not 'get') Syntax ------ All DOM references have this form: dom. Supported Names --------------- dom.tag.count --> 14 Count of all tags dom.tag.1 --> 'tag' Nth tag used dom.active --> 0/1 Boolean indicator that tracking is active dom.active.tag.count --> N Count of active tags dom.active.tag.1 --> 'tag' Active Nth tag dom.active.start --> YYYY-MM-DDTHH:MM:SS Active start time dom.active.duration --> PT1H25M8S Active elapsed dom.active.json --> {...} Active interval as JSON dom.tracked.count --> N Count of tracked intervals dom.tracked.1.tag.count --> N Tracked Nth, count of tags dom.tracked.1.tag.1 --> 'tag' Tracked Nth, Nth tag dom.tracked.1.start --> YYYY-MM-DDTHH:MM:SS Tracked Nth, start time dom.tracked.1.end --> YYYY-MM-DDTHH:MM:SS Tracked Nth, end time, blank if closed dom.tracked.1.duration --> PT1H25M8S Tracked Nth, elapsed dom.tracked.1.json --> {...} Tracked Nth, interval as JSON --- Raw Notes --- Proposed: dom.tag.[1-3] --> 't1', 't2', 't3' First three tags dom.tag.[1,2,3] --> 't1', 't2', 't3' First three tags dom.tag.* --> 't1', ... 't14' All tags dom.tracked.year --> 231 Quantity this year dom.tracked.quarter --> 64 Quantity this quarter dom.tracked.month --> 21 Quantity this month dom.tracked.week --> 6 Quantity this week dom.tracked.today --> 2 Quantity today dom.gap.today ... rc. - The above does not support totals, as this would turn DOM references into a query language. Instead, a 'sum' command could do this. The rules.txt doc already mentions built-in functions.