]> sipb.mit.edu Git - ikiwiki.git/commitdiff
implement sort=title_natural for inline
authorchrysn <chrysn@fsfe.org>
Tue, 17 Mar 2009 19:19:11 +0000 (20:19 +0100)
committerJoey Hess <joey@gnu.kitenet.net>
Thu, 19 Mar 2009 19:31:46 +0000 (15:31 -0400)
adds a new sorting order, title_natural, that uses Sort::Naturally's
ncmp function to provide better sorting for inlines

IkiWiki/Plugin/inline.pm
doc/ikiwiki/directive/inline.mdwn

index 2205ebffc48cda2f9ccd6fab71dec170765fa880..a89e827c1c7ff2ecf2a877c7dd48d11e2105fbcd 100644 (file)
@@ -194,6 +194,10 @@ sub preprocess_inline (@) {
        if (exists $params{sort} && $params{sort} eq 'title') {
                @list=sort { pagetitle(basename($a)) cmp pagetitle(basename($b)) } @list;
        }
+       elsif (exists $params{sort} && $params{sort} eq 'title_natural') {
+               require Sort::Naturally;
+               @list=sort { Sort::Naturally::ncmp(pagetitle(basename($a)), pagetitle(basename($b))) } @list;
+       }
        elsif (exists $params{sort} && $params{sort} eq 'mtime') {
                @list=sort { $pagemtime{$b} <=> $pagemtime{$a} } @list;
        }
index 40670e1e7676cbe702dd0ae22bbdb984a186b44a..3f9a9ede5ccca8949114c6bfe5beabbe389b0a2c 100644 (file)
@@ -87,7 +87,10 @@ Here are some less often needed parameters:
   inlining page.
 * `sort` - Controls how inlined pages are sorted. The default, "age" is to
   sort newest created pages first. Setting it to "title" will sort pages by
-  title, and "mtime" sorts most recently modified pages first.
+  title, and "mtime" sorts most recently modified pages first. If
+  [Sort::Naturally](http://search.cpan.org/dist/Sort-Naturally/lib/Sort/Naturally.pm)
+  is installed, `sort` can be set to "title_natural" to sort by title with
+  numbers treated as such ("1 2 9 10 20" instead of "1 10 2 20 9").
 * `reverse` - If set to "yes", causes the sort order to be reversed.
 * `feedshow` - Specify the maximum number of matching pages to include in
   the rss/atom feeds. The default is the same as the `show` value above.