master
Simon McVittie 2019-02-03 19:22:07 +00:00
parent 79131ddb1a
commit 324ee23b9b
1 changed files with 36 additions and 0 deletions

View File

@ -1,3 +1,4 @@
[[!tag reviewed]]
[[!template id=gitbranch branch=jon/pagespec_alias author="[[Jon]]"]]
[[!tag patch wishlist]]I quite often find myself repeating a boiler-plate
[[ikiwiki/pagespec]] chunk, e.g.
@ -175,3 +176,38 @@ that I'd got it up to a merge-request state; I've dusted it off and done some
clean up and testing, but it's working (albeit not via websetup). I've revamped
the docs and rebased the branch. Can someone please consider merging ([[joey]]
or [[smcv]]?) or otherwise feed back on this? Thanks! — [[Jon]] (2018-09-25)
> To hide it from `websetup`, the `example` needs to be a hash reference
> like `example => { images => "*.png or *.jpg or *.gif" }`, I think?
> (Please try it on a websetup-enabled wiki, possibly by copying
> `t/manual/git_revert` to `t/manual/websetup` and adapting it as required.)
>
> For a less magical variant, you could consider using `alias(images)`
> instead of `images()` for the pagespec syntax that is enabled by the
> example above. I'm not sure which way is better.
>
> If `safe_key` fails, you probably want to log a warning, or even fail
> `checkconfig` with a fatal `error`?
>
> If `checkconfig` detects that the given pagespec function already
> exists, for example `title` after loading the meta plugin, you probably
> want to log a warning or fail? It seems you can detect this with
> `defined ref *$subname{CODE}`.
>
> If you define a loop of mutually recursive aliases (or even an alias
> that refers to itself), I think you'll get infinite recursion.
> You can probably bypass that with a construct like:
>
> my $entered;
> *{ $subname } = sub {
> return IkiWiki::ErrorReason->new("Alias $key is defined recursively") if $entered;
> $entered = 1;
> my $result = IkiWiki::pagespec_match($path, $value);
> $entered = 0;
> return $result;
> }
>
> (but don't take my word for it, a regression test would tell you whether
> this works.)
>
> --[[smcv]]