Add alternate patch
parent
6036a954a0
commit
3c65e5dc93
|
@ -87,3 +87,123 @@ I have also 2 considerations for inline sorting:
|
||||||
---
|
---
|
||||||
|
|
||||||
Joey, have you forgotten about that request? ;) --[[Paweł|ptecza]]
|
Joey, have you forgotten about that request? ;) --[[Paweł|ptecza]]
|
||||||
|
|
||||||
|
> Okie. Here is a different [[patch]] based on my comment above. It doesn't introduce
|
||||||
|
> a new key, but rather changes the title sorting order. Two caveats:
|
||||||
|
|
||||||
|
* I've only tested this in `inline`, not the other places I changed the sort order.
|
||||||
|
* I'm unsure if the regexp used in the split should be `/(-?\d+)/` instead of `/(\d+)/`.
|
||||||
|
As written, '-' is interpreted as a hyphen rather than a minus sign.
|
||||||
|
|
||||||
|
> --[[Will]]
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
diff --git a/IkiWiki.pm b/IkiWiki.pm
|
||||||
|
index c0f5dea..d001f8d 100644
|
||||||
|
--- a/IkiWiki.pm
|
||||||
|
+++ b/IkiWiki.pm
|
||||||
|
@@ -20,7 +20,7 @@ use Exporter q{import};
|
||||||
|
our @EXPORT = qw(hook debug error template htmlpage add_depends pagespec_match
|
||||||
|
bestlink htmllink readfile writefile pagetype srcfile pagename
|
||||||
|
displaytime will_render gettext urlto targetpage
|
||||||
|
- add_underlay
|
||||||
|
+ add_underlay titlecmp
|
||||||
|
%config %links %pagestate %renderedfiles
|
||||||
|
%pagesources %destsources);
|
||||||
|
our $VERSION = 2.00; # plugin interface version, next is ikiwiki version
|
||||||
|
@@ -835,6 +835,42 @@ sub titlepage ($) { #{{{
|
||||||
|
return $title;
|
||||||
|
} #}}}
|
||||||
|
|
||||||
|
+sub titlecmp ($$) { #{{{
|
||||||
|
+ my $titleA=shift;
|
||||||
|
+ my $titleB=shift;
|
||||||
|
+
|
||||||
|
+ my @listA=split(/(\d+)/,$titleA);
|
||||||
|
+ my @listB=split(/(\d+)/,$titleB);
|
||||||
|
+
|
||||||
|
+ while (@listA && @listB) {
|
||||||
|
+ # compare bits of text
|
||||||
|
+ my $a = shift @listA;
|
||||||
|
+ my $b = shift @listB;
|
||||||
|
+ my $c = ($a cmp $b);
|
||||||
|
+ return $c if ($c);
|
||||||
|
+
|
||||||
|
+ if (@listA && @listB) {
|
||||||
|
+ # compare numbers
|
||||||
|
+ $a = shift @listA;
|
||||||
|
+ $b = shift @listB;
|
||||||
|
+ $c = $a <=> $b;
|
||||||
|
+ return $c if ($c);
|
||||||
|
+
|
||||||
|
+ # 01 is different to 1
|
||||||
|
+ $c = (length($a) <=> length($b));
|
||||||
|
+ return $c if ($c);
|
||||||
|
+
|
||||||
|
+ $c = ($a cmp $b);
|
||||||
|
+ return $c if ($c);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return 1 if (@listA);
|
||||||
|
+ return -1 if (@listB);
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+} #}}}
|
||||||
|
+
|
||||||
|
sub linkpage ($) { #{{{
|
||||||
|
my $link=shift;
|
||||||
|
my $chars = defined $config{wiki_file_chars} ? $config{wiki_file_chars} : "-[:alnum:]+/.:_";
|
||||||
|
diff --git a/IkiWiki/Plugin/brokenlinks.pm b/IkiWiki/Plugin/brokenlinks.pm
|
||||||
|
index 37752dd..ccaa399 100644
|
||||||
|
--- a/IkiWiki/Plugin/brokenlinks.pm
|
||||||
|
+++ b/IkiWiki/Plugin/brokenlinks.pm
|
||||||
|
@@ -59,7 +59,7 @@ sub preprocess (@) { #{{{
|
||||||
|
map {
|
||||||
|
"<li>$_</li>"
|
||||||
|
}
|
||||||
|
- sort @broken)
|
||||||
|
+ sort titlecmp @broken)
|
||||||
|
."</ul>\n";
|
||||||
|
} # }}}
|
||||||
|
|
||||||
|
diff --git a/IkiWiki/Plugin/inline.pm b/IkiWiki/Plugin/inline.pm
|
||||||
|
index 8efef3f..263e7a6 100644
|
||||||
|
--- a/IkiWiki/Plugin/inline.pm
|
||||||
|
+++ b/IkiWiki/Plugin/inline.pm
|
||||||
|
@@ -192,7 +192,7 @@ sub preprocess_inline (@) { #{{{
|
||||||
|
}
|
||||||
|
|
||||||
|
if (exists $params{sort} && $params{sort} eq 'title') {
|
||||||
|
- @list=sort { pagetitle(basename($a)) cmp pagetitle(basename($b)) } @list;
|
||||||
|
+ @list=sort { titlecmp(pagetitle(basename($a)),pagetitle(basename($b))) } @list;
|
||||||
|
}
|
||||||
|
elsif (exists $params{sort} && $params{sort} eq 'mtime') {
|
||||||
|
@list=sort { $pagemtime{$b} <=> $pagemtime{$a} } @list;
|
||||||
|
diff --git a/IkiWiki/Plugin/orphans.pm b/IkiWiki/Plugin/orphans.pm
|
||||||
|
index b910758..10a1d87 100644
|
||||||
|
--- a/IkiWiki/Plugin/orphans.pm
|
||||||
|
+++ b/IkiWiki/Plugin/orphans.pm
|
||||||
|
@@ -56,7 +56,7 @@ sub preprocess (@) { #{{{
|
||||||
|
htmllink($params{page}, $params{destpage}, $_,
|
||||||
|
noimageinline => 1).
|
||||||
|
"</li>"
|
||||||
|
- } sort @orphans).
|
||||||
|
+ } sort titlecmp @orphans).
|
||||||
|
"</ul>\n";
|
||||||
|
} # }}}
|
||||||
|
|
||||||
|
diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm
|
||||||
|
index ceb7c84..00798e1 100644
|
||||||
|
--- a/IkiWiki/Render.pm
|
||||||
|
+++ b/IkiWiki/Render.pm
|
||||||
|
@@ -89,7 +89,7 @@ sub genpage ($$) { #{{{
|
||||||
|
$template->param(have_actions => 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
- my @backlinks=sort { $a->{page} cmp $b->{page} } backlinks($page);
|
||||||
|
+ my @backlinks=sort { titlecmp($a->{page}, $b->{page}) } backlinks($page);
|
||||||
|
my ($backlinks, $more_backlinks);
|
||||||
|
if (@backlinks <= $config{numbacklinks} || ! $config{numbacklinks}) {
|
||||||
|
$backlinks=\@backlinks;
|
||||||
|
|
Loading…
Reference in New Issue