apep-std-vars
v0.1.0
Published
Common helpers for working with variables in Apep.
Downloads
8
Maintainers
Readme
Apep-std-vars
Common generators and combinators for working with variables in Apep Javascript text generation library.
Usage
$ npm install apep-std-vars
You can either use apep-std-vars
as its own include:
const pep = require('apep');
const pep_vars = require('apep-std-vars');
const p = pep_vars.store(...);
Or by extending an Apep instance:
let pep = require('apep');
pep = require('apep-std-vars')(pep);
const p = pep.store(...);
Extension does not alter the original Apep include but creates a simple proxy that also has the std-var functionality.
Documentation
clear(name)
Delete a variable.
name
- Variable name.
setFrom(name, generator)
Set the variable name
to the result of generator.
name
- Variable name.generator
- Generator run to produce the value.
const name = pep_vars.setFrom('name', pep.choice('Alice', 'Bob'))
const p = pep.seq(
'Affirmative, ', name '. I read you. ',
'Im sorry, ', pep.get('name'), ". Im afraid I cant do that.");
p.run() === "Affirmative, Dave. I read you. Im sorry Dave. Im afraid I cant do that."
p.run() === "Affirmative, Alice. I read you. Im sorry Alice. Im afraid I cant do that."
Always stores value as strings. The output of multiple
yielding generators are joined together into a single string value. setFrom
yields this combined value as its result.
use setFromCombined
if you need to store non-string values.
setFromCombined(f, z, name, generator)
Same behavior as setFrom
, but combines multiple yielded values with an accumulator function.
f
- Accumulator function to reduce multiple yields fromgenerator
to a single value.z
- Initial value for accumulator.name
- Variable name.generator
- Generator run to produce the value.
store(name, generator)
Get the currently stored value of a variable or compute it with a generator.
name
- Variable name.generator
- Generator run to produce the value.
// Make sure we always use the same name after computing it.
const name = pep_vars.store('name', pep.choice('Alice', 'Bob'))
const p = pep.seq(
'Affirmative, ', name '. I read you. ',
'Im sorry, ', name, ". Im afraid I cant do that.");
p.run() === "Affirmative, Dave. I read you. Im sorry Dave. Im afraid I cant do that."
p.run() === "Affirmative, Alice. I read you. Im sorry Alice. Im afraid I cant do that."
Always stores value as strings. The output of multiple
yielding generators are joined together into a single string value. store
yields this combined value as its result.
const v = pep_vars.store('joined_var',
pep.seq(
pep.lit(1.2),
pep.lit({}),
pep.lit(null)));
const p = pep.seq(v, v)
Array.from(p) === ['1.2[Object object]null', '1.2[Object object]null'];
Use storeCombined
if you need to store non-string values.
storeCombined(f, z, name, generator)
Same behavior as store
, but combines multiple yielded values with an accumulator function.
f
- Accumulator function to reduce multiple yields fromgenerator
to a single value.z
- Initial value for accumulator.name
- Variable name.generator
- Generator run to produce the value.