51 lines
2.8 KiB
Markdown
51 lines
2.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
|
|
|
|
> 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 |