From: http://www.cse.unsw.edu.au/~willu/ Date: Sun, 3 Aug 2008 02:20:53 +0000 (-0400) Subject: small patch update X-Git-Tag: 2.60~107^2~4 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=4cdf41df0cd1383f50060922ea9dafb8c5323051;p=ikiwiki.git small patch update --- diff --git a/doc/bugs/map_is_inconsistent_about_bare_directories.mdwn b/doc/bugs/map_is_inconsistent_about_bare_directories.mdwn index c1f388001..6e9dc104d 100644 --- a/doc/bugs/map_is_inconsistent_about_bare_directories.mdwn +++ b/doc/bugs/map_is_inconsistent_about_bare_directories.mdwn @@ -75,15 +75,17 @@ Attached is a [[patch]] that fixes the issue. The current map code makes one pa Note: This patch adds items to a map while it is in a foreach loop over a sorted list of keys from that same map. Changing a map while iterating through it is normally problematic. I'm assuming the sort insulates the code from this - I do not need to iterate over any of the newly added elements. diff --git a/IkiWiki/Plugin/map.pm b/IkiWiki/Plugin/map.pm - index 5b6a843..142073d 100644 + index 5b6a843..16de45e 100644 --- a/IkiWiki/Plugin/map.pm +++ b/IkiWiki/Plugin/map.pm - @@ -67,6 +67,37 @@ sub preprocess (@) { #{{{ + @@ -67,6 +67,39 @@ sub preprocess (@) { #{{{ # are removed. add_depends($params{page}, join(" or ", keys %mapitems)); + # Include all the parent directories in the map + my $lastbase=""; + + my $commonbase = ""; + + $commonbase = $common_prefix if defined $common_prefix && length $common_prefix; + foreach my $item (sort keys %mapitems) { + $item=~s/^\Q$common_prefix\E\/// + if defined $common_prefix && length $common_prefix; @@ -92,7 +94,7 @@ Note: This patch adds items to a map while it is in a foreach loop over a sorted + # find the common dir + my @a=split(/\//, $itembase); + my @b=split(/\//, $lastbase); - + my $common_dir=""; + + my $common_dir=$commonbase; + while (@a && @b && $a[0] eq $b[0]) { + if (length $common_dir) { + $common_dir.="/";