Reader View Templates example

https://github.com/eu81273/jsfiddle-console

by dimitrs_papadimitriou

HTML

<script src="https://rawgit.com/eu81273/jsfiddle-console/master/console.js"></script>
<script src="https://code.jquery.com/jquery-3.4.0.js"></script>

JavaScript

var Reader = (expr) => ({
    expr: expr,
    map: f => Reader (env=>f(Reader (expr).run(env))) ,
    run: env => expr(env), 
});
 
const titleViewTemplate = Reader(({ firstName, lastName }) => `<div>${firstName} - ${lastName} </div>` )
 
var titleView  = titleViewTemplate.run({firstName:"dimitris", lastName:"papadim"});
console.log(titleView);//<div>dimitris - papadim </div>


var addToSpan  = titleViewTemplate.map( x=>`<span>${x}</span>`).run({firstName:"dimitris", lastName:"papadim"});
console.log(addToSpan); //<span><div>dimitris - papadim </div></span>