[pmwiki-devel] {~varname} vs. {~$:varname} in ZAP
The Editor
editor at fast.st
Thu Jun 14 11:17:04 CDT 2007
On 6/14/07, Patrick R. Michaud <pmichaud at pobox.com> wrote:
> On Thu, Jun 14, 2007 at 09:44:46AM -0500, Ben Stallings wrote:
> > At Dan's request, I'm bringing a disagreement he and I have had by
> > private email to the list for other folks' feedback.
> >
> > In the most recent version of ZAP, he has provided the new markup
> > {~Author$:varname}
> > which retrieves the varname page text variable from Author's Profiles
> > page.
>
> Nice. Works for me.
>
> > However, he's also provided a further shortcut for retrieving the
> > current user's data (i.e. {~{AuthId}$:varname} ). His markup is
> > {~varname}
> > I feel strongly that this should be
> > {~$:varname}
> > instead, so that it's comparable to {*$:varname} and {=$:varname}.
>
> Consistency -- generally a very good thing -- would tend to argue in
> favor of {~$:varname}. This also matches the Unix standard where
> ~Alice refers to Alice's home directory, and ~ by itself refers to the
> home directory of the currently logged in user.
This is the point Ben made actually, it has semantic problems in UNIX...
> In fact, ignoring {~varname} for a moment: If {~Alice$var}
> works to get a page variable from Alice's profile page, then
> I would naturally expect that {~$var} would get a page variable
> from the current author's profile page. To me, if that doesn't work,
> it violates the principle of least surprise.
Actually, I hadn't thought at all about page variables. I don't think
it will work with the current code (which automatically supplies the
$:), but if I make the change to Ben's suggestion, the code could be
rewritten to allow for either page or text vars.
> So, I think that {~$var} should work in any case, and the question
> is whether {~varname} is a useful shortcut, and if so, what should
> it be a shortcut to.
>
> One argument against {~varname} is that it appears to be a shortcut
> only for page text variables, not page variables. So, {~varname}
> allows me to get to $:varname inside of a profile page, but there's
> no real shortcut to $varname for a profile page.
Yes, see note above. This is a pretty convincing argument to me.
> Beyond that, there's some real potential visual confusion in that
> {~Alice} _looks_ like it's somehow talking about Alice's profile
> page, but as defined above it's really the $:Alice page text
> variable of the current user. That's a little confusing.
Another good point. Thanks for the input Pm.
> Anyway, I'd tend to always go with {~$:var} for consistency.
> I think it'd be okay to offer {~var} as a shortcut, but I think
> there's potential for confusion there, and saving two characters
> per variable just isn't worth that level of confusion to me.
>
> My $0.02,
Here's the new code, seems to be working fine for both page and text vars.
Markup('profilevars', '<{$var}', '/\{\~(.*?)\}/e', "ZAPprofileVars('$1')");
function ZAPprofileVars($x) {
$profiles = ZAPconfig('Profiles', 'Profiles', 'Site.ZAPConfig');
if(substr($x, 0, 1) != '$') return "{" . $profiles . "." . $x . "}";
else return "{" . $profiles . '.{$AuthId}' . $x . "}";
}
I'll upload the revised ZAPtoolbox when I get a chance.
Cheers,
Dan
More information about the pmwiki-devel
mailing list