inline: When the pagenames list includes pages that do not exist, skip them.

bestlink returns '' if no existing page matches a link. This propigated
through inline and other plugins, causing uninitialized value warnings, and
in some cases (when filecheck was enabled) making the whole directive fail.

Skipping the empty results fixes that, but this is papering over another
problem: If the missing page is later added, there is not dependency
information to know that the inline needs to be updated. Perhaps smcv will
fix that later.
master
Joey Hess 2012-03-21 15:47:34 -04:00
parent 662ea9971c
commit aaa72a3a80
2 changed files with 5 additions and 19 deletions

View File

@ -19,7 +19,7 @@ sub import {
hook(type => "checkconfig", id => "inline", call => \&checkconfig); hook(type => "checkconfig", id => "inline", call => \&checkconfig);
hook(type => "sessioncgi", id => "inline", call => \&sessioncgi); hook(type => "sessioncgi", id => "inline", call => \&sessioncgi);
hook(type => "preprocess", id => "inline", hook(type => "preprocess", id => "inline",
call => \&IkiWiki::preprocess_inline, scan => 1); call => \&IkiWiki::preprocess_inline);
hook(type => "pagetemplate", id => "inline", hook(type => "pagetemplate", id => "inline",
call => \&IkiWiki::pagetemplate_inline); call => \&IkiWiki::pagetemplate_inline);
hook(type => "format", id => "inline", call => \&format, first => 1); hook(type => "format", id => "inline", call => \&format, first => 1);
@ -155,23 +155,6 @@ sub preprocess_inline (@) {
if (! exists $params{pages} && ! exists $params{pagenames}) { if (! exists $params{pages} && ! exists $params{pagenames}) {
error gettext("missing pages parameter"); error gettext("missing pages parameter");
} }
if (! defined wantarray) {
# Running in scan mode: only do the essentials
if (yesno($params{trail}) && IkiWiki::Plugin::trail->can("preprocess_trailitems")) {
# default to sorting age, the same as inline itself,
# but let the params override that
IkiWiki::Plugin::trail::preprocess_trailitems(sort => 'age', %params);
}
return;
}
if (yesno($params{trail}) && IkiWiki::Plugin::trail->can("preprocess_trailitems")) {
scalar IkiWiki::Plugin::trail::preprocess_trailitems(sort => 'age', %params);
}
my $raw=yesno($params{raw}); my $raw=yesno($params{raw});
my $archive=yesno($params{archive}); my $archive=yesno($params{archive});
my $rss=(($config{rss} || $config{allowrss}) && exists $params{rss}) ? yesno($params{rss}) : $config{rss}; my $rss=(($config{rss} || $config{allowrss}) && exists $params{rss}) ? yesno($params{rss}) : $config{rss};
@ -211,7 +194,8 @@ sub preprocess_inline (@) {
} }
} }
@list = map { bestlink($params{page}, $_) } @list = grep { $_ ne '' }
map { bestlink($params{page}, $_) }
split ' ', $params{pagenames}; split ' ', $params{pagenames};
if (yesno($params{reverse})) { if (yesno($params{reverse})) {

2
debian/changelog vendored
View File

@ -1,6 +1,8 @@
ikiwiki (3.20120204) UNRELEASED; urgency=low ikiwiki (3.20120204) UNRELEASED; urgency=low
* Remove dead link from plugins/teximg. Closes: #664885 * Remove dead link from plugins/teximg. Closes: #664885
* inline: When the pagenames list includes pages that do not exist, skip
them.
-- Joey Hess <joeyh@debian.org> Wed, 21 Mar 2012 14:33:14 -0400 -- Joey Hess <joeyh@debian.org> Wed, 21 Mar 2012 14:33:14 -0400