jspm_packages/npm/babel-core@5.8.38/lib/types/index.js
function buildMatchMemberExpression(match, allowPartial) {
  var parts = match.split(".");

  return function (member) {
    // not a member expression
    if (!t.isMemberExpression(member)) return false;

    var search = [member];
    var i = 0;

    while (search.length) {
      var node = search.shift();

      if (allowPartial && i === parts.length) {
        return true;
      }

      if (t.isIdentifier(node)) {
        // this part doesn't match
        if (parts[i] !== node.name) return false;
      } else if (t.isLiteral(node)) {
        // this part doesn't match
        if (parts[i] !== node.value) return false;
      } else if (t.isMemberExpression(node)) {
        if (node.computed && !t.isLiteral(node.property)) {
          // we can't deal with this
          return false;
        } else {
          search.push(node.object);
          search.push(node.property);
          continue;
        }
      } else {
        // we can't deal with this
        return false;
      }

      // too many parts
      if (++i > parts.length) {
        return false;
      }
    }

    return true;
  };
}
function buildMatchMemberExpression(match, allowPartial) {
  var parts = match.split(".");

  return function (member) {
    // not a member expression
    if (!t.isMemberExpression(member)) return false;

    var search = [member];
    var i = 0;

    while (search.length) {
      var node = search.shift();

      if (allowPartial && i === parts.length) {
        return true;
      }

      if (t.isIdentifier(node)) {
        // this part doesn't match
        if (parts[i] !== node.name) return false;
      } else if (t.isLiteral(node)) {
        // this part doesn't match
        if (parts[i] !== node.value) return false;
      } else if (t.isMemberExpression(node)) {
        if (node.computed && !t.isLiteral(node.property)) {
          // we can't deal with this
          return false;
        } else {
          search.push(node.object);
          search.push(node.property);
          continue;
        }
      } else {
        // we can't deal with this
        return false;
      }

      // too many parts
      if (++i > parts.length) {
        return false;
      }
    }

    return true;
  };
}
function buildMatchMemberExpression ( match , allowPartial ) { var parts = match . split ( "." ) ; return function ( member ) { // not a member expression if ( ! t . isMemberExpression ( member ) ) return false ; var search = [ member ] ; var i = 0 ; while ( search . length ) { var node = search . shift ( ) ; if ( allowPartial && i === parts . length ) { return true ; } if ( t . isIdentifier ( node ) ) { // this part doesn't match if ( parts [ i ] !== node . name ) return false ; } else if ( t . isLiteral ( node ) ) { // this part doesn't match if ( parts [ i ] !== node . value ) return false ; } else if ( t . isMemberExpression ( node ) ) { if ( node . computed && ! t . isLiteral ( node . property ) ) { // we can't deal with this return false ; } else { search . push ( node . object ) ; search . push ( node . property ) ; continue ; } } else { // we can't deal with this return false ; } // too many parts if ( ++ i > parts . length ) { return false ; } } return true ; } ; }
Build a function that when called will return whether or not the
input `node` `MemberExpression` matches the input `match`.

For example, given the match `React.createClass` it would match the
parsed nodes of `React.createClass` and `React["createClass"]`.
Build a function that when called will return whether or not the input node MemberExpression matches the input match .