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

Statements: 92.86% (39 / 42)      Branches: 85.71% (24 / 28)      Functions: 100% (3 / 3)      Lines: 100% (36 / 36)      Ignored: none     

All files » 6to5/transformation/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 635   85 85     44 44     5 5     5 5     5 5   5 5   5 5 1       5 4       1     641   641 174 174 467 79 79 388 388 388     641 135     641 635      
var t = require("../../types");
var _ = require("lodash");
 
var addDisplayName = function (id, call) {
  if (!call || !t.isCallExpression(call)) return;
 
  var callee = call.callee;
  if (!t.isMemberExpression(callee)) return;
 
  // not React
  var obj = callee.object;
  if (!t.isIdentifier(obj, { name: "React" })) return;
 
  // not createClass
  var prop = callee.property;
  Iif (!t.isIdentifier(prop, { name: "createClass" })) return;
 
  // no arguments
  var args = call.arguments;
  Iif (args.length !== 1) return;
 
  // not an object
  var first = args[0];
  Iif (!t.isObjectExpression(first)) return;
 
  var props = first.properties;
  var safe = true;
 
  _.each(props, function (prop) {
    if (t.isIdentifier(prop.key, { name: "displayName" })) {
      return safe = false;
    }
  });
 
  if (safe) {
    props.unshift(t.property("init", t.identifier("displayName"), t.literal(id)));
  }
};
 
exports.AssignmentExpression =
exports.Property =
exports.VariableDeclarator = function (node) {
  var left, right;
 
  if (t.isAssignmentExpression(node)) {
    left = node.left;
    right = node.right;
  } else if (t.isProperty(node)) {
    left = node.key;
    right = node.value;
  } else Eif (t.isVariableDeclarator(node)) {
    left = node.id;
    right = node.init;
  }
 
  if (t.isMemberExpression(left)) {
    left = left.property;
  }
 
  if (t.isIdentifier(left)) {
    addDisplayName(left.name, right);
  }
};