[[!template id=gitbranch branch=wtk/mdwn author="[[wtk]]"]]
summary
Make it easy to configure the Markdown implementation used by the
[[plugins/mdwn]] plugin. With this patch, you can set the path to an
external Markdown executable in your ikiwiki config file. If you do
not set a path, the plugin will use the usual config options to
determine which Perl module to use.
This adds a configuration in which a new process has to be worked
for every single page rendered. Actually, it doesn't only add
such a configuration, it makes it be done by default.
Markdown is ikiwiki's default, standard renderer. A configuration
that makes it slow will make ikiwiki look bad.
I would not recommend using Gruber's perl markdown. It is old, terminally
buggy, and unmaintained. --[[Joey]] [[!tag reviewed]]
I wasn't trying to make an external markdown the default, I was trying
to make the currently hardcoded /usr/bin/markdown
configurable. It
should only use an external process if markdown_path
is set, which
it is not by default. Consider the following tests from clean checkouts:
Current ikiwiki trunk:
$ PERL5LIB="." time ikiwiki --setup docwiki.setup
...
38.73user 0.62system 1:20.90elapsed 48%CPU (0avgtext+0avgdata 103040maxresident)k
0inputs+6472outputs (0major+19448minor)pagefaults 0swaps
My mdwn branch:
$ PERL5LIB="." time ikiwiki --setup docwiki.setup
...
Markdown: Text::Markdown::markdown()
...
39.17user 0.73system 1:21.77elapsed 48%CPU (0avgtext+0avgdata 103072maxresident)k
0inputs+6472outputs (0major+19537minor)pagefaults 0swaps
My mdwn branch with markdown_path => "/usr/bin/markdown"
added in
docwiki.setup
(on my system, /usr/bin/markdown
is a command-line
wrapper for Text::Markdown::markdown
).
$ PERL5LIB="." time ikiwiki --setup docwiki.setup
...
Markdown: /usr/bin/markdown
...
175.35user 18.99system 6:38.19elapsed 48%CPU (0avgtext+0avgdata 92320maxresident)k
0inputs+17608outputs (0major+2189080minor)pagefaults 0swaps
So my patch doesn't make ikiwiki slow unless the user explicitly
requests an extenral markdown, which they would presumably only do to
work around bugs in their system's Perl implementation.
-- [[wtk]]