提交学习笔记专用
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

40 lines
804 B

  1. module.exports = (Class) =>
  2. class extends Class {
  3. before(name) {
  4. if (this.__after) {
  5. throw new Error(
  6. `Unable to set .before(${JSON.stringify(
  7. name,
  8. )}) with existing value for .after()`,
  9. );
  10. }
  11. this.__before = name;
  12. return this;
  13. }
  14. after(name) {
  15. if (this.__before) {
  16. throw new Error(
  17. `Unable to set .after(${JSON.stringify(
  18. name,
  19. )}) with existing value for .before()`,
  20. );
  21. }
  22. this.__after = name;
  23. return this;
  24. }
  25. merge(obj, omit = []) {
  26. if (obj.before) {
  27. this.before(obj.before);
  28. }
  29. if (obj.after) {
  30. this.after(obj.after);
  31. }
  32. return super.merge(obj, [...omit, 'before', 'after']);
  33. }
  34. };