nalgene v0.2.5
nalgene
Nalgene is a natural language generation language.
Overview
Nalgene is used to generate text from an object of values. Generation requires two things: a grammar and a phrase tree. The grammar defines how phrases join together.
Here's a very simple grammar that demonstrates the three main features of Nalgene — %phrases, ~synonyms, and $values, as well as optional? tokens:
%greeting
~hello $name
~hello
hello
hi
hey there?Given values {name: "Fred"} this grammar might expand to:
- "hello Fred"
- "hey Fred"
- "hey there Fred"
Repetition
With an array of values to expand, e.g. a %greeting with $names = ["Joe", "Fred", "Sam"], with expected output "hello Joe and Fred and Sam", use the $value:joiner syntax:
%greeting
hello $names:andIf your joiner is more than two words, wrap it in parentheses like so:
%greeting
hello $names:(and also)If you want a different joiner for the last word, as is common in English (commas until an ending "and"), use the secondary joiner syntax. This will output "hello Joe, Fred and Sam".
%greeting
hello $names:,:andTo keep the first joiner between the last two values, e.g. to implement an Oxford comma ("hello Joe, Fred, and Sam"), replace the second : with ;.
%greeting
hello $names:,;andAn alternative to the above would be $names:,:(, and) but that creates an awkward situation if there are only two values: "hello Joe, and Sam".