> 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
-~----------~----~----~----~------~----~------~--~---

Reply via email to