interpolate function need
I need an javascript function that can do interpolate like the one for prototype js framework. Anyone have an interpolate function that is not depend on prototype? Jquer开发者_JAVA技巧y is welcome. Thanks.
Depending on your needs, something like this might work:
String.prototype.interpolate = function(valueMap){
return this.replace(/\{([^}]+)\}/g, function(dummy, v){
return valueMap[v];
});
};
Usage:
var params = {
"speed":"slow",
"color":"purple",
"animal":"frog"
};
var template = "The {speed} {color} fox jumps over the lazy {animal}.";
alert(template.interpolate(params));
//alerts:
//"The slow purple fox jumps over the lazy frog."
This will provide basic interpolation for {named}
items wrapped in braces in your string.
Note: this is a basic implementation and shouldn't be used in cases where the string or parameters are not secure (e.g. if you were to build up a SQL statement or something)
If you don't care about security (eval()
is not a good thing in serious code):
evalfun = function (x) {
return eval(x);
};
String.prototype.interpolate = function (fn) {
return this.replace( /\{([^}]+)\}/g,
function ( dummy, v ) {
return fn( v );
}
);
};
var world = "room"
"hello {world}".interpolate(evalfun);
精彩评论