Advertisement
Fleshian

safeReference

Feb 17th, 2015
231
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var falafel = require('falafel');
  2.  
  3. function safeReference(ex) {
  4.     var nodes = {
  5.         members: [],
  6.         objects: [],
  7.         declarator: ""
  8.     };
  9.  
  10.     falafel(ex, function(node) {
  11.  
  12.         if (node.type == "VariableDeclaration") {
  13.             nodes.declarator = node.source()
  14.         }
  15.         if (node.type === "MemberExpression") {
  16.             nodes.objects.push(node.object.source());
  17.             nodes.members.push("(" + node.source() + ")")
  18.         }
  19.     });
  20.  
  21.     nodes.members.unshift(nodes.objects[0]);
  22.     var splitedDeclarator = nodes.declarator.split(' = ');
  23.     splitedDeclarator[1] = nodes.members.join(' && ');
  24.  
  25.     nodes.declarator = splitedDeclarator.join(' = ') + ';';
  26.     return nodes.declarator;
  27. }
  28.  
  29.  
  30. var src = 'var x = a.b.c.d;';
  31. console.log(safeReference(src));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement