1.0.0-beta.1 • Published 4 years ago

defaultjs-expression-language v1.0.0-beta.1

Weekly downloads
4
License
MIT
Repository
github
Last release
4 years ago

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="defaultjs-expression-language.min.js"></script>

Nodejs/NPM

npm install defaultjs-expression-language
import ExpressionResolver from "@modules/ExpressionResolver"

/*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 "@modules/ExpressionResolver"

/*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!

Promise value replacement

/*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!

promise value replacement

/*promise value replacement*/
defaultjs.el.ExpressionResolver.resolve("${name}", {"name": function(){
	return Promise.resolve("max mustermann");
}).then(console.log); // max mustermann

defaultjs.el.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

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

License

MIT