[pmwiki-users] About {$:var} text-variables - wikipaths - lists - external data sources

Martin Fick mogulguy at yahoo.com
Fri Sep 8 12:11:07 CDT 2006

After thinking about things a little more, I 
think that I am leaning towards taking a step 
backwards.  While the grand unification idea
has been fun, it has some drawbacks and I am
not sure that the benefits are that good.

Let me outline/name/split up some of the ideas 
that have been floating around of things/features 
that people seem to feel are things they would 
like in PmWiki.

- Natural ways of inserting data into wiki pages
- Getting data from other sources (mysql)
- Looking up data in wiki pages ( : and wikipaths)
- Settable (extended) pagevariables
- Conditionally friendly pagevariables
- Nestable Function calls
- List looping constructs
- Adding some HttpVariables

Some thoughts about the ideas/features mentioned

A - Extended pageVariables and page lookups are
two distinctly different beasts and both are 
important and desirable.  

1) One driving question becomes, if we can look 
things up in a page, then why do we need to be 
able to set pagevariables?

It has to do with the fact that setting a value
makes it much easier to reuse it somewhere else
in the page without having to redefine (a 
potentially long) lookup pattern and without
having to run any manipulations (function) calls
on the data.

So:  (:set headline={$:firstname} {$:lastname}'s

can easily be reused in a page with something 
like: {$headline}

2) Another major difference is that it probably
makes sense to someday make extendedpagevariables
work well with conditionals, but this is not
really necessary for lookups.  A lookup can be
described and understood to not be a variable, 
but simply a document lookup.  A data value 
is either there or not, it probably doesn't make 
sense to get conditionals involved.

3) And lastly, as mentioned many times by Patrick,
a lookup lends itself to being much more free 
about how data is defined in a wikipage whereas 
an extended pagevariable tends to want a well 
defined syntax.

B - Function calls merit their own syntax
Maybe something like ((function args))

1) If we think that both pagevariables
and pagelookups are valuable, we should be able
to apply functions call to either.

2) I should be able to apply function calls
to straight text without understanding lookups
or pagevariables.

3) The ability to nest function calls and to use
them in yet unforeseen ways is probably easier 
if they are defined on their own.

C - Lists, like function calls might be a 
concept worth developing on their own.

This means that many things should be
able to create lists and list constructs
could be built to operate on those.  I 
mainly am referring to looping here.  If
we have several ways of supplying lists:
pagelists, lookups (wikipaths), extended
pagevariables, external data sources
(mysql),... there is no reason that these
list creators need to be related to the
list looping operator.

D - Wikipaths should stick to wiki page data

1) Since they are leaning towards the complex,
keep them as focused as possible.

2) Easier to understand when told that they 
are lookups and not variables.

3) Keeping them separate from other things
gives us more symbols to work with which
is sorely needed for a rich wikipath 

4) Extending them to other Farm fields would
still make sense as another recipe.

E - Let the external data sources recipe
creator come up with a way of defining
data and list lookups.

Putting it all together:

By keeping things separate, I can combine
them easier.

(:set MyName=((toupper {{$:name}})) {$?LastName}:)

(:foreach Martin Patrick Dominique {{$:author}}:)
|| {=} || {{$:phone{=}}} ||

I know, it's been a little long, sorry,


Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 

More information about the pmwiki-users mailing list