Things Parser 3

I’ve just updated my Things Parser to version 3 in the action directory. I’ve decided to move from the old custom syntax to TaskPaper to take advantage of the syntax highlighting in Drafts and to aid compatibility with other apps.

If you’ve never used Things Parser before, it takes tasks written in the TaskPaper format and imports them into the Things app. It supports everything that Things itself does including checklists, headings, natural language dates and more. You can read more about the details in my blog post.

In addition, to this, it also allows the use of template variables using the Mustache Prompt system, which you can read about in this blog post.

1 Like

If it’s Taskpaper is it specifically Things anymore? (I’m not a Things user but have some interest in Taskpaper format.)

My action is for importing TaskPaper into Things, and so it does have some Things specific affordances. For example, you can use @when() as well as the more standard @defer(), or @completed as well as @done.

Broadly speaking, there are two ways you can use TaskPaper. One is to use it as a format to write out project templates and then import into your app of choice, such as OmniFocus or (using my script) Things. The other way to use it is just to do all your task management directly in a plain-text TaskPaper document. The actual TaskPaper app is an interface for doing this on the Mac, and Drafts is a great place to do that on iOS.

1 Like

Right. And, by the way, md2pptx allows you to place tasks in the Markdown stream when making a PowerPoint presentation. (If you do the tasks appear in special Tasks slides at the end, with live links to the slide they were defined on.)

My point, apart from self-publicity :slight_smile: , is to reinforce the view that Taskpaper format, as opposed to the app, is really handy in lots of contexts.

I got into this thread by wondering whether your action has its own “party tricks” when it comes to handling Taskpaper lines.

EDIT: I forgot to mention that maybe Mustache is the “party trick”.

Nice! I will check out your script.

Yes, I agree, what’s great about the TaskPaper format is that it is gradually being adopted by a number of apps, so that it becomes a standard interchange format.

Yes, you are right that the main “party trick” is the Mustache templates, which allows for the creation of flexible and powerful project templates with relative dates, optional sections, and even a sort of for-loop functionality. In addition to that, there are a couple of little touches specifically designed for Things: for example the way that sub-tasks are translated into checklists and sub-projects into headings.


If it’s Mustache that’s central I’d trade on that, as much as Things and Taskpaper.

I was having issues creating projects. My own examples seemed to only convert to tasks on iOS and macOS. When I use the action on your example from the readme I get 3 tasks instead of a project.

They can obviously have tasks:
- like this one
- and this one

You need to use indentation to make sure the tasks “belong” to the project. So make sure the 2nd and 3rd line of your example begin with a tab character or a number of spaces.

As a matter of (more than academic) interest, not indenting still makes it a valid Taskpaper task, right?

(md2pptx supports this so it had better be right. It doesn’t attempt any corralling into projects. It’s why dashes aren’t allowed as bullet markers in md2pptx.)

Good question. My understanding is that there is no “official” spec for the TaskPaper format. My script uses the same parser, Birch Outline, as the Mac App called TaskPaper, which is the origin of the format. It does require indentation to denote hierarchy, so I’ve simply followed that. Perhaps the behaviour of Birch Outline is the closest we have to an official spec?

1 Like

Just re-reading your question, perhaps I misunderstood. An isolated task outside of a project doesn’t need to be indented to be valid, but indentation is required for a task inside a project (or for subtasks).

1 Like

Thanks. Then what md2pptx does is right:

  • Require * as a bullet marker - with indentation honoured.
  • Reserve - as a Taskpaper task marker, with at least one @ required on the same line.

Not quite compliant but it covers almost all the bases.

It’s easy then to winnow out the tasks. Also md2pptx uses these tasks to create Task Slides at the end of the presentation, parsing popular @ values to create tables - with each task row pointing with a live link back to the slide it’s meant for.

The point is this is good for presentation project management.

But I digress. Sorry!