parent.js 910 B

123456789101112131415161718192021222324252627282930313233
  1. var falafel = require('../');
  2. var test = require('tape');
  3. test('parent', function (t) {
  4. t.plan(5);
  5. var src = '(function () {'
  6. + 'var xs = [ 1, 2, 3 ];'
  7. + 'fn(ys);'
  8. + '})()';
  9. var output = falafel(src, function (node) {
  10. if (node.type === 'ArrayExpression') {
  11. t.equal(node.parent.type, 'VariableDeclarator');
  12. t.equal(
  13. ffBracket(node.parent.source()),
  14. 'xs = [ 1, 2, 3 ]'
  15. );
  16. t.equal(node.parent.parent.type, 'VariableDeclaration');
  17. t.equal(
  18. ffBracket(node.parent.parent.source()),
  19. 'var xs = [ 1, 2, 3 ];'
  20. );
  21. node.parent.update('ys = 4;');
  22. }
  23. });
  24. Function(['fn'], output)(function (x) { t.equal(x, 4) });
  25. });
  26. function ffBracket (s) {
  27. return s.replace(/\[\s*/, '[ ').replace(/\s*\]/, ' ]');
  28. }