inline: When the pagenames list includes pages that do not exist, skip them.
authorJoey Hess <joey@kitenet.net>
Wed, 21 Mar 2012 19:47:34 +0000 (15:47 -0400)
committerJoey Hess <joey@kitenet.net>
Wed, 21 Mar 2012 19:48:25 +0000 (15:48 -0400)
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.

IkiWiki/Plugin/inline.pm
debian/changelog

index 687c8a48f3dfc16f9e933af1ae77a62ce4918344..62910972f9581c0b06e189994f56f0956df9a084 100644 (file)
@@ -19,7 +19,7 @@ sub import {
        hook(type => "checkconfig", id => "inline", call => \&checkconfig);
        hook(type => "sessioncgi", id => "inline", call => \&sessioncgi);
        hook(type => "preprocess", id => "inline", 
-               call => \&IkiWiki::preprocess_inline, scan => 1);
+               call => \&IkiWiki::preprocess_inline);
        hook(type => "pagetemplate", id => "inline",
                call => \&IkiWiki::pagetemplate_inline);
        hook(type => "format", id => "inline", call => \&format, first => 1);
@@ -155,23 +155,6 @@ sub preprocess_inline (@) {
        if (! exists $params{pages} && ! exists $params{pagenames}) {
                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 $archive=yesno($params{archive});
        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};
 
                if (yesno($params{reverse})) {
index 5820009effbbbe8b175471850a83809ba23ba3d8..0eca18aed14c102d422cd54b5589508fe06bcdd8 100644 (file)
@@ -1,6 +1,8 @@
 ikiwiki (3.20120204) UNRELEASED; urgency=low
 
   * 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