> Predicates are functions from JSON nodes -> booleans. It was pointed
> out that if you define *truth* on JSON nodes, which we've already
> done, then formatters can serve as predicates.
I admit it; it was me.
> But it doesn't work, because in the "false" case you may still need
> substitutions:
I disagree.
> {.section group|plural?}
> There are {num} people in group {name}.
> {.or}
> There is one person in group {name}.
> {.end}
{.section group}
{.section @|plural?}
There are {num} people in group {name}.
{.or}
There is one person in group {name}.
{.end}
{.end}
> {.section group|plural?}
> {@|fancy-formatter-for-plural-groups}
> {.or}
> There is one person in group {name}. {# No fancy formatter}
> {.end}
{.section group|plural?}
{@|fancy-formatter-for-plural-groups}
{.or}
There is one person in group {group.name}. {# No fancy formatter}
{.end}
> Also, predicates and formatters do different things, so we shouldn't
> make them the same concept. Formatters are concerned with
> substitution of values, and apply only to substitutions. Predicates
> are concerned with *whether* to show a section.
This is like saying that calls to an int(*)(void)
and calls to a char(*)(void) do different things, so
we can't refer to them both as function calls.
The | syntax does the same thing in both cases: it takes
the data, pipes it through the function, and uses the
resulting value.
The beauty of JSON Template is that it has four basic
operator: .section, .repeated section, substitute, and pipe.
Allowing pipe in .section and .repeated section would
address the perceived need for predicates by removing
a restriction (no pipes in section expressions); it adds
no new operators.
Adding predicates as a distinct operator grows the
operator set by 25%, adds another restriction
(no predicates in substitute expressions), and makes the
arguments to the | operator context dependent.
Russ
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "JSON
Template" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/json-template?hl=en
-~----------~----~----~----~------~----~------~--~---