]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/commitdiff
rename todo/incomplete_patch.pl to todo/sort_parameter_for_map_plugin_and_directive...
authorchrysn <chrysn@web>
Fri, 16 Mar 2012 01:34:12 +0000 (21:34 -0400)
committeradmin <admin@branchable.com>
Fri, 16 Mar 2012 01:34:12 +0000 (21:34 -0400)
doc/todo/incomplete_patch.pl [deleted file]
doc/todo/sort_parameter_for_map_plugin_and_directive/incomplete_patch.pl.pl [new file with mode: 0644]

diff --git a/doc/todo/incomplete_patch.pl b/doc/todo/incomplete_patch.pl
deleted file mode 100644 (file)
index 1297be6..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-diff --git a/IkiWiki/Plugin/map.pm b/IkiWiki/Plugin/map.pm
-index 38f090f..6b884cd 100644
---- a/IkiWiki/Plugin/map.pm
-+++ b/IkiWiki/Plugin/map.pm
-@@ -25,6 +25,42 @@ sub getsetup () {
-               },
- }
-+sub strategy_byparents (@) {
-+      # Sort by parents only
-+      #
-+      # With this strategy, children are sorted *under* their parents
-+      # regardless of their own position, and the parents' positions are
-+      # determined only by comparing the parents themselves.
-+
-+      # FIXME this is *not* what's described above, but the old behavior (for
-+      # testing/comparison)
-+      use sort 'stable';
-+      my (@sequence,) = @_;
-+      @sequence = sort @sequence;
-+      return @sequence;
-+}
-+
-+sub strategy_forcedsequence (@) {
-+      # Forced Sequence Mode
-+      #
-+      # Using this strategy, all entries will be shown in the sequence; this
-+      # can cause parents to show up multiple times.
-+      #
-+      # The only reason why this is not the identical function is that
-+      # parents that are sorted between their children are bubbled up to the
-+      # top of their contiguous children to avoid being repeated in the
-+      # output.
-+
-+      use sort 'stable';
-+
-+      my (@sequence,) = @_;
-+      # FIXME: i'm surprised that this actually works. i'd expect this to
-+      # work with bubblesort, but i'm afraid that this may just not yield the
-+      # correct results with mergesort.
-+      @sequence = sort {($b eq substr($a, 0, length($b))) - ($a eq substr($b, 0, length($a)))} @sequence;
-+      return @sequence;
-+}
-+
- sub preprocess (@) {
-       my %params=@_;
-       $params{pages}="*" unless defined $params{pages};
-@@ -37,8 +73,11 @@ sub preprocess (@) {
-       # Get all the items to map.
-       my %mapitems;
-+      my @mapsequence;
-       foreach my $page (pagespec_match_list($params{page}, $params{pages},
--                                      deptype => $deptype)) {
-+                                      deptype => $deptype,
-+                                      sort => exists $params{sort} ? $params{sort} : "title")) {
-+              push(@mapsequence, $page);
-               if (exists $params{show} && 
-                   exists $pagestate{$page} &&
-                   exists $pagestate{$page}{meta}{$params{show}}) {
-@@ -88,7 +127,15 @@ sub preprocess (@) {
-               $map .= "<ul>\n";
-       }
--      foreach my $item (sort keys %mapitems) {
-+      if (!exists $params{strategy} || $params{strategy} eq "parent") {
-+              @mapsequence = strategy_byparents(@mapsequence);
-+      } elsif ($params{strategy} eq "forced") {
-+              @mapsequence = strategy_forcedsequence(@mapsequence);
-+      } else {
-+              error("Unknown strategy.");
-+      }
-+
-+      foreach my $item (@mapsequence) {
-               my @linktext = (length $mapitems{$item} ? (linktext => $mapitems{$item}) : ());
-               $item=~s/^\Q$common_prefix\E\///
-                       if defined $common_prefix && length $common_prefix;
diff --git a/doc/todo/sort_parameter_for_map_plugin_and_directive/incomplete_patch.pl.pl b/doc/todo/sort_parameter_for_map_plugin_and_directive/incomplete_patch.pl.pl
new file mode 100644 (file)
index 0000000..1297be6
--- /dev/null
@@ -0,0 +1,77 @@
+diff --git a/IkiWiki/Plugin/map.pm b/IkiWiki/Plugin/map.pm
+index 38f090f..6b884cd 100644
+--- a/IkiWiki/Plugin/map.pm
++++ b/IkiWiki/Plugin/map.pm
+@@ -25,6 +25,42 @@ sub getsetup () {
+               },
+ }
++sub strategy_byparents (@) {
++      # Sort by parents only
++      #
++      # With this strategy, children are sorted *under* their parents
++      # regardless of their own position, and the parents' positions are
++      # determined only by comparing the parents themselves.
++
++      # FIXME this is *not* what's described above, but the old behavior (for
++      # testing/comparison)
++      use sort 'stable';
++      my (@sequence,) = @_;
++      @sequence = sort @sequence;
++      return @sequence;
++}
++
++sub strategy_forcedsequence (@) {
++      # Forced Sequence Mode
++      #
++      # Using this strategy, all entries will be shown in the sequence; this
++      # can cause parents to show up multiple times.
++      #
++      # The only reason why this is not the identical function is that
++      # parents that are sorted between their children are bubbled up to the
++      # top of their contiguous children to avoid being repeated in the
++      # output.
++
++      use sort 'stable';
++
++      my (@sequence,) = @_;
++      # FIXME: i'm surprised that this actually works. i'd expect this to
++      # work with bubblesort, but i'm afraid that this may just not yield the
++      # correct results with mergesort.
++      @sequence = sort {($b eq substr($a, 0, length($b))) - ($a eq substr($b, 0, length($a)))} @sequence;
++      return @sequence;
++}
++
+ sub preprocess (@) {
+       my %params=@_;
+       $params{pages}="*" unless defined $params{pages};
+@@ -37,8 +73,11 @@ sub preprocess (@) {
+       # Get all the items to map.
+       my %mapitems;
++      my @mapsequence;
+       foreach my $page (pagespec_match_list($params{page}, $params{pages},
+-                                      deptype => $deptype)) {
++                                      deptype => $deptype,
++                                      sort => exists $params{sort} ? $params{sort} : "title")) {
++              push(@mapsequence, $page);
+               if (exists $params{show} && 
+                   exists $pagestate{$page} &&
+                   exists $pagestate{$page}{meta}{$params{show}}) {
+@@ -88,7 +127,15 @@ sub preprocess (@) {
+               $map .= "<ul>\n";
+       }
+-      foreach my $item (sort keys %mapitems) {
++      if (!exists $params{strategy} || $params{strategy} eq "parent") {
++              @mapsequence = strategy_byparents(@mapsequence);
++      } elsif ($params{strategy} eq "forced") {
++              @mapsequence = strategy_forcedsequence(@mapsequence);
++      } else {
++              error("Unknown strategy.");
++      }
++
++      foreach my $item (@mapsequence) {
+               my @linktext = (length $mapitems{$item} ? (linktext => $mapitems{$item}) : ());
+               $item=~s/^\Q$common_prefix\E\///
+                       if defined $common_prefix && length $common_prefix;