summaryrefslogtreecommitdiff
path: root/IkiWiki
AgeCommit message (Collapse)Author
2009-10-08rename use_pagespec to pagespec_match_listJoey Hess
To avoid breaking plugins, also support the old pagespec_match_list calling convention, with a deprecation warning.
2009-10-08calendar: rework so it can use use_pagespecJoey Hess
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!)
2009-10-08postsparkline: switch to use_pagespecJoey Hess
Also, fixed up the dependency type for time=mtime. That has to remain a content dependency, sadly.
2009-10-08orphans: switch to use_pagespecJoey Hess
2009-10-08fix feedpages dependencyJoey Hess
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.)
2009-10-08Merge branch 'master' into dependency-typesJoey Hess
Conflicts: IkiWiki.pm IkiWiki/Render.pm debian/changelog
2009-10-08pagestate: switch to use_pagespecJoey Hess
2009-10-08Optimize away most expensive file prune calls, when refreshingJoey Hess
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%.
2009-10-08pagecount: switched to use_pagespecJoey Hess
2009-10-08inline: switch to use_pagespecJoey Hess
Taking advantage of every single one of its features, of course. Even had to add one more..
2009-10-08map: switch to use_pagespecJoey Hess
2009-10-08change how dependency types are specified to add_dependsJoey Hess
Also, this fixes 2 bugs in dependency info.
2009-10-08fix handling of influences of pagespecs that fail to matchJoey Hess
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.
2009-10-07remove explicit addition of dependencies for displayed pagesJoey Hess
that hack is not needed, thanks to pagespec influences calculation
2009-10-07add type info to influence informationJoey Hess
2009-10-07add influence info to match_*Joey Hess
Also update docs, test suite.
2009-10-07fix backlink new change detection codeJoey Hess
2009-10-06linkmap, pagestats: avoid using %links to get a list of pagesJoey Hess
When a page is deleted, it is removed from %pagesources, but not from %links. So use the former.
2009-10-06linkmap: does need presence depsJoey Hess
Otherwise, removal of a page with no links will not be noticed, since no links will change.
2009-10-06typoJoey Hess
2009-10-06presence dependencies not neededJoey Hess
Using just a link dependency is sufficient, since
2009-10-06fix support of a single dependency that combines links and exists typesJoey Hess
This is very common, and the code has to test each type differently, since the list of candidates to test, as well as the test, will vary per type. Much happier with this code now.
2009-10-06linkmap: Use a combination of presence and link dependencies.Joey Hess
This makes the map be regenerated much less frequently, so larger maps are more practical to use now.
2009-10-06fix handling of links+content dependencyJoey Hess
Such a dependency is unlikely, but can happen.
2009-10-06refactor 3Joey Hess
Only left one new global
2009-10-06refresh refactor 2Joey Hess
killed one global
2009-10-05split up refreshJoey Hess
I'd rather have the global variables than the 300 line function
2009-10-05new link change detection method and general code reworkJoey Hess
This new method for determining when links on pages have changed should be more efficient, since it avoids double calculation of the bestlinks. It also allows collecting data about the old links, before the scan pass, so the data is accurate when pages move around and bestlinks change. Also got some code back to a saner indent level.
2009-10-05use among limit for correctnessJoey Hess
2009-10-05pagestats: Use a combination of precense and link dependencies.Joey Hess
This makes it more efficient. It also fixes the same bug that I fixed in orphans recently, that only changes to the set of displayed pages were considered (or amoung), which missed changes to links on other pages to those. Probably this bug was never noticed because pagestats is most often put on a blog type page, which gets updated anyway when posts change, and thus the tag cloud was updated.
2009-10-05oprhans: Use a combination of precense and link dependencies.Joey Hess
This makes it more efficient. It also fixes a longstanding bug, where if only a small set of pages were considered by orphans, changes to links on other pages failed to cause an update.
2009-10-05use links dependencyJoey Hess
2009-10-05make links dependencies fire if broken links changeJoey Hess
2009-10-05fix add_depends to new apiJoey Hess
2009-10-05implement links dependenciesJoey Hess
Involved some code refactoring so that same code that detects link changes for backlinks updating can be used for link dependency checking. The nice thing is that link dep checking is thus comopletly free!
2009-10-05typosJoey Hess
2009-10-04rework dependency types codeJoey Hess
Simplify, change default content depends number to 1, change interface to make more sense.
2009-10-04Merge branch 'dependency-types' into transitive-dependenciesJoey Hess
Conflicts: IkiWiki/Render.pm
2009-10-04postsparkline and progress: also contentless dependenciesJoey Hess
2009-10-04meta redir dependency is contentlessJoey Hess
2009-10-04listdirectives: contentless dependencyJoey Hess
Another one that probably doesn't matter, but for completness.
2009-10-04not a contentless dependencyJoey Hess
needs link info
2009-10-04edittemplate: contentless dependencyJoey Hess
This one is unlikely to matter much, but yeah, it's contentless.
2009-10-04calendar: all dependencies are contentlessJoey Hess
2009-10-04inline: Use a contentless dependency in quick mode.Joey Hess
2009-10-04map: Use a contentless dependency unless show= is specified.Joey Hess
This makes simple maps efficient enough that they can be used on sidebars!
2009-10-03orphans and brokenlinks cannot use contentless dependencyJoey Hess
Tried a contentless dep and it does not work; changes to links in pages are not noticed. Drat.
2009-10-03implement support for DEPEND_EXISTSJoey Hess
Preliminary support, anyway. If a dependency only includes DEPEND_EXISTS, then only changes that involved adding or deleting a page can trigger it. This is complicated by internal pages, since the code did not previously differentiate between add, delete, and change of internal pages. Now it tracks change separately from add+delete, so DEPEND_EXISTS pagespecs that actually match internal pages (which will probably be quite rare in practice) should work.
2009-10-03pagecount: Use contentless dependencyJoey Hess
This will avoid lots of unnecessary updates of pages using the pagecount directive. Yay!
2009-10-02minor optimisationJoey Hess
As soon as a change happens, we know we will need to rescan all dependencies from the start, so bail out of the current scan partway to avoid doing redundant work. Only problem with this is that ikiwiki sometimes ends up printing out dependencies that, while correct, are not obvious. Before: building B, which depends on A building C, which depends on A building D, which depends on A After: building B, which depends on A building C, which depends on B building D, which depends on C