]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/commitdiff
review
authorSimon McVittie <smcv@debian.org>
Sun, 3 Feb 2019 19:22:07 +0000 (19:22 +0000)
committerSimon McVittie <smcv@debian.org>
Sun, 3 Feb 2019 19:22:07 +0000 (19:22 +0000)
doc/todo/pagespec_aliases.mdwn

index 396a93c0f3ae5086d1ddabb44c4247d47370b84a..bd64a5040b7637160b1243f0bfbb63bb76c55a34 100644 (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]]