Fri Mar 9 16:12:50 2018 UTC ()
Apply upstream patch to fix regression with older libdiscount where
Markdown links were no longer rendered as links. Bump PKGREVISION.


(schmonz)
diff -r1.153 -r1.154 pkgsrc/www/ikiwiki/Makefile
diff -r1.125 -r1.126 pkgsrc/www/ikiwiki/distinfo
diff -r0 -r1.1 pkgsrc/www/ikiwiki/patches/patch-IkiWiki_Plugin_mdwn.pm
diff -r0 -r1.1 pkgsrc/www/ikiwiki/patches/patch-t_mdwn.t

cvs diff -r1.153 -r1.154 pkgsrc/www/ikiwiki/Makefile (expand / switch to unified diff)

--- pkgsrc/www/ikiwiki/Makefile 2018/03/04 17:40:28 1.153
+++ pkgsrc/www/ikiwiki/Makefile 2018/03/09 16:12:50 1.154
@@ -1,18 +1,19 @@ @@ -1,18 +1,19 @@
1# $NetBSD: Makefile,v 1.153 2018/03/04 17:40:28 schmonz Exp $ 1# $NetBSD: Makefile,v 1.154 2018/03/09 16:12:50 schmonz Exp $
2# 2#
3 3
4DISTNAME= ikiwiki_3.20180228.orig 4DISTNAME= ikiwiki_3.20180228.orig
5PKGNAME= ${DISTNAME:S/_/-/:S/.orig//} 5PKGNAME= ${DISTNAME:S/_/-/:S/.orig//}
 6PKGREVISION= 1
6CATEGORIES= www textproc 7CATEGORIES= www textproc
7MASTER_SITES= ${MASTER_SITE_DEBIAN:=pool/main/i/ikiwiki/} 8MASTER_SITES= ${MASTER_SITE_DEBIAN:=pool/main/i/ikiwiki/}
8EXTRACT_SUFX= .tar.xz 9EXTRACT_SUFX= .tar.xz
9 10
10MAINTAINER= schmonz@NetBSD.org 11MAINTAINER= schmonz@NetBSD.org
11HOMEPAGE= https://ikiwiki.info/ 12HOMEPAGE= https://ikiwiki.info/
12COMMENT= Flexible static site generator with dynamic features 13COMMENT= Flexible static site generator with dynamic features
13LICENSE= gnu-gpl-v2 14LICENSE= gnu-gpl-v2
14 15
15DEPENDS+= p5-Text-Markdown-Discount-[0-9]*:../../textproc/p5-Text-Markdown-Discount 16DEPENDS+= p5-Text-Markdown-Discount-[0-9]*:../../textproc/p5-Text-Markdown-Discount
16DEPENDS+= p5-URI>=1.36:../../www/p5-URI 17DEPENDS+= p5-URI>=1.36:../../www/p5-URI
17DEPENDS+= p5-HTML-Parser-[0-9]*:../../www/p5-HTML-Parser 18DEPENDS+= p5-HTML-Parser-[0-9]*:../../www/p5-HTML-Parser
18DEPENDS+= p5-HTML-Template-[0-9]*:../../www/p5-HTML-Template 19DEPENDS+= p5-HTML-Template-[0-9]*:../../www/p5-HTML-Template

cvs diff -r1.125 -r1.126 pkgsrc/www/ikiwiki/distinfo (expand / switch to unified diff)

--- pkgsrc/www/ikiwiki/distinfo 2018/03/02 19:20:20 1.125
+++ pkgsrc/www/ikiwiki/distinfo 2018/03/09 16:12:50 1.126
@@ -1,8 +1,10 @@ @@ -1,8 +1,10 @@
1$NetBSD: distinfo,v 1.125 2018/03/02 19:20:20 schmonz Exp $ 1$NetBSD: distinfo,v 1.126 2018/03/09 16:12:50 schmonz Exp $
2 2
3SHA1 (ikiwiki_3.20180228.orig.tar.xz) = 736abf42a48007ac379bb1243ba120e7ec44a5a3 3SHA1 (ikiwiki_3.20180228.orig.tar.xz) = 736abf42a48007ac379bb1243ba120e7ec44a5a3
4RMD160 (ikiwiki_3.20180228.orig.tar.xz) = e8ac97d347228caacec54c5af8206ab457e7d46a 4RMD160 (ikiwiki_3.20180228.orig.tar.xz) = e8ac97d347228caacec54c5af8206ab457e7d46a
5SHA512 (ikiwiki_3.20180228.orig.tar.xz) = d3b20ff564ece42057ea7c4693a53ff1053874c55163b540d2d9ac184fb9bae2b36ebd0de7335fee7251134768e3bbdcbefc2915a728ef305948e7bf2463b88f 5SHA512 (ikiwiki_3.20180228.orig.tar.xz) = d3b20ff564ece42057ea7c4693a53ff1053874c55163b540d2d9ac184fb9bae2b36ebd0de7335fee7251134768e3bbdcbefc2915a728ef305948e7bf2463b88f
6Size (ikiwiki_3.20180228.orig.tar.xz) = 2637180 bytes 6Size (ikiwiki_3.20180228.orig.tar.xz) = 2637180 bytes
 7SHA1 (patch-IkiWiki_Plugin_mdwn.pm) = 881d202ea0a325575c62f80d4432557398675778
7SHA1 (patch-Makefile.PL) = 35f12c579d497d2462d8e0c0f84c2e2144aaec60 8SHA1 (patch-Makefile.PL) = 35f12c579d497d2462d8e0c0f84c2e2144aaec60
8SHA1 (patch-po_Makefile) = 7adc25868a3d36157f7e3af7caedcec67e008397 9SHA1 (patch-po_Makefile) = 7adc25868a3d36157f7e3af7caedcec67e008397
 10SHA1 (patch-t_mdwn.t) = 6c4fb5489cf36755b12825a57c2c7fae6e6dfc36

File Added: pkgsrc/www/ikiwiki/patches/Attic/patch-IkiWiki_Plugin_mdwn.pm
$NetBSD: patch-IkiWiki_Plugin_mdwn.pm,v 1.1 2018/03/09 16:12:50 schmonz Exp $

Automatically detect which libdiscount flags to use.

--- IkiWiki/Plugin/mdwn.pm.orig	2018-02-28 10:41:06.000000000 +0000
+++ IkiWiki/Plugin/mdwn.pm
@@ -89,6 +89,55 @@ sub htmlize (@) {
 		    (! exists $config{nodiscount} || ! $config{nodiscount})) {
 			eval q{use Text::Markdown::Discount};
 			if (! $@) {
+				my $markdown = \&Text::Markdown::Discount::markdown;
+				my $always_flags = 0;
+
+				# Disable Pandoc-style % Title, % Author, % Date
+				# Use the meta plugin instead
+				$always_flags |= Text::Markdown::Discount::MKD_NOHEADER();
+
+				# Disable Unicodification of quote marks, em dashes...
+				# Use the typography plugin instead
+				$always_flags |= Text::Markdown::Discount::MKD_NOPANTS();
+
+				# Workaround for discount's eliding of <style> blocks.
+				# https://rt.cpan.org/Ticket/Display.html?id=74016
+				if (Text::Markdown::Discount->can('MKD_NOSTYLE')) {
+					$always_flags |= Text::Markdown::Discount::MKD_NOSTYLE();
+				}
+				elsif ($markdown->('<style>x</style>', 0) !~ '<style>' &&
+					$markdown->('<style>x</style>', 0x00400000) =~ m{<style>x</style>}) {
+					$always_flags |= 0x00400000;
+				}
+
+				# Enable fenced code blocks in libmarkdown >= 2.2.0
+				# https://bugs.debian.org/888055
+				if (Text::Markdown::Discount->can('MKD_FENCEDCODE')) {
+					$always_flags |= Text::Markdown::Discount::MKD_FENCEDCODE();
+				}
+				elsif ($markdown->("~~~\nx\n~~~", 0) !~ m{<pre\b} &&
+					$markdown->("~~~\nx\n~~~", 0x02000000) =~ m{<pre\b}) {
+					$always_flags |= 0x02000000;
+				}
+
+				# PHP Markdown Extra-style term\n: definition -> <dl>
+				if (Text::Markdown::Discount->can('MKD_DLEXTRA')) {
+					$always_flags |= Text::Markdown::Discount::MKD_DLEXTRA();
+				}
+				elsif ($markdown->("term\n: def\n", 0) !~ m{<dl>} &&
+					$markdown->("term\n: def\n", 0x01000000) =~ m{<dl>}) {
+					$always_flags |= 0x01000000;
+				}
+
+				# Allow dashes and underscores in tag names
+				if (Text::Markdown::Discount->can('MKD_GITHUBTAGS')) {
+					$always_flags |= Text::Markdown::Discount::MKD_GITHUBTAGS();
+				}
+				elsif ($markdown->('<foo_bar>', 0) !~ m{<foo_bar} &&
+					$markdown->('<foo_bar>', 0x08000000) =~ m{<foo_bar\b}) {
+					$always_flags |= 0x08000000;
+				}
+
 				$markdown_sub=sub {
 					my $t=shift;
 
@@ -96,15 +145,7 @@ sub htmlize (@) {
 					# https://rt.cpan.org/Ticket/Display.html?id=73657
 					return "" if $t=~/^\s*$/;
 
-					my $flags=0;
-
-					# Disable Pandoc-style % Title, % Author, % Date
-					# Use the meta plugin instead
-					$flags |= Text::Markdown::Discount::MKD_NOHEADER();
-
-					# Disable Unicodification of quote marks, em dashes...
-					# Use the typography plugin instead
-					$flags |= Text::Markdown::Discount::MKD_NOPANTS();
+					my $flags=$always_flags;
 
 					if ($config{mdwn_footnotes}) {
 						$flags |= Text::Markdown::Discount::MKD_EXTRA_FOOTNOTE();
@@ -114,42 +155,6 @@ sub htmlize (@) {
 						$flags |= Text::Markdown::Discount::MKD_NOALPHALIST();
 					}
 
-					# Workaround for discount's eliding
-					# of <style> blocks.
-					# https://rt.cpan.org/Ticket/Display.html?id=74016
-					if (Text::Markdown::Discount->can("MKD_NOSTYLE")) {
-						$flags |= Text::Markdown::Discount::MKD_NOSTYLE();
-					}
-					else {
-						# This is correct for the libmarkdown.so.2 ABI
-						$flags |= 0x00400000;
-					}
-
-					# Enable fenced code blocks in libmarkdown >= 2.2.0
-					# https://bugs.debian.org/888055
-					if (Text::Markdown::Discount->can("MKD_FENCEDCODE")) {
-						$flags |= Text::Markdown::Discount::MKD_FENCEDCODE();
-					}
-					else {
-						$flags |= 0x02000000;
-					}
-
-					# PHP Markdown Extra-style term\n: definition -> <dl>
-					if (Text::Markdown::Discount->can("MKD_DLEXTRA")) {
-						$flags |= Text::Markdown::Discount::MKD_DLEXTRA();
-					}
-					else {
-						$flags |= 0x01000000;
-					}
-
-					# Allow dashes and underscores in tag names
-					if (Text::Markdown::Discount->can("MKD_GITHUBTAGS")) {
-						$flags |= Text::Markdown::Discount::MKD_GITHUBTAGS();
-					}
-					else {
-						$flags |= 0x08000000;
-					}
-
 					return Text::Markdown::Discount::markdown($t, $flags);
 				}
 			}

File Added: pkgsrc/www/ikiwiki/patches/Attic/patch-t_mdwn.t
$NetBSD: patch-t_mdwn.t,v 1.1 2018/03/09 16:12:50 schmonz Exp $

Automatically detect which libdiscount flags to use.

--- t/mdwn.t.orig	2018-02-28 10:41:06.000000000 +0000
+++ t/mdwn.t
@@ -8,6 +8,7 @@ BEGIN { use_ok("IkiWiki"); }
 
 %config=IkiWiki::defaultconfig();
 $config{srcdir}=$config{destdir}="/dev/null";
+$config{disable_plugins}=["htmlscrubber"];
 IkiWiki::loadplugins();
 IkiWiki::checkconfig();
 
@@ -41,4 +42,25 @@ like(IkiWiki::htmlize("foo", "foo", "mdw
 	"This works[^1]\n\n[^1]: Sometimes it doesn't.\n"),
 	qr{<p>This works<sup\W}, "footnotes can be enabled");
 
+SKIP: {
+	skip 'set $IKIWIKI_TEST_ASSUME_MODERN_DISCOUNT if you have Discount 2.2.0+', 4
+		unless $ENV{IKIWIKI_TEST_ASSUME_MODERN_DISCOUNT};
+	like(IkiWiki::htmlize("foo", "foo", "mdwn",
+			"Definition list\n: A useful HTML structure\n"),
+		qr{<dl>.*<dt>Definition list</dt>\s*<dd>A useful HTML structure</dd>}s,
+		"definition lists are enabled by default");
+	like(IkiWiki::htmlize("foo", "foo", "mdwn",
+			"```\n#!/bin/sh\n```\n"),
+		qr{<pre>\s*<code>\s*[#]!/bin/sh\s*</code>\s*</pre>}s,
+		"code blocks are enabled by default");
+	like(IkiWiki::htmlize("foo", "foo", "mdwn",
+			"<foo_bar>"),
+		qr{<foo_bar>},
+		"GitHub tag name extensions are enabled by default");
+	like(IkiWiki::htmlize("foo", "foo", "mdwn",
+			"<style>foo</style>"),
+		qr{<style>foo</style>},
+		"Styles are not stripped by default");
+}
+
 done_testing();