aboutsummaryrefslogtreecommitdiff
path: root/IkiWiki
diff options
context:
space:
mode:
authorAmitai Schlair <schmonz-web-ikiwiki@schmonz.com>2013-03-17 15:01:13 -0400
committerAmitai Schlair <schmonz-web-ikiwiki@schmonz.com>2013-03-17 15:01:13 -0400
commit137ed653ea6b080d540f0740e280e22aa2d40e43 (patch)
tree966cdf5eb9326f1e2c91ebe72eb867928506c8a9 /IkiWiki
parentb5bbe66b178a6634a37f6597e55272e8a6869263 (diff)
parent030c7a4f8b06b097e18f638b0650baa966c50964 (diff)
downloadikiwiki-137ed653ea6b080d540f0740e280e22aa2d40e43.tar
ikiwiki-137ed653ea6b080d540f0740e280e22aa2d40e43.tar.gz
Merge branch 'master' into fancypodcast
Conflicts: doc/todo/fancypodcast.mdwn
Diffstat (limited to 'IkiWiki')
-rw-r--r--IkiWiki/Plugin/map.pm50
-rw-r--r--IkiWiki/Plugin/underlay.pm1
-rw-r--r--IkiWiki/Setup.pm9
3 files changed, 38 insertions, 22 deletions
diff --git a/IkiWiki/Plugin/map.pm b/IkiWiki/Plugin/map.pm
index 38f090ff7..4a9bf58db 100644
--- a/IkiWiki/Plugin/map.pm
+++ b/IkiWiki/Plugin/map.pm
@@ -72,6 +72,9 @@ sub preprocess (@) {
$common_prefix=IkiWiki::dirname($common_prefix);
}
+ # Set this to 1 or more spaces to pretty-print maps for debugging
+ my $spaces = "";
+
# Create the map.
my $parent="";
my $indent=0;
@@ -94,33 +97,37 @@ sub preprocess (@) {
if defined $common_prefix && length $common_prefix;
my $depth = ($item =~ tr/\//\//) + 1;
my $baseitem=IkiWiki::dirname($item);
- my $parentbase=IkiWiki::dirname($parent);
- while (length $parentbase && length $baseitem && $baseitem !~ /^\Q$parentbase\E(\/|$)/) {
- $parentbase=IkiWiki::dirname($parentbase);
+ while (length $parent && length $baseitem && $baseitem !~ /^\Q$parent\E(\/|$)/) {
+ $parent=IkiWiki::dirname($parent);
last if length $addparent && $baseitem =~ /^\Q$addparent\E(\/|$)/;
$addparent="";
- $indent--;
- $map .= "</li>\n";
- if ($indent > 0) {
- $map .= "</ul>\n";
+ $map .= ($spaces x $indent) . "</li>\n";
+ if ($indent > 1) {
+ $map .= ($spaces x $indent) . "</ul><map:collapse>\n";
}
+ $indent--;
}
while ($depth < $indent) {
- $indent--;
- $map .= "</li>\n";
- if ($indent > 0) {
- $map .= "</ul>\n";
+ $map .= ($spaces x $indent) . "</li>\n";
+ if ($indent > 1) {
+ $map .= ($spaces x $indent) . "</ul>\n";
}
+ $indent--;
}
my @bits=split("/", $item);
my $p="";
- $indent++ unless length $parent;
$p.="/".shift(@bits) for 1..$indent;
while ($depth > $indent) {
- if (@bits && !(length $parent && "/$parent" eq $p)) {
+ $indent++;
+ if ($indent > 1) {
+ $map .= ($spaces x $indent) . "<ul><map:collapse>\n";
+ }
+ if ($depth > $indent) {
+ $p.="/".shift(@bits);
$addparent=$p;
$addparent=~s/^\///;
- $map .= "<li>"
+ $map .= ($spaces x $indent) . "<li>\n";
+ $map .= ($spaces x $indent)
.htmllink($params{page}, $params{destpage},
"/".$common_prefix.$p, class => "mapparent",
noimageinline => 1)
@@ -130,14 +137,10 @@ sub preprocess (@) {
else {
$openli=0;
}
- $indent++;
- $p.="/".shift(@bits) if @bits;
- if ($indent > 1) {
- $map .= "<ul>\n";
- }
}
- $map .= "</li>\n" if $openli;
- $map .= "<li>"
+ $map .= ($spaces x $indent) . "</li>\n" if $openli;
+ $map .= ($spaces x $indent) . "<li>\n";
+ $map .= ($spaces x $indent)
.htmllink($params{page}, $params{destpage},
"/".$common_prefix."/".$item,
@linktext,
@@ -147,9 +150,12 @@ sub preprocess (@) {
$parent=$item;
}
while ($indent > 0) {
+ $map .= ($spaces x $indent) . "</li>\n";
$indent--;
- $map .= "</li>\n</ul>\n";
+ $map .= ($spaces x $indent) . "</ul>\n";
}
+ $map =~ s{\n *</ul><map:collapse>\n *<ul><map:collapse>\n}{\n}gs;
+ $map =~ s{<map:collapse>}{}g;
$map .= "</div>\n";
return $map;
}
diff --git a/IkiWiki/Plugin/underlay.pm b/IkiWiki/Plugin/underlay.pm
index 3ea19c635..2967761c8 100644
--- a/IkiWiki/Plugin/underlay.pm
+++ b/IkiWiki/Plugin/underlay.pm
@@ -18,6 +18,7 @@ sub getsetup () {
plugin => {
safe => 0,
rebuild => undef,
+ section => "special-purpose",
},
add_underlays => {
type => "string",
diff --git a/IkiWiki/Setup.pm b/IkiWiki/Setup.pm
index 48f3d4634..453d19670 100644
--- a/IkiWiki/Setup.pm
+++ b/IkiWiki/Setup.pm
@@ -172,6 +172,11 @@ sub getsetup () {
my @s=eval { $IkiWiki::hooks{getsetup}{$plugin}{call}->() };
next unless @s;
+ if (scalar(@s) % 2 != 0) {
+ print STDERR "warning: plugin $plugin has a broken getsetup; ignoring\n";
+ next;
+ }
+
# set default section value (note use of shared
# hashref between array and hash)
my %s=@s;
@@ -223,6 +228,10 @@ sub commented_dump ($$) {
my $setup=$pair->[1];
my %s=@{$setup};
my $section=$s{plugin}->{section};
+ if (! defined $section) {
+ print STDERR "warning: missing section in $plugin\n";
+ $section="other";
+ }
push @{$section_plugins{$section}}, $plugin;
if (@{$section_plugins{$section}} == 1) {
push @ret, "", $indent.("#" x 70), "$indent# $section plugins",