Skip to content

Instantly share code, notes, and snippets.

@WebReflection
Last active August 17, 2022 04:04
Show Gist options
  • Star 48 You must be signed in to star a gist
  • Fork 9 You must be signed in to fork a gist
  • Save WebReflection/8f227532143e63649804 to your computer and use it in GitHub Desktop.
Save WebReflection/8f227532143e63649804 to your computer and use it in GitHub Desktop.
ES6 Template like strings in ES3 compatible syntax.
// this is now a module:
// https://github.com/WebReflection/backtick-template#es2015-backticks-for-es3-engines--
var template = require('backtick-template');
// just string
const info = 'template';
`some ${info}` === template('some ${info}', {info});
// passing through a transformer
transform `some ${info}` ===
template(transform, 'some ${info}', {info});
// using it as String method
String.prototype.template = template.asMethod;
`some ${info}` === 'some ${info}'.template({info});
transform `some ${info}` ===
'some ${info}'.template(transform, {info});
@alundiak
Copy link

alundiak commented Sep 4, 2015

Is this kinda proposal to get rid of ES6 way? Any luck to discuss it with TC39?

@aMarCruz
Copy link

👍
In line# 16 you can write str = this.slice(i, m.index);
instead str = this.slice(i, re.lastIndex - m[0].length);

@WebReflection
Copy link
Author

fixed, will update the CSP version too soon, cheers

@hooblei
Copy link

hooblei commented Oct 28, 2015

var f = function (_) { return 'foo'; }, v = 1;
`hm ... ${f({a: v})}`
"hm ... foo"
"hm ... ${f({a: v})}".template({
  f: function () { return 'foo'; },
  v: 1
});
undefined:2
with(this)return "hm ... "+(f({a: v)+")}"
                                   ^
SyntaxError: Unexpected token )
    at Function (<anonymous>)
    ...

... and fixed

@JaroslavMoravec
Copy link

+1 for @hooblei - there is bad RE which makes } inside embedded expressions impossible.

@ramtob
Copy link

ramtob commented Sep 7, 2016

+1

@bcomnes
Copy link

bcomnes commented Dec 11, 2016

Has anyone turned this into a module instead of a prototype extend?

@WebReflection
Copy link
Author

@aMarCruz @hooblei @JaroslavMoravec @ramtob @bcomnes

I've rewritten the original idea from scratch and covered 100% (let's say it was an excuse to test coveralls but ... hey ...)

https://github.com/WebReflection/backtick-template#es2015-backticks-for-es3-engines--

Best Regards

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment