From daf171770a4e3dee5e661ea47bb0382a750b7a22 Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Mon, 17 Aug 2015 15:09:30 -0700 Subject: [PATCH] add support for evaluating template literals --- .../babel-traverse/src/path/evaluation.js | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/packages/babel-traverse/src/path/evaluation.js b/packages/babel-traverse/src/path/evaluation.js index cd2024004b..d22ec68540 100644 --- a/packages/babel-traverse/src/path/evaluation.js +++ b/packages/babel-traverse/src/path/evaluation.js @@ -69,6 +69,27 @@ export function evaluate(): { confident: boolean; value: any } { } } + if (path.isTemplateLiteral()) { + var str = ""; + + var i = 0; + var exprs = path.get("expressions"); + + for (let elem of (node.quasis: Array)) { + // not confident, evaluated an expression we don't like + if (!confident) break; + + // add on cooked element + str += elem.value.cooked; + + // add on interpolated expression if it's present + var expr = exprs[i++]; + if (expr) str += String(evaluate(expr)); + } + + if (confident) return str; + } + if (path.isConditionalExpression()) { if (evaluate(path.get("test"))) { return evaluate(path.get("consequent"));