aboutsummaryrefslogtreecommitdiff
path: root/basewiki
diff options
context:
space:
mode:
authorjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>2006-08-02 00:14:31 +0000
committerjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>2006-08-02 00:14:31 +0000
commit2794d7ef5abc4fa8fc2eb42d5c85ada197df0767 (patch)
treea79c4c81a7cb989fb3cfa5f84a0d8fad831c5085 /basewiki
parent418096be9e56f9078c19605f867b44d25ccadf58 (diff)
downloadikiwiki-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.mdwn12
-rw-r--r--basewiki/globlist.mdwn20
-rw-r--r--basewiki/pagespec.mdwn61
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.