]> sipb.mit.edu Git - ikiwiki.git/commitdiff
Merge branch 'master' into dependency-types
authorJoey Hess <joey@gnu.kitenet.net>
Sun, 4 Oct 2009 20:28:51 +0000 (16:28 -0400)
committerJoey Hess <joey@gnu.kitenet.net>
Sun, 4 Oct 2009 20:28:51 +0000 (16:28 -0400)
doc/ikiwiki/directive/pagestats.mdwn
doc/todo/Resolve_native_reStructuredText_links_to_ikiwiki_pages.mdwn
doc/todo/Set_templates_for_whole_sections_of_the_site.mdwn
doc/todo/dependency_types.mdwn

index 426f3e4afdf6aeda4fb782812555ead457b3a3e1..66f851dbd9204250389b9fdb888d9fb12a485658 100644 (file)
@@ -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:
 
index e42f22970825ccaa5ccac88994e4b865350f9abb..ca7b282fa5bf97ad367b80bafae68952efa8be16 100644 (file)
@@ -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
 
index cd57c12573a54bc9b6f54bde60f188e09dbe26c1..d0c09796f290247ea25007f3a344ea76279a071b 100644 (file)
@@ -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]] 
index 215a65c8a833d9c5bf2dba8f137b5124821e50c8..58b5ee955a2a0f05d47cd115031d1fccb6b9eda1 100644 (file)
@@ -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.