diff options
Diffstat (limited to 'node_modules/babel-plugin-transform-es2015-template-literals')
4 files changed, 262 insertions, 0 deletions
diff --git a/node_modules/babel-plugin-transform-es2015-template-literals/.npmignore b/node_modules/babel-plugin-transform-es2015-template-literals/.npmignore new file mode 100644 index 0000000..3185290 --- /dev/null +++ b/node_modules/babel-plugin-transform-es2015-template-literals/.npmignore @@ -0,0 +1,4 @@ +node_modules +*.log +src +test diff --git a/node_modules/babel-plugin-transform-es2015-template-literals/README.md b/node_modules/babel-plugin-transform-es2015-template-literals/README.md new file mode 100644 index 0000000..854bc74 --- /dev/null +++ b/node_modules/babel-plugin-transform-es2015-template-literals/README.md @@ -0,0 +1,81 @@ +# babel-plugin-transform-es2015-template-literals + +> Compile ES2015 template literals to ES5 + +## Example + +**In** + +```javascript +`foo${bar}`; +``` + +**Out** + +```javascript +"foo" + bar; +``` + +## Installation + +```sh +npm install --save-dev babel-plugin-transform-es2015-template-literals +``` + +## Usage + +### Via `.babelrc` (Recommended) + +**.babelrc** + +```js +// without options +{ + "plugins": ["transform-es2015-template-literals"] +} + +// with options +{ + "plugins": [ + ["transform-es2015-template-literals", { + "loose": true, + "spec": true + }] + ] +} +``` + +### Via CLI + +```sh +babel --plugins transform-es2015-template-literals script.js +``` + +### Via Node API + +```javascript +require("babel-core").transform("code", { + plugins: ["transform-es2015-template-literals"] +}); +``` + +## Options + +### `loose` +In loose mode, tagged template literal objects aren't frozen. + + +### `spec` +This option wraps all template literal expressions with `String`. See [babel/babel#1065](https://github.com/babel/babel/issues/1065) for more info. + +**In** + +```javascript +`foo${bar}`; +``` + +**Out** + +```javascript +"foo" + String(bar); +``` diff --git a/node_modules/babel-plugin-transform-es2015-template-literals/lib/index.js b/node_modules/babel-plugin-transform-es2015-template-literals/lib/index.js new file mode 100644 index 0000000..2e6e57b --- /dev/null +++ b/node_modules/babel-plugin-transform-es2015-template-literals/lib/index.js @@ -0,0 +1,132 @@ +"use strict"; + +exports.__esModule = true; + +var _getIterator2 = require("babel-runtime/core-js/get-iterator"); + +var _getIterator3 = _interopRequireDefault(_getIterator2); + +exports.default = function (_ref) { + var t = _ref.types; + + function isString(node) { + return t.isLiteral(node) && typeof node.value === "string"; + } + + function buildBinaryExpression(left, right) { + return t.binaryExpression("+", left, right); + } + + return { + visitor: { + TaggedTemplateExpression: function TaggedTemplateExpression(path, state) { + var node = path.node; + + var quasi = node.quasi; + var args = []; + + var strings = []; + var raw = []; + + for (var _iterator = quasi.quasis, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, _getIterator3.default)(_iterator);;) { + var _ref2; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref2 = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref2 = _i.value; + } + + var elem = _ref2; + + strings.push(t.stringLiteral(elem.value.cooked)); + raw.push(t.stringLiteral(elem.value.raw)); + } + + strings = t.arrayExpression(strings); + raw = t.arrayExpression(raw); + + var templateName = "taggedTemplateLiteral"; + if (state.opts.loose) templateName += "Loose"; + + var templateObject = state.file.addTemplateObject(templateName, strings, raw); + args.push(templateObject); + + args = args.concat(quasi.expressions); + + path.replaceWith(t.callExpression(node.tag, args)); + }, + TemplateLiteral: function TemplateLiteral(path, state) { + var nodes = []; + + var expressions = path.get("expressions"); + + for (var _iterator2 = path.node.quasis, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : (0, _getIterator3.default)(_iterator2);;) { + var _ref3; + + if (_isArray2) { + if (_i2 >= _iterator2.length) break; + _ref3 = _iterator2[_i2++]; + } else { + _i2 = _iterator2.next(); + if (_i2.done) break; + _ref3 = _i2.value; + } + + var elem = _ref3; + + nodes.push(t.stringLiteral(elem.value.cooked)); + + var expr = expressions.shift(); + if (expr) { + if (state.opts.spec && !expr.isBaseType("string") && !expr.isBaseType("number")) { + nodes.push(t.callExpression(t.identifier("String"), [expr.node])); + } else { + nodes.push(expr.node); + } + } + } + + nodes = nodes.filter(function (n) { + return !t.isLiteral(n, { value: "" }); + }); + + if (!isString(nodes[0]) && !isString(nodes[1])) { + nodes.unshift(t.stringLiteral("")); + } + + if (nodes.length > 1) { + var root = buildBinaryExpression(nodes.shift(), nodes.shift()); + + for (var _iterator3 = nodes, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : (0, _getIterator3.default)(_iterator3);;) { + var _ref4; + + if (_isArray3) { + if (_i3 >= _iterator3.length) break; + _ref4 = _iterator3[_i3++]; + } else { + _i3 = _iterator3.next(); + if (_i3.done) break; + _ref4 = _i3.value; + } + + var node = _ref4; + + root = buildBinaryExpression(root, node); + } + + path.replaceWith(root); + } else { + path.replaceWith(nodes[0]); + } + } + } + }; +}; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +module.exports = exports["default"];
\ No newline at end of file diff --git a/node_modules/babel-plugin-transform-es2015-template-literals/package.json b/node_modules/babel-plugin-transform-es2015-template-literals/package.json new file mode 100644 index 0000000..9e1a740 --- /dev/null +++ b/node_modules/babel-plugin-transform-es2015-template-literals/package.json @@ -0,0 +1,45 @@ +{ + "_from": "babel-plugin-transform-es2015-template-literals@^6.22.0", + "_id": "babel-plugin-transform-es2015-template-literals@6.22.0", + "_inBundle": false, + "_integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "_location": "/babel-plugin-transform-es2015-template-literals", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "babel-plugin-transform-es2015-template-literals@^6.22.0", + "name": "babel-plugin-transform-es2015-template-literals", + "escapedName": "babel-plugin-transform-es2015-template-literals", + "rawSpec": "^6.22.0", + "saveSpec": null, + "fetchSpec": "^6.22.0" + }, + "_requiredBy": [ + "/babel-preset-es2015" + ], + "_resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "_shasum": "a84b3450f7e9f8f1f6839d6d687da84bb1236d8d", + "_spec": "babel-plugin-transform-es2015-template-literals@^6.22.0", + "_where": "/home/pruss/Dev/3-minute-website/node_modules/babel-preset-es2015", + "bundleDependencies": false, + "dependencies": { + "babel-runtime": "^6.22.0" + }, + "deprecated": false, + "description": "Compile ES2015 template literals to ES5", + "devDependencies": { + "babel-helper-plugin-test-runner": "^6.22.0" + }, + "keywords": [ + "babel-plugin" + ], + "license": "MIT", + "main": "lib/index.js", + "name": "babel-plugin-transform-es2015-template-literals", + "repository": { + "type": "git", + "url": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-es2015-template-literals" + }, + "version": "6.22.0" +} |