| 50 | return (scope[callback] || scope[constructor][callback]).apply(scope[callback] ? scope : scope[constructor], args); |
| 51 | |
| 52 | function extract(callbackName) { |
| 53 | var atStartBracket = callbackName.indexOf('(') !== -1 ? callbackName.indexOf('(') : callbackName.length, |
| 54 | atEndBracket = callbackName.lastIndexOf(')') !== -1 ? callbackName.lastIndexOf(')') : callbackName.length, |
| 55 | args = callbackName.substring(atStartBracket + 1, atEndBracket), // matching function arguments inside brackets |
| 56 | constructor = callbackName.indexOf('.') !== -1 ? callbackName.substr(0, callbackName.indexOf('.')) : null; // matching a string upto a dot to check ctrl as syntax |
| 57 | constructor = scope[constructor] && typeof scope[constructor].constructor === 'function' ? constructor : null; |
| 58 | |
| 59 | return { |
| 60 | callback: callbackName.substring(constructor && constructor.length + 1 || 0, atStartBracket), |
| 61 | args: $.map(args && args.split(',') || [], function(item) { return [$parse(item)(scope)]; }), |
| 62 | constructor: constructor |
| 63 | } |
| 64 | } |
| 65 | }; |
| 66 | |
| 67 | this.invokeDrop = function ($draggable, $droppable, event, ui) { |