BVB Source Codes

reactide Show index.js Source code

Return Download reactide: download index.js Source code - Download reactide Source code - Type:.js
  1. "use strict";
  2.  
  3. exports.__esModule = true;
  4.  
  5. var _getIterator2 = require("babel-runtime/core-js/get-iterator");
  6.  
  7. var _getIterator3 = _interopRequireDefault(_getIterator2);
  8.  
  9. exports.default = function (_ref) {
  10.   var t = _ref.types;
  11.  
  12.   function isString(node) {
  13.     return t.isLiteral(node) && typeof node.value === "string";
  14.   }
  15.  
  16.   function buildBinaryExpression(left, right) {
  17.     return t.binaryExpression("+", left, right);
  18.   }
  19.  
  20.   return {
  21.     visitor: {
  22.       TaggedTemplateExpression: function TaggedTemplateExpression(path, state) {
  23.         var node = path.node;
  24.  
  25.         var quasi = node.quasi;
  26.         var args = [];
  27.  
  28.         var strings = [];
  29.         var raw = [];
  30.  
  31.         for (var _iterator = quasi.quasis, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, _getIterator3.default)(_iterator);;) {
  32.           var _ref2;
  33.  
  34.           if (_isArray) {
  35.             if (_i >= _iterator.length) break;
  36.             _ref2 = _iterator[_i++];
  37.           } else {
  38.             _i = _iterator.next();
  39.             if (_i.done) break;
  40.             _ref2 = _i.value;
  41.           }
  42.  
  43.           var elem = _ref2;
  44.  
  45.           strings.push(t.stringLiteral(elem.value.cooked));
  46.           raw.push(t.stringLiteral(elem.value.raw));
  47.         }
  48.  
  49.         strings = t.arrayExpression(strings);
  50.         raw = t.arrayExpression(raw);
  51.  
  52.         var templateName = "taggedTemplateLiteral";
  53.         if (state.opts.loose) templateName += "Loose";
  54.  
  55.         var templateObject = state.file.addTemplateObject(templateName, strings, raw);
  56.         args.push(templateObject);
  57.  
  58.         args = args.concat(quasi.expressions);
  59.  
  60.         path.replaceWith(t.callExpression(node.tag, args));
  61.       },
  62.       TemplateLiteral: function TemplateLiteral(path, state) {
  63.         var nodes = [];
  64.  
  65.         var expressions = path.get("expressions");
  66.  
  67.         for (var _iterator2 = path.node.quasis, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : (0, _getIterator3.default)(_iterator2);;) {
  68.           var _ref3;
  69.  
  70.           if (_isArray2) {
  71.             if (_i2 >= _iterator2.length) break;
  72.             _ref3 = _iterator2[_i2++];
  73.           } else {
  74.             _i2 = _iterator2.next();
  75.             if (_i2.done) break;
  76.             _ref3 = _i2.value;
  77.           }
  78.  
  79.           var elem = _ref3;
  80.  
  81.           nodes.push(t.stringLiteral(elem.value.cooked));
  82.  
  83.           var expr = expressions.shift();
  84.           if (expr) {
  85.             if (state.opts.spec && !expr.isBaseType("string") && !expr.isBaseType("number")) {
  86.               nodes.push(t.callExpression(t.identifier("String"), [expr.node]));
  87.             } else {
  88.               nodes.push(expr.node);
  89.             }
  90.           }
  91.         }
  92.  
  93.         nodes = nodes.filter(function (n) {
  94.           return !t.isLiteral(n, { value: "" });
  95.         });
  96.  
  97.         if (!isString(nodes[0]) && !isString(nodes[1])) {
  98.           nodes.unshift(t.stringLiteral(""));
  99.         }
  100.  
  101.         if (nodes.length > 1) {
  102.           var root = buildBinaryExpression(nodes.shift(), nodes.shift());
  103.  
  104.           for (var _iterator3 = nodes, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : (0, _getIterator3.default)(_iterator3);;) {
  105.             var _ref4;
  106.  
  107.             if (_isArray3) {
  108.               if (_i3 >= _iterator3.length) break;
  109.               _ref4 = _iterator3[_i3++];
  110.             } else {
  111.               _i3 = _iterator3.next();
  112.               if (_i3.done) break;
  113.               _ref4 = _i3.value;
  114.             }
  115.  
  116.             var node = _ref4;
  117.  
  118.             root = buildBinaryExpression(root, node);
  119.           }
  120.  
  121.           path.replaceWith(root);
  122.         } else {
  123.           path.replaceWith(nodes[0]);
  124.         }
  125.       }
  126.     }
  127.   };
  128. };
  129.  
  130. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  131.  
  132. module.exports = exports["default"];
downloadindex.js Source code - Download reactide Source code
Related Source Codes/Software:
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
postal - 2017-06-11
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top