]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - doc/todo/pagespec_aliases.mdwn
update for rename of ikiwikiusers.mdwn to jasatamanjogja.mdwn
[git.ikiwiki.info.git] / doc / todo / pagespec_aliases.mdwn
index c5b8504b0642728bf5bcac48abc64cea7703b44f..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.
 [[!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.
@@ -20,9 +21,8 @@ an existing wishlist item.
 
 > I think it would make sense to have "pagespec" in the name somehow.
 
 
 > I think it would make sense to have "pagespec" in the name somehow.
 
-> > Good idea, how about `pagespecalias`? — [[Jon]]
+>> Good idea, how about `pagespecalias`? — [[Jon]]
 
 
->
 > No, the strict/warnings does not make me puke. Have you read my perl
 > code? :-P
 > 
 > No, the strict/warnings does not make me puke. Have you read my perl
 > code? :-P
 > 
@@ -81,11 +81,11 @@ however, to add ' or internal()' to `boring`, for some reason.
 >> Useful indeed! --[[Joey]] 
 
 
 >> Useful indeed! --[[Joey]] 
 
 
->>> I've tweaked my patch in light of your above feedback:  The plugin has
->>> been renamed, and I now validate keys.  I've also added documentation to
->>> the branch.  I haven't read rubykat's code properly yet, and don't have
->>> access at the time of writing (I'm on a beach in Greece ☺), but I expect
->>> it would be possible to extend what I've got here to support defining the
+>>> I've tweaked my patch in light of your above feedback:  The plugin has been
+>>> renamed, and I now validate keys.  I've also added documentation and tests
+>>> to the branch.  I haven't read rubykat's code properly yet, and don't have
+>>> access at the time of writing (I'm on a beach in Greece ☺), but I expect it
+>>> would be possible to extend what I've got here to support defining the
 >>> aliases in a PageSpec, once the dependency stuff has been reasoned out
 >>> properly.
 >>>
 >>> aliases in a PageSpec, once the dependency stuff has been reasoned out
 >>> properly.
 >>>
@@ -93,6 +93,18 @@ however, to add ' or internal()' to `boring`, for some reason.
 >>> implementing support for more nested datatypes in [[plugins/websetup]]. —
 >>> [[Jon]]
 
 >>> implementing support for more nested datatypes in [[plugins/websetup]]. —
 >>> [[Jon]]
 
+>>>> Well, it's a difficult problem. websetup builds a form using
+>>>> CGI::FormBuilder, which makes it easy to build the simple UI we have
+>>>> now, but sorta precludes anything more complicated. And anything with
+>>>> a nested datatype probably needs a customized UI for users to be able
+>>>> to deal with it. I don't think websetupability need be a deal-breaker
+>>>> for this patch. I personally like special pages like Kathryn is doing
+>>>> more than complex setup files. --[[Joey]]
+
+>>>>> I've ran out of time to keep working on this, so I'm just going to
+>>>>> submit it as a 'contrib' plugin and leave things at that for now.
+>>>>> — [[Jon]]
+
 ---------------------------
 
 Based on the above, I have written an experimental plugin called "subset".
 ---------------------------
 
 Based on the above, I have written an experimental plugin called "subset".
@@ -141,3 +153,61 @@ Unfortunately I haven't figured out how to do the dependencies - I'd really appr
 >>> As for the name "subset"... well, it's even less like an alias now, and "alias" is already a reserved name.  What other names would you suggest?
 
 >>>--[[KathrynAndersen]]
 >>> As for the name "subset"... well, it's even less like an alias now, and "alias" is already a reserved name.  What other names would you suggest?
 
 >>>--[[KathrynAndersen]]
+
+>>>> Regarding my comments:  I wasn't clear what you are/were intending to
+>>>> achieve with your modifications.  I've aimed for a self-contained plugin
+>>>> which could be merged with ikiwiki proper.  I think I initially took your
+>>>> developments as being an evolution of that with the same goal, which is
+>>>> why I commented on the (change of) name.  However, I guess your work is
+>>>> more of a fork than a continuation,  in which case you can call it
+>>>> whatever you like ☺  I like some of the enhancements you've made, but
+>>>> having the aliases/subsets/"things" work in any pagespec (inside map, or
+>>>> inline) is a deal-breaker for me. — [[Jon]]
+
+>>>>> I'm a bit confused by your statement "having the aliases/subsets/"things" work in any pagespec (inside map, or inline) is a deal-breaker for me".
+>>>>> Do you mean that you want them to work in any pagespec, or that you *don't* want them to work in any pagespec? -- [[KathrynAndersen]]
+
+>>>>>> I mean I would want them to work in any pagespec. — [[Jon]]
+
+----
+
+Hi, it's been 7 years since I last looked at this, and I'm surprised to find
+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]]