diff options
author | joey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071> | 2006-08-02 00:14:31 +0000 |
---|---|---|
committer | joey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071> | 2006-08-02 00:14:31 +0000 |
commit | 2794d7ef5abc4fa8fc2eb42d5c85ada197df0767 (patch) | |
tree | a79c4c81a7cb989fb3cfa5f84a0d8fad831c5085 /basewiki | |
parent | 418096be9e56f9078c19605f867b44d25ccadf58 (diff) | |
download | ikiwiki-2794d7ef5abc4fa8fc2eb42d5c85ada197df0767.tar ikiwiki-2794d7ef5abc4fa8fc2eb42d5c85ada197df0767.tar.gz |
* Renamed GlobLists to PageSpecs.
* PageSpecs can now include nested parens, "and", and "or". This remains
backwards compatible to the old GlobList format. It's implemented by
treating the GlobList as a very limited microlanguage that is transformed
to perl code that does the matching.
* The old GlobList format is deprecated, and I encourage users to switch to
using the new PageSpec format. Compatability with the old format will be
removed at some point, possibly by 2.0.
* Wiki rebuild needed on upgrade to this version due to PageSpec change.
* Add support for creation_month and creation_year to PageSpec.
Closes: #380680
* Changes to index file encoding.
Diffstat (limited to 'basewiki')
-rw-r--r-- | basewiki/blog.mdwn | 12 | ||||
-rw-r--r-- | basewiki/globlist.mdwn | 20 | ||||
-rw-r--r-- | basewiki/pagespec.mdwn | 61 |
3 files changed, 67 insertions, 26 deletions
diff --git a/basewiki/blog.mdwn b/basewiki/blog.mdwn index 1993f3720..4c8d7d406 100644 --- a/basewiki/blog.mdwn +++ b/basewiki/blog.mdwn @@ -1,9 +1,9 @@ You can turn any page on this wiki into a weblog by inserting a [[PreProcessorDirective]]. Like this: - \\[[inline pages="blog/* !*/Discussion" show="10" rootpage="blog"]] + \\[[inline pages="blog/* and !*/Discussion" show="10" rootpage="blog"]] -Any pages that match the specified [[GlobList]] (in the example, any +Any pages that match the specified [[PageSpec]] (in the example, any [[SubPage]] of "blog") will be part of the blog, and the newest 10 of them will appear in the page. @@ -18,20 +18,20 @@ globally configured to do so, but you can set `rss=no` to disable this. If you want your blog to have an archive page listing every post ever made to it, you can accomplish that like this: - \\[[inline pages="blog/* !*/Discussion" archive="yes"]] + \\[[inline pages="blog/* and !*/Discussion" archive="yes"]] You can even create an automatically generated list of all the pages on the wiki, with the most recently added at the top, like this: - \\[[inline pages="* !*/Discussion" archive="yes"]] + \\[[inline pages="* and !*/Discussion" archive="yes"]] If you want to be able to add pages to a given blog feed by tagging them, you can do that too. To tag a page, just make it link to a page or pages -that represent its tags. Then use the special link() [[GlobList]] to match +that represent its tags. Then use the special link() [[PageSpec]] to match all pages that have a given tag: \\[[inline pages="link(life)"]] Or include some tags and exclude others: - \\[[inline pages="link(debian) !link(social)"]] + \\[[inline pages="link(debian) and !link(social)"]] diff --git a/basewiki/globlist.mdwn b/basewiki/globlist.mdwn deleted file mode 100644 index 20a9eed1b..000000000 --- a/basewiki/globlist.mdwn +++ /dev/null @@ -1,20 +0,0 @@ -When the wiki stores lists of pages, such as pages that are locked or pages -whose commit emails you want subscribe to, it uses a GlobList. - -This is a list of page names, separated by white space. The "glob" bit is -that as well as full page names, it can contain glob patterns. "`*`" stands -in for any part of the page name, and "`?`" for any single letter of its -name. So if you wanted to list all the pages about tea, and any -[[SubPage]]s of the SandBox, but not including the SandBox itself: - - *tea* SandBox/* - -You can also prefix an item in the list with "`!`" to skip matching any -pages that match it. So if you want to specify all pages except for -Discussion pages and the SandBox: - - * !SandBox !*/Discussion - -It's also possible to match pages that link to a given page, by writing -"link(page)" in a globlist. Or, match pages that a given page links to, by -writing "backlink(page)". diff --git a/basewiki/pagespec.mdwn b/basewiki/pagespec.mdwn new file mode 100644 index 000000000..318be42f9 --- /dev/null +++ b/basewiki/pagespec.mdwn @@ -0,0 +1,61 @@ +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 + +It's also possible to match pages that link to a given page, by writing +"`link(page)`". Or, match pages that a given page links to, by +writing "`backlink(page)`". Or match pages created in a given month, year, +or day of the month by writing "`creation_month(month)`", +"`creation_year(year)`" or "`creation_day(mday)`". + +For example, to match all pages in a blog that link to the page about music +and were written on Mondays in 2005: + + blog/* and link(music) and creation_year(2005) and creation_day(0) + +Matches can also be used to limit matching to pages created before or after +a given date. + +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)) + +## 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. |