commonmarker-pluggable
commonmarker-pluggable adds support for plugins to CommonMarker.
The cmark reference parser used by CommonMarker supports extensions to the
CommonMark specification but these are written in C. The commonmarker-pluggable
plugin allows users to extend CommonMarker's parsing capabilities with plugins
written in Ruby.
Installation
The commonmarker-pluggable plugin requires the commonmarker plugin to
be installed and configured (instructions here). The only additional
step is to add commonmarker-pluggable to your Gemfile like so:
gem 'commonmarker'
gem 'commonmarker-pluggable'Writing Plugins
Once commonmarker-pluggable is installed, you can add plugins that manipulate
the Markdown document parsed by cmark.
Plugins are automatically detected by commonmark-pluggable if they are within
the Commonmarker::Plugin namespace as demonstrated below. Please note that the
plugin itself must be of type Module.
A plugin must implement the self.call() module method. This method takes one
argument: doc. This is a CommonMarker::Node object representing the
top-most node of a parsed Markdown document.
An example plugin is set out below:
module CommonMarker
module Plugin
module Example
def self.call(doc)
doc.walk do |node|
node.delete if node.string_content == 'To be deleted'
end
end
end
end
endUsing with Jekyll
commonmarker-pluggable was originally written for use with Jekyll. If you want
to write a plugin that is both a CommonMarker plugin and a Jekyll plugin, you
need to ensure that commonmarker-pluggable is installed as a Jekyll plugin.
There are other ways to do this, but the easiest method is to include
commonmarker-pluggable in the :jekyll_plugins group in your Gemfile:
group :jekyll_plugins do
gem 'commonmarker-pluggable'
gem 'jekyll-commonmark'
...
endBugs
Found a bug? I'd love to know about it. The best way is to report them in the Issues section on GitHub.
Contributing
If you're interested in contributing to commonmarker-pluggable, feel free to fork and submit a pull request.
Versioning
The commonmarker-pluggable plugin uses Semantic Versioning 2.0.0.
Licence
The commonmarker-pluggable plugin is released into the public domain. See LICENSE.md for more details.