开发者

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);
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜