Code coverage report for 6to5/transformers/react.js

Statements: 92.86% (39 / 42)      Branches: 88.89% (32 / 36)      Functions: 100% (3 / 3)      Lines: 100% (36 / 36)      Ignored: none     

All files » 6to5/transformers/ » react.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 641 1   1 604   75 75     35 35     5 5     5 5     5 5   5 5   5 5 1       5 4       1     610   610 175 175 435 81 81 354 354 354     610 141     610 604      
var b = require("../builders");
var _ = require("lodash");
 
var addDisplayName = function (id, call) {
  if (!call || call.type !== "CallExpression") return;
 
  var callee = call.callee;
  if (callee.type !== "MemberExpression") return;
 
  // not React
  var obj = callee.object;
  if (obj.type !== "Identifier" || obj.name !== "React") return;
 
  // not createClass
  var prop = callee.property;
  Iif (prop.type !== "Identifier" || prop.name !== "createClass") return;
 
  // no arguments
  var args = call.arguments;
  Iif (args.length !== 1) return;
 
  // not an object
  var first = args[0];
  Iif (first.type !== "ObjectExpression") return;
 
  var props = first.properties;
  var safe = true;
 
  _.each(props, function (prop) {
    if (prop.key.name === "displayName") {
      return safe = false;
    }
  });
 
  if (safe) {
    props.unshift(b.property("init", b.identifier("displayName"), b.literal(id)));
  }
};
 
exports.AssignmentExpression =
exports.Property =
exports.VariableDeclarator = function (node) {
  var left, right;
 
  if (node.type === "AssignmentExpression") {
    left = node.left;
    right = node.right;
  } else if (node.type === "Property") {
    left = node.key;
    right = node.value;
  } else Eif (node.type === "VariableDeclarator") {
    left = node.id;
    right = node.init;
  }
 
  if (left && left.type === "MemberExpression") {
    left = left.property;
  }
 
  if (left && left.type === "Identifier") {
    addDisplayName(left.name, right);
  }
};