Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
This test still fails several cases, since add_depends influence testing is
currently commented out.
|
|
|
|
|
|
|
|
To avoid breaking plugins, also support the old pagespec_match_list
calling convention, with a deprecation warning.
|
|
|
|
This was tricky because of the caching, and because use_pagespec always
adds a dependency. That would have made year calendars depend on the whole
pagespec, which is overly broad. So I removed the caching, format_month,
and in format_year just look at %pagesources to see if month pages are
available.
In format_month, I make it always call use_pagespec, so each month calendar
gets the right dependency and any influcences added. This means a bit more
work, but the added work is fairly minimal, and presence dependencies
remove a *lot* of work it used to do.
(100% untested!)
|
|
|
|
Also, fixed up the dependency type for time=mtime. That has
to remain a content dependency, sadly.
|
|
|
|
|
|
|
|
|
|
|
|
This dependency was missing before switching to use_pagespec.
It is correct to add it, but it needs to be combined with the regular
"pages" dependency to ensure that it does not match extra pages.
(Also fixed its dependency type.)
|
|
Conflicts:
IkiWiki.pm
IkiWiki/Render.pm
debian/changelog
|
|
|
|
Benchmarking refresh of a a wiki with 25 thousand pages showed
file_pruned() using most of the time. But, when refreshing, ikiwiki already
knows about nearly all the files. So we can skip calling file_pruned() for
those it knows about. While tricky to do, this sped up a refresh (that
otherwise does no work) by 10-50%.
|
|
with an ErrorReason
|
|
|
|
Taking advantage of every single one of its features, of course.
Even had to add one more..
|
|
|
|
|
|
|
|
|
|
Also, this fixes 2 bugs in dependency info.
|
|
|
|
|
|
|
|
If a pagespec fails to match, I had been throwing the influences away, but
that is not right. Consider `backlink(foo)`, where foo does not exist.
It still needs to be added as an influence, because if it is created, it
will influence the pagespec to match.
But with that fix, `link(bar)` had as influences all pages, whether they
link to bar or not. Which is not necessary, because modifiying a page to
add a link to bar will directly cause the pagespec to match.
So, in match_link (and all the match_* functions for page metadata),
only return an influence if the match succeeds.
match_backlink had been implemented as the inverse of match_link, but that
is no longer completly true. While match_link does not return an influence
on failure, match_backlink does.
match_created_before/after also return the influence on failure, this way
if created_after(foo) currently fails because foo does not exist, it will
still update the page with the pagespec if foo is created.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
that hack is not needed, thanks to pagespec influences calculation
|
|
|
|
|
|
|
|
No more horrible special-case pagespec parsing.
OTOH, matching over all pages to determine influences is a lot of work.
|
|
|
|
|
|
Also update docs, test suite.
|
|
|
|
The hash will be used used to record a set of pages that influenced the
result of a pagespec match.
The influences are merged together when boolean and/or are encountered
in a pagespec. That means using a non-short-circuiting OR operator. And
so I use & and | when translating pagespecs, since those bitwise operators
can be overloaded. ("and" and "or" cannot, apparently).
|