Merge branch 'master' into dependency-types
commit
d5357374c9
|
@ -12,7 +12,7 @@ And here's how to create a table of all the pages on the wiki:
|
|||
|
||||
\[[!pagestats style="table"]]
|
||||
|
||||
The optional `among` parameter limits counting to pages that match a
|
||||
The optional `among` parameter limits display to pages that match a
|
||||
[[ikiwiki/PageSpec]]. For instance, to display a cloud of tags used on blog
|
||||
entries, you could use:
|
||||
|
||||
|
|
|
@ -271,6 +271,17 @@ Perl I've ever written!_)
|
|||
>>> Well, seems you want to match the indent at the start of the line containing
|
||||
>>> the directive, even if the directive does not start the line. That would
|
||||
>>> be quite hard to make a regexp do, though. --[[Joey]]
|
||||
>>
|
||||
>> I wasted a long time getting the simpler `indent($1, handle->($2,$,4))` to
|
||||
>> work (remember, I don't know perl at all). Somehow `$1` does not arrive, I
|
||||
>> made a simple testcase that worked, and I conclude something inside $handle
|
||||
>> results in the value of $1 not arriving as it should!
|
||||
>>
|
||||
>> Anyway, instead a very simple incremental patch is in [pproc-indent][ppi]
|
||||
>> where the indentation regex is `(^[ \t]+|)` instead, which seems to work
|
||||
>> very well (and the regex is multiline now as well). I'm happy to rebase the
|
||||
>> changes if you want or you can just squash the four patches 1+3 => 1+1
|
||||
>> -- [[ulrik]]
|
||||
|
||||
[ppi]: http://github.com/engla/ikiwiki/commits/pproc-indent
|
||||
|
||||
|
|
|
@ -23,3 +23,9 @@ I've written a new plugin, sectiontemplate, available in the `page_tmpl` branch
|
|||
|
||||
>> I wanted this to put comments on my new blog, and was more interested in that goal than this subgoal. I've moved most of my web pages to IkiWiki and there is only one small part that is the blog.
|
||||
>> I wanted to use [[Disqus comments|tips/Adding_Disqus_to_your_wiki/]], but only on the blog pages. (I'm using Disqus rather than IkiWiki comments because I don't want to have to deal with spam, security, etc. I'll happily just let someone else host the comments.) -- [[Will]]
|
||||
|
||||
>>> Yes, handing the rebuild is a good reason not to use directives for
|
||||
>>> this.
|
||||
>>>
|
||||
>>> I do still think combining this with pagetemplate would be good.
|
||||
>>> --[[Joey]]
|
||||
|
|
|
@ -10,9 +10,9 @@ whenever a matching dependency is added, removed, or *modified*. But a
|
|||
great many things don't care about the modification case, and often cause
|
||||
unnecessary page rebuilds:
|
||||
|
||||
* meta only cares if the pages are added or removed. Content change does
|
||||
* map only cares if the pages are added or removed. Content change does
|
||||
not matter (unless show=title is used).
|
||||
* brokenlinks, orphans, pagecount, ditto
|
||||
* brokenlinks, orphans, pagecount, ditto (generally)
|
||||
* inline in archive mode cares about page title, author changing, but
|
||||
not content. (Ditto for meta with show=title.)
|
||||
* Causes extra work when solving the [[bugs/transitive_dependencies]]
|
||||
|
@ -109,9 +109,6 @@ I propose the following. --[[Joey]]
|
|||
* `add_depends` defaults to adding a regular ("full") dependency, as
|
||||
before. (So nothing breaks.)
|
||||
* `add_depends($page, $spec, content => 0)` adds an contentless dependency.
|
||||
* Contentless dependencies are stored in `%depends_contentless` and
|
||||
`%depends_contentless_simple`, which are stored in the index similarly
|
||||
to the existing hashes.
|
||||
* `refresh` only looks at added/removed pages when resolving contentless
|
||||
dependencies.
|
||||
|
||||
|
@ -121,5 +118,39 @@ to the two types he talks about above, but I hope are close enough that
|
|||
they can be used.
|
||||
|
||||
This doesn't deal with the stuff that only depend on the metadata of a
|
||||
page, as collected in the scan pass, changing. But it does leave a window
|
||||
page, as collected in the scan pass, changing. But it does leave a window
|
||||
open for adding such a dependency type later.
|
||||
|
||||
----
|
||||
|
||||
I implemented the above in a branch.
|
||||
[[!template id=gitbranch branch=origin/dependency-types author="[[joey]]"]]
|
||||
|
||||
Then I found some problems:
|
||||
|
||||
* Something simple like pagecount, that seems like it could use a
|
||||
contentless dependency, can have a pagespec that uses metadata, like
|
||||
`author()` or `copyright()`.
|
||||
* pagestats, orphans and brokenlinks cannot use contentless dependencies
|
||||
because they need to update when links change.
|
||||
|
||||
Now I'm thinking about having a contentless dependency look at page
|
||||
metadata, and fire if the metadata changes. And it seems links should
|
||||
either be included in that, or there should be a way to make a dependency
|
||||
that fires when a page's links change. (And what about backlinks?)
|
||||
|
||||
It's easy to see when a page's links change, since there is `%oldlinks`.
|
||||
To see when metadata is changed is harder, since it's stored in the
|
||||
pagestate by the meta plugin.
|
||||
|
||||
Quick alternative: Make add_depends look at the pagespec. Ie, if it
|
||||
is a simple page name, or a glob, we know a contentless dependency
|
||||
can be valid. If's more complex, convert the dependency from
|
||||
contentless to full.
|
||||
|
||||
There is a lot to dislike about this method. Its parsing of the
|
||||
pagespec, as currently implemented, does not let plugins add new types of
|
||||
pagespecs that are contentless. Its pagespec parsing is also subject to
|
||||
false negatives (though these should be somewhat rare, and no false
|
||||
positives). Still, it does work, and it makes things like simple maps and
|
||||
pagecounts much more efficient.
|
||||
|
|
Loading…
Reference in New Issue