README
Expression Expander
Expands \${to be evaluated} expressions in object graphs. The actual expression syntax inside of the \${evaluated} is not defined within this module (only simple key lookup)
example
file.js
import { createContext } from "expression-expander";
const context = createContext();
context.properties = { aKey: "aValue", moreKeys: { a: 1, b: 2 } };
// expanding whole expressions at the key position
console.log(
JSON.stringify(
context.expand({ simple: "${aKey}", complex: { "${moreKeys}": {} } })
)
);
Output
{ "simple": "aValue", "complex": { "a": 1, "b": 2 } }
Any Object of the following types may be expanded
- String
- Number
- BigInt
- Buffer
- Object (key and value will be expanded)
- Array
- Map (key and value will be expanded)
- Set
- Boolean
- Promise
API
Table of Contents
expression-expander
Evaluator
Type: Function
Parameters
Returns Object expression evaluation result
PathEntry
Type: Object
Properties
value
Object
Quoter
Type: Function
Parameters
value
string to be quoted
Returns string quoted value
ExpressionExpander
Type: Object
Properties
properties
Object
expand
expand
Parameters
object
(string | boolean | number | bigint | Object | Map | Set) to expandpath
Array<PathEntry> describing the location in the to expanding data source (optional, default[{value:object}]
)
Returns any expanded object
properties
Properties used for the default expander implementation
createContext
Creates a new expansion context
Parameters
options
Object? object with the following keys (optional, default{}
)options.valueQuoter
Quoter? to quote expanded values by default no special quoting is done and the evaluated result will be direcly inserted into the output stringoptions.evaluate
Evaluator? evaluate(expression,context,path) function to evaluate expressions the default evaluation function does a lookup into the propertiesoptions.keepUndefinedValues
boolean? true: is expression resolves to undefind the original string will be used (with surrounding ${})options.maxNestingLevel
number? max number of recursive calls to expand defaults to 20options.properties
Object? default properties to evaluate expression against
Returns ExpressionExpander newly created expansion context
install
With npm do:
npm install expression-expander
license
BSD-2-Clause