[pmwiki-users] want opinions on a new cookbook recipe format
Patrick R. Michaud
pmichaud at pobox.com
Tue Mar 7 13:16:54 CST 2006
On Tue, Mar 07, 2006 at 12:53:01PM -0600, Chris Cox wrote:
> Susan wrote:
> > Does this (:directive:) code mean authors will have to produce a line of
> > letters and get things in the right order to fill in the fields? Or will
> > there be a template or form? They've already written the recipe, there
> > should be as few stumbling blocks as possible to them sharing it.
>
> If it's driven by a directive, you'd fill in the parameters in
> whatever order you want and then pmwiki could decide on
> what is displayed and how.
I'm not sure PmWiki should always be making this decision, even
for consistency's sake. Sometimes it may be important that a
recipe include a heading that isn't part of the standard set
we provide, or that it makes more sense for the headings to be
in a different sequence than the default.
In general I think the recipe author will knows best, and if a
recipe author is wrong, we have dozens of other co-authors
available to correct it.
> (:cookbook
> Name='PmCalendar'
> Summary='Calendar designed for PmWiki where each day is a separate wiki page.'
> Version='1.0rc6'
> Status='Stable'
> Prerequisites='pmwiki-2.0'
> Maintainer='ccox'
> Categories='Calendar,PIM'
> :)
To me, this is:
Name: PmCalendar
Summary: Calendar designed for PmWiki where each day is a separate wiki page
Version: 1.0rc6
Status: Stable
Maintainer: ccox
Categories: [[!Calendar]] [[!PIM]]
where PmWiki can still enforce rules on the specific properties if
it wishes via specialized markup rules, or grab all of the values
and then reformat them and re-order them in a different way.
To see how this could work, consider something like:
Markup('^Property:', 'fulltext',
'/^(?!Summary)([A-Z]\\w+):(.*)$/me',
"StoreProperty(\$pagename, '$1', PSS('$2'))");
Markup('^Summary:', '>^Property',
'/^Summary:(.*)$/me',
"DisplayProperties(\$pagename, PSS('$1'))");
The first markup rule captures all of the lines except for
"Summary:", and calls a StoreProperty function which stores each
values into an array somewhere and returns an empty string.
This has the effect of removing all of the properties (except
Summary:) from the markup, and storing them in an array where
they can be added by a later rule.
The "Summary:" rule is the later rule -- it replaces the
Summary: line with whatever we want, which can include the
(reformatted) values from the other lines that we captured
earlier and in whatever order we wish to enforce upon them.
I'm not saying this is how the Cookbook stuff will ultimately
work, but it shows how it *could* work, and still remain
extremely markup friendly for authors.
(If we want the first rule to only capture specific properties
instead of anything beginning with a capital letter, we simply
list the specific names we want to capture in the markup rule
instead of using the [A-Z]\\w+ pattern. Or we let the StoreProperty
function make that decision for us.)
Pm
More information about the pmwiki-users
mailing list