# Metadata collection that needs to happen during the scan pass.
if ($key eq 'title') {
- $pagestate{$page}{meta}{title}=HTML::Entities::encode_numeric($value);
+ my $encoded = HTML::Entities::encode_numeric($value);
+ $pagestate{$page}{meta}{title} = $encoded;
+
if (exists $params{sortas}) {
$pagestate{$page}{meta}{titlesort}=$params{sortas};
}
- else {
+ elsif ($encoded ne $value) {
$pagestate{$page}{meta}{titlesort}=$value;
}
+ else {
+ delete $pagestate{$page}{meta}{titlesort};
+ }
return "";
}
elsif ($key eq 'description') {
$pagestate{$page}{meta}{authorsort}=$params{sortas};
}
else {
- $pagestate{$page}{meta}{authorsort}=$value;
+ delete $pagestate{$page}{meta}{authorsort};
}
# fallthorough
}
}
sub get_sort_key {
- my $page = $_[0];
- my $meta = $_[1];
+ my $page = shift;
+ my $meta = shift;
# e.g. titlesort (also makes sense for author)
my $key = $pagestate{$page}{meta}{$meta . "sort"};
package IkiWiki::SortSpec;
sub cmp_meta {
- my $left = $_[0];
- my $right = $_[1];
- my $meta = $_[2];
+ my $meta = shift;
error(gettext("sort=meta requires a parameter")) unless defined $meta;
if ($meta eq 'updated' || $meta eq 'date') {
- return IkiWiki::Plugin::meta::get_sort_key($left, $meta)
+ return IkiWiki::Plugin::meta::get_sort_key($a, $meta)
<=>
- IkiWiki::Plugin::meta::get_sort_key($right, $meta);
+ IkiWiki::Plugin::meta::get_sort_key($b, $meta);
}
- return IkiWiki::Plugin::meta::get_sort_key($left, $meta)
+ return IkiWiki::Plugin::meta::get_sort_key($a, $meta)
cmp
- IkiWiki::Plugin::meta::get_sort_key($right, $meta);
+ IkiWiki::Plugin::meta::get_sort_key($b, $meta);
}
# A prototype of how sort=title could behave in 4.0 or something
sub cmp_meta_title {
- $_[2] = 'title';
+ $_[0] = 'title';
return cmp_meta(@_);
}