Taskpaper and jekyll

So I run my jekyll site from Dropbox using the dropbox cli on digital ocean, which is cool because it lets me tie lots of other kinds of services into jekyll.

I was thinking today that it would be really cool to sync my taskpaper pages to my jekyll server in a _tasks folder and have some kind of custom markdown processor that turns them into a viewable page.

Taskpaper is already a kind of markdown variant, but there’s no frontmatter and there’s a .taskpaper extension…

Has anybody done something like this before or have a notion of how I might start?

The obvious solution is to depend on a third-party plugin.
If you intend to write the plugin yourselves, the following considerations may be helpful:

  • Apart from _layouts, _includes, _sass, _data and _plugins Jekyll doesn’t read directories that start with an underscore (and some other special characters) unless the directory has been configured as a collection, or a special directory (in lieu of above names).
  • If you configure _tasks to be a collection directory, then files without front matter will be considered as Jekyll::StaticFile objects.
  • On the other hand, a subclass of Jekyll::Generator can be implemented to read such files that will be otherwise ignored by Jekyll and generate Jekyll::Page objects for each *.taskpaper file irrespective of whether they contain front matter. The Page objects so generated will be passed onto a subclass of Jekyll::Converters::Converter that processes the custom Markdown into the format desired.
    In short, your plugin will consist of two parts:
    • A Generator to generate Jekyll objects
    • A Converter to process the generated Jekyll objects

Refer https://jekyllrb.com/docs/plugins/your-first-plugin/ for additional information.

It sounds like Generator/Converter is the way to go.

I’m very at ease with liquid and other parts of Jekyll but I am a novice with Ruby, but maybe this will be a good first project.

I’m curious if you created this plugin? I’m looking to do something similar and don’t want to reinvent the wheel if it has already been created.