71 lines
3.8 KiB
Markdown
71 lines
3.8 KiB
Markdown
A couple of suggestions for improving the usefulness of pagespecs:
|
|
|
|
* @ to match [^/]* (i.e. all pages exactly one level below this one)
|
|
* initial ./ to mean "from the page the pagespec is running from".
|
|
This would require some architectural changes and a change to the
|
|
interface for pagespec_match. What do you think? I have
|
|
lots of pages a/b/c.mdwn that inline "a/b/c/*".
|
|
|
|
--Ethan
|
|
|
|
> I want this too, so that the [[examples]] can use pagespecs that don't
|
|
> have to be changed when the pages are moved around. I don't know how I
|
|
> feel about the "@" thing, but "./" seems good. I take it you've looked at
|
|
> how to implement it?
|
|
>
|
|
> It's worth mentioning that there's a bit of an inconsistency; wikilinks
|
|
> match relative by default and absolute if prefixed with a "/", while
|
|
> pagespecs match absolute by default. It would be nice to clear up that
|
|
> inconsistency somehow, it's on my little list of things in ikiwiki that
|
|
> arn't ideal. :-) --[[Joey]]
|
|
|
|
I've looked at how to implement "./", yes, and I was a little hesitant
|
|
to disturb the elegant implementation of pagespecs as it is now. That's
|
|
why I wrote this todo item rather than just a patch. :) As I see it,
|
|
the simplest thing to do is check globs when building the pagespec
|
|
expression and translate "./foo" to "$from.'/foo'" in the resulting
|
|
expression, and then add the $from paramater to pagespec_match. This does
|
|
require an API change for all plugins which use pagespecs but hopefully
|
|
it should be minor. I will work on a patch tomorrow.
|
|
|
|
My use case for "@" (which is kind of a crummy symbol, but whatever) is
|
|
my [projects page](http://www.betacantrips.com/projects/). I want to inline
|
|
"summary" or "introduction" pages that are exactly one level below the
|
|
inlining page, but not tarballs or other junk that might be in
|
|
subdirectories. (The issue is confounded here because of my index.mdwn
|
|
patch, but the principle is the same.) I chose "@" because it's similar in
|
|
physical shape to "*" but enclosed, suggesting limitations. I also thought
|
|
it would be useful in simplifying hacks like in [[plugins/map]] but I see
|
|
now that I was mistaken.. "four or fewer levels deep" would be
|
|
"@ or @/@ or @/@/@ or @/@/@/@". Well, I think it has a certain appeal but
|
|
I can see why it might not be much of an improvement. :) --Ethan
|
|
|
|
> Seems to me that ".." would be the natural thing to use, not "@". --[[Joey]]
|
|
|
|
OK, I took a shot at implementing the changes. I was thinking about making
|
|
pagespecs relative by default but I couldn't decide whether page
|
|
`foo/bar` inlining `*` should match `foo/bar/*` or `foo/*`.
|
|
So I punted and left things as absolute, with `./*` matching
|
|
`foo/bar/*`, which I think is pretty clear.
|
|
The patch is at [ikidev](http://ikidev.betacantrips.com/patches/pagespec_enhancements.patch)
|
|
and you can see it work at
|
|
[this page](http://ikidev.betacantrips.com/one/two/three/index.html) or
|
|
[this page](http://ikidev.betacantrips.com/one/two/three/princess.html) --Ethan
|
|
|
|
> Nice patch, though I see the following problems with it:
|
|
> * The sole pagespec_match in IkiWiki::Render probably should have `$p`
|
|
> as its third parameter. This will allow add_depends to add a
|
|
> dependency on a pagespec that matches relative to the page. I made this
|
|
> changes and it seems to work, new pages are noticed in updates.
|
|
> * `! $from` fails to match pages named "0" :-)
|
|
> * '/./ matches any letter, not just "." :-) :-)
|
|
> * One other major problem. If you look at the doc/examples/blog/index.mdwn
|
|
> I changed it to use relative globs like "./posts/*", but they didn't work,
|
|
> because it looked for examples/blog/indexposts/* instead of
|
|
> examples/blog/index/posts/*. And, of course, what I really expected it to
|
|
> look for was examples/blog/posts/*. I think you may have made the wrong
|
|
> choice about that, so I changed it to go the other way. What do you think?
|
|
>
|
|
> I've committed support for ./ to ikiwiki now, based on your patch.
|
|
> --[[Joey]]
|