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.