Guest User

Untitled

a guest
Feb 19th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.53 KB | None | 0 0
  1. var create_class = function () {
  2. var m = MochiKit.Base;
  3. var iter = MochiKit.Iter;
  4.  
  5. var new_func = function () {
  6. if (typeof this._new !== 'function') {
  7. return;
  8. }
  9. this._new.apply(this, arguments);
  10. };
  11.  
  12. iter.forEach(
  13. arguments,
  14. m.partial(m.update, new_func.prototype)
  15. );
  16.  
  17. return new_func;
  18. };
  19.  
  20. var Lazy = function (func) {
  21. var m = MochiKit.Base;
  22. this.func = func;
  23. this.arg_count = m.isUndefinedOrNull(arguments[1]) ? 0 : arguments[1];
  24. };
  25.  
  26. var hole = {};
  27. var lazy = function (func, arg_count) {
  28. return new Lazy(func, arg_count);
  29. };
  30.  
  31. var my_partial = function (func) {
  32. var m = MochiKit.Base;
  33. var it = MochiKit.Iter;
  34.  
  35. var base_args = m.extend(null, arguments, 1);
  36.  
  37. return function () {
  38. var args = arguments;
  39. args.shift = Array.prototype.shift;
  40.  
  41. var new_args = [];
  42.  
  43. it.forEach(base_args, function (arg) {
  44. if (arg !== hole && !(arg instanceof Lazy)) {
  45. new_args.push(arg);
  46. return;
  47. }
  48.  
  49. if (arg == hole) {
  50. if (!m.isUndefinedOrNull(args[0])) {
  51. new_args.push(args.shift());
  52. }
  53. return;
  54. }
  55.  
  56. var lazy_args = [];
  57. for (var count = 0; count < arg.arg_count; count++) {
  58. if (m.isUndefinedOrNull(args[0])) {
  59. break;
  60. }
  61. lazy_args.push(args.shift());
  62. }
  63. new_args.push(arg.func.apply(this, lazy_args));
  64. });
  65.  
  66. it.forEach(args, function (arg) {
  67. new_args.push(arg);
  68. });
  69.  
  70. func.apply(this, new_args);
  71. }
  72. }
Add Comment
Please, Sign In to add comment