discount support
authorJoey Hess <joey@kitenet.net>
Sun, 1 Jan 2012 20:56:32 +0000 (16:56 -0400)
committerJoey Hess <joey@kitenet.net>
Sun, 1 Jan 2012 21:28:31 +0000 (17:28 -0400)
mdwn: Can use the discount markdown library, via the
Text::Markdown::Discount perl module.

This is preferred if available since it's the fastest currently supported
markdown library, speeding up markdown rendering by a factor of 40.

That is to say, when only rendering a lot of markdown, discount is 40x
faster. When building a ikiwiki site,¬†ikiwiki's other overhead gets in the
way, but I still see significant speedups. Building the ikiwiki docwiki
dropped from 62 to 45 seconds, for example.

However, when multimarkdown is enabled, Text::Markdown::Multimarkdown is
still used.

While discount contains some nonstandard markdown extensions,
including tables and footnotes, AFAICS most of them are not
enabled by default in the perl bindings.

I consider sticking to non-extended markdown a desirable thing, since this
is probably not the last markdown engine. In particular, sundown is waiting
in the wings to get packaged and get a perl binding.

----

Reviewing all the showdown extensions, here are the ones that are enabled:

centered paragraphs:

->centered<-

image sizes: [dust mite](http://dust.mite =150x150)

<style>..</style> blocks are eaten. The perl binding does not provide
access to the gathered CSS. This is not legal html anyway, so unlikely
to cause breakage.

IkiWiki/Plugin/mdwn.pm
debian/changelog
doc/plugins/mdwn.mdwn

index b892eabee29be50387fa493baafd5dbd6d1024a8..0dc0cc336d51556364bf968014158d2d9c0a0620 100644 (file)
@@ -50,6 +50,12 @@ sub htmlize (@) {
                                }
                        }
                }
+               if (! defined $markdown_sub) {
+                       eval q{use Text::Markdown::Discount};
+                       if (! $@) {
+                               $markdown_sub=\&Text::Markdown::Discount::markdown;
+                       }
+               }
                if (! defined $markdown_sub) {
                        eval q{use Text::Markdown};
                        if (! $@) {
index 6cd19d7c28c45861d08db3e7e446653dfead3d07..a33b3d1b758f7b6e5d00d553d5f0d5c8d00e147d 100644 (file)
@@ -1,3 +1,14 @@
+ikiwiki (3.20111230) UNRELEASED; urgency=low
+
+  * mdwn: Can use the discount markdown library, via the
+    Text::Markdown::Discount perl module. This is preferred if available
+    since it's the fastest currently supported markdown library, speeding up
+    ikiwiki's rendering by a factor of 40.
+    (However, when multimarkdown is enabled, Text::Markdown::Multimarkdown
+    is still used.)
+
+ -- Joey Hess <joeyh@debian.org>  Sun, 01 Jan 2012 16:22:24 -0400
+
 ikiwiki (3.20111229) unstable; urgency=low
 
   * Consume all stdin when rcs_receive short-circuits,
index ce1b6097aea5e2a8c70c4d7264a87faa2af30e99..8a7308305b611677ef482b332d8742cdf9a3fcb1 100644 (file)
@@ -8,9 +8,12 @@ This is the standard markup language used by ikiwiki, although some others
 are also available in other plugins.
 
 There are several implementations of markdown support that can be used by
-this plugin. The [original version of
-markdown](http://daringfireball.net/projects/markdown/) can be used, or the
-[[!cpan Text::Markdown]] perl module.
+this plugin. In order of preference:
+
+* [Discount](http://www.pell.portland.or.us/~orc/Code/discount/),
+  via the [[!cpan Text::Markdown::Discount]] perl module.
+* The [[!cpan Text::Markdown]] perl module.
+* The [original version of markdown](http://daringfireball.net/projects/markdown/).
 
 [[!cpan Text::MultiMarkdown]] can be used in order to use tables, footnotes,
 and other new features from the markdown variant called