capturable.js 805 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. 'use strict';
  2. module.exports = function capturable () {
  3. var events = [];
  4. function _capt (value, espath) {
  5. events.push({value: value, espath: espath});
  6. return value;
  7. }
  8. function _expr (value, args) {
  9. var captured = events;
  10. events = [];
  11. var source = {
  12. content: args.content,
  13. filepath: args.filepath,
  14. line: args.line
  15. };
  16. if (args.generator) {
  17. source.generator = true;
  18. }
  19. if (args.async) {
  20. source.async = true;
  21. }
  22. return {
  23. powerAssertContext: {
  24. value: value,
  25. events: captured
  26. },
  27. source: source
  28. };
  29. }
  30. return {
  31. _capt: _capt,
  32. _expr: _expr
  33. };
  34. };