Hi Karra,
I've been working on org-toodledo.el to perform bi-directional sync of TODO items with the Toodledo server, and faced many of the same issues you raise about figuring out the exact format and grammar of a TODO item.
You may find looking at my source useful, either as inspiration, integration, or just understanding what fields are what.
The general approach was to build an object that represents a parsed TODO item, and fill that in from either the org-buffer TODO items, or from items retrieved from the server. That object can then be compared to others (one from the server and one from the local buffer), converted to a new org TODO, sent to the server as a new TODO, etc. The components of the TODO item are obviously targeted to what makes sense for Toodledo, but I think they are fairly generic.
You might also look at org-element.el which I recently learned about which may also help. I have it on my TODO list to learn more about it to see if I can't refactor org-toodledo to leverage it. It is more geared toward generic org items as opposed to specifically TODO items.
...cj
On 6/22/12 2:40 AM, Sriram Karra wrote:
I am the author of ASynK (http://karra-asynk.appspot.com), a PIM sync*"Offline parsers"*
tool and framework written in python that works across a variety of PIM
providers such as Outlook, Google and BBDB. I am considering extending
ASynK to do a bi-directional sync of Outlook tasks to Org Mode tasks. To
be able to do this I need a working read/write API for reading and
creating TODOs in org mode.
*org-protocol*
My first preference is to be able to parser org files without required
Emacs - this is the approach that I have implemented for BBDB sync. I
considered PyOrgMode (https://github.com/bjonnh/PyOrgMode/network), but
it appears unable to process TODOs, or even recurring events. To be able
to extend PyOrgMode so I can read and write TODOs, I needed a full
description of the format of TODO entries in all its forms. The Org
manual itself has this information, I'm sure but scattered all over the
place, given its real audience. Can someone point me to some sort of a
concise representation, if any, of the org file format grammar?
*
*
By quickly reading the documentation I figured that org-protocol can be
used to create entries, but is there a way to use it to do generic
queries like "list all TODOs in a specified file, with a particular
property value" and such?
Any help is much appreciated.
-Karra