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 (! $@) {
                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,
 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
 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
 
 [[!cpan Text::MultiMarkdown]] can be used in order to use tables, footnotes,
 and other new features from the markdown variant called