Last active
February 23, 2022 15:02
-
-
Save maggiben/7775404 to your computer and use it in GitHub Desktop.
Mini Mustache
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Bare bones template engine | |
*/ | |
const hydrate = function(template, scope) { | |
if ( | |
template.constructor === String && | |
template.length && | |
scope.constructor === Object && | |
Object.keys(scope).length | |
) { | |
return Object.entries(scope).reduce((view, [ key, value ]) => { | |
const regexp = new RegExp('\\{{' + key + '\\}}', 'gi'); | |
return view.replace(regexp, value); | |
}, template.slice(0)); | |
} else { | |
return null; | |
} | |
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
String.prototype.format = function() { | |
var formatted = this; | |
var arg = arguments[0]; | |
var regexp = null; | |
var key = null; | |
if(arg === Object(arg) && arg instanceof Array !== true) { | |
for(key in arg) { | |
if(arg.hasOwnProperty(key)) { | |
regexp = new RegExp('\\{{' + key + '\\}}', 'gi'); | |
formatted = formatted.replace(regexp, arg[key]); | |
} | |
} | |
} else { | |
for (var i = 0; i < arguments.length; i++) { | |
var regexp = new RegExp('\\{{' + i + '\\}}', 'gi'); | |
formatted = formatted.replace(regexp, arguments[i]); | |
} | |
} | |
return formatted; | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
const hydrate = function(template, scope) {
if (
template.constructor === String &&
template.length &&
scope.constructor === Object &&
Object.keys(scope).length
) {
return Object.entries(scope).reduce((view, [ key, value ]) => {
const regexp = new RegExp('\<%=[/' + key + '\s]+%>', 'gi');
return view.replace(regexp, value);
}, template.slice(0));
} else {
return null;
}
};
undefin