X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/309c689b6b139e67459c41a5132c9afec0504d84..88e8f08c8ffe61fbb3aa8d0fbf78a86c30c65543:/doc/pagespec.mdwn?ds=sidebyside diff --git a/doc/pagespec.mdwn b/doc/pagespec.mdwn new file mode 100644 index 000000000..53519e7f0 --- /dev/null +++ b/doc/pagespec.mdwn @@ -0,0 +1,71 @@ +To select a set of pages, such as pages that are locked, pages +whose commit emails you want subscribe to, or pages to combine into a +blog, the wiki uses a PageSpec. This is an expression that matches +a set of pages. + +The simplest PageSpec is a simple list of pages. For example, this matches +any of the three listed pages: + + foo or bar or baz + +More often you will want to match any pages that have a particular thing in +their name. You can do this using a glob pattern. "`*`" stands for any part +of a page name, and "`?`" for any single letter of a page name. So this +matches all pages about music, and any [[SubPage]]s of the SandBox, but does +not match the SandBox itself: + + *music* or SandBox/* + +You can also prefix an item with "`!`" to skip pages that match it. So to +match all pages except for Discussion pages and the SandBox: + + * and !SandBox and !*/Discussion + +Some more elaborate limits can be added to what matches using any of these +functions: + +* "`link(page)`" - match only pages that link to a given page +* "`backlink(page)`" - match only pages that a given page links to +* "`creation_month(month)`" - match only pages created on the given month +* "`creation_day(mday)`" - or day of the month +* "`creation_year(year)`" - or year +* "`created_after(page)`" - match only pages created after the given page + was created +* "`created_before(page)`" - match only pages created before the given page + was created + +For example, to match all pages in a blog that link to the page about music +and were written in 2005: + + blog/* and link(music) and creation_year(2005) + +More complex expressions can also be created, by using parentheses for +grouping. For example, to match pages in a blog that are tagged with either +of two tags, use: + + blog/* and (link(tag/foo) or link(tag/bar)) + +Note that page names in PageSpecs are matched against the absolute +filenames of the pages in the wiki, so a pagespec "foo" used on page +"a/b" will not match a page named "a/foo" or "a/b/foo". To match +relative to the directory of the page containing the pagespec, you can +use "./". For example, "./foo" on page "a/b" matches page "a/foo". + +## Old syntax + +The old PageSpec syntax was called a "GlobList", and worked differently in +two ways: + +1. "and" and "or" were not used; any page matching any item from the list + matched. +2. If an item was prefixed with "`!`", then no page matching that item + matched, even if it matched an earlier list item. + +For example, here is the old way to match all pages except for the SandBox +and Discussion pages: + + * !SandBox !*/Discussion + +Using this old syntax is still supported. However, the old syntax is +deprecated and will be removed at some point, and using the new syntax is +recommended.