Advertisement
Guest User

Untitled

a guest
Feb 23rd, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.89 KB | None | 0 0
  1. // Template Literal (ES6) Polyfill Start
  2.  
  3. function stripIndent(str) {
  4. var match = str.match(/^[ \t]*(?=\S)/gm);
  5. if (!match) return str;
  6.  
  7. var indent = Math.min.apply(
  8. Math,
  9. match.map(function(x) {
  10. return x.length;
  11. })
  12. );
  13.  
  14. var re = new RegExp("^[ \\t]{" + indent.toString() + "}", "gm");
  15. return indent > 0 ? str.replace(re, "") : str;
  16. }
  17.  
  18. function literal(fn) {
  19. var reCommentContents = /\/\*!?(?:@preserve)?[ \t]*(?:\r\n|\n)([\s\S]*?)(?:\r\n|\n)[ \t]*\*\//;
  20. var matchedString = reCommentContents.exec(fn.toString())[1];
  21. var stringWithEvalResult = matchedString.replace(/\${([^}]*)}/g, function(
  22. occurency,
  23. jsExprMatch
  24. ) {
  25. return eval(jsExprMatch.trim());
  26. });
  27.  
  28. return stripIndent(stringWithEvalResult).trim();
  29. }
  30.  
  31. // Template Literal (ES6) Polyfill End
  32. // Usage:
  33. literal(function() {
  34. /*
  35. <div>
  36. <h1>${Math.cos(Math.PI / 2).toFixed(2)}</h1>
  37. </div>
  38. */
  39. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement