@default-js/defaultjs-expression-language
v1.0.2
Published
This provides an expression resolver. You can build an resolver chain to solve hierarchic scopes!
Downloads
54
Readme
defaultjs-expression-language
** Table of Contents
Intro
This lib provide functionallity similar to the text literals at javascript, but this lib supports Promise results from an Expression.
** Use this lib for dynamic content solutions.
Install
Browser
<script type="text/javascript" src="browser-defaultjs-expression-language.min.js"></script>
Nodejs/NPM
npm install @default-js/defaultjs-expression-language
import ExpressionResolver from "@default-js/defaultjs-expression-language"
/*simple value replacement*/
ExpressionResolver.resolve("${name}", {"name": "max mustermann"})
.then(console.log); // max mustermann
ExpressionResolver.resolveText("hello ${name}, nice to see you!", {"name": "max mustermann"})
.then(console.log); // hello max mustermann, nice to see you!
Using
Simple value replacement
import ExpressionResolver from "@default-js/defaultjs-expression-language"
/*resolve an expression*/
ExpressionResolver.resolve("${name}", {"name": "max mustermann"})
.then(console.log); // max mustermann
/*replace expression at string*/
ExpressionResolver.resolveText("hello ${name}, nice to see you!", {"name": "max mustermann"})
.then(console.log); // hello max mustermann, nice to see you!
Promise / async support
/*promise value replacement*/
ExpressionResolver.resolve("${name}", {"name": function(){
return Promise.resolve("max mustermann");
}).then(console.log); // max mustermann
ExpressionResolver.resolveText("hello ${name}, nice to see you!", {"name": function(){
return Promise.resolve("max mustermann");
}).then(console.log); // hello max mustermann, nice to see you!
API Documentation
import ExpressionResolver from "@default-js/defaultjs-expression-language";
ExpressionResolver.resolve(aStatement, aContext, aDefault, aTimeout)
// returned a promise and the expression can be resolved to any type
ExpressionResolver.resolveText(aStatement, aContext, aDefault, aTimeout)
// returned a promise and the expression would be resolved to an string
Context sensitive behavior
const global = window || global || self || this || {};
global.test = "global test var";
ExpressionResolver.resolve("${test}"); // global test var
ExpressionResolver.resolve("${test}", {}); // global test var
ExpressionResolver.resolve("${test}", {test: "local test var"}); // local test var
ExpressionResolver.resolveText("text ${test} text"); // text global test var text
ExpressionResolver.resolveText("text ${test} text", {}); // text global test var text
ExpressionResolver.resolveText("text ${test} text", {test: "local test var"}); // text local test var text
Default value behavior
const global = window || global || self || this || {};
global.test = undefined;
ExpressionResolver.resolve("${test}", global, "var is undefined"); // var is undefined
ExpressionResolver.resolveText("text ${test} text", global, "var is undefined"); // text var is undefined text
Timeout behavior
const global = window || global || self || this || {};
global.test = "global test var";
ExpressionResolver.resolve("${test}", global, undefined, 1000);
// the expression resolver waits 1000ms, before starting the resolving process
ExpressionResolver.resolveText("text ${test} text", global, undefined, 1000);
// the expression resolver waits 1000ms, before starting the resolving process