]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki.pm
detect pagespecs that require content dependencies
[ikiwiki.git] / IkiWiki.pm
index 67149bc8bda67ba83a3225273236aceb0156607e..56e2d4e714466931c76c5a62cf8e591a86ec6a60 100644 (file)
@@ -1774,7 +1774,8 @@ sub add_depends ($$;@) {
        my $deptype=$DEPEND_CONTENT | $DEPEND_EXISTS;
        if (@_) {
                my %params=@_;
-               if (defined $params{content} && $params{content} == 0) {
+               if (defined $params{content} && $params{content} == 0 &&
+                   pagespec_contentless($pagespec)) {
                        $deptype=$deptype & ~$DEPEND_CONTENT;
                }
        }
@@ -1974,6 +1975,20 @@ sub pagespec_valid ($) {
        return ! $@;
 }
 
+sub pagespec_contentless ($) {
+       my $spec=shift;
+
+       while ($spec=~m{
+               (\w+)\([^\)]*\) # only match pagespec functions
+       }igx) {
+               # only glob and internal can be matched contentless
+               # (first approximation)
+               return 0 if $1 ne "glob" && $1 ne "internal";
+       }
+
+       return 1;
+}
+
 sub glob2re ($) {
        my $re=quotemeta(shift);
        $re=~s/\\\*/.*/g;