JavaScript in-string variables
It is a pain in the ass to concatenate a ton of variables inside a string. This snippet replaces anything inside #{ and } with its content eval'ed. More instructions here.
String.prototype.pretify = function()
{
var matches = this.match(/\#\{.+?\}/g);
var pretified = this;
for (var m in matches)
{
var match = matches[m];
var evalCode = match.substr(2, match.length - 3);
var result = eval(evalCode);
pretified = pretified.replace(match, result);
}
return pretified;
};Written by Fernando Santos
Related protips
8 Responses
I like it! I especially like that you extended the String prototype. Otherwise it would just be another template engine.
Hey im working on a prototype extension library. https://github.com/dperrymorrow/lil-p/blob/master/lil-p.js
Would you be interested in collaborating on this with me? The above String addition is really cool.
@dperrymorrow Thanks! Yes, I love prototype. Best thing since ever! :)
@dperrymorrow Sure, you can use this snippet. We can work together, although I don't have too much time, but we can talk, at least. Just throw me a message on GitHub.
Hmm, why not just use lodash.template? https://lodash.com/docs#template
It's a proven pattern & well tested
I would definitely miss this if I wouldn't use CoffeeScript. It doesn't even use eval, which can be potentially dangerous.
@pgilad It's an option. I've just made this out of fun some time ago :)
@zinkkrysty As of now, I don't even remember why the hell I've used "eval". Guess I was out of coffee.
Have a fresh tip? Share with Coderwall community!
JavaScript on a page runs with the privileges of that origin. One altered library, tag manager, or snippet can read inputs, change what people see, and call your APIs as the user.
Security insights from Cside