With regards to your desire to skip the callbacks for some methods, you can actually call methodWithoutCallbacks to call a method sans- callbacks.
I think that the wildcard/regex idea is neat, though I'm not sure how it could be accomplished unobtrusively. I could imagine overriding all of the object's methods to be called through a sort of method handler (similar to what I was playing with when I created this lazy class: http://github.com/nakajima/nakatype/tree/master/src/lazy_class.js), then having the method handler match callbacks to called methods. It seems a bit cleaner than my example, though it doesn't quite feel right still. I'm actually not so familiar with AOP, so perhaps after I spend some time with that, I'll be able to tackle some of these ideas. On May 15, 8:17 am, "Richard Quadling" <[EMAIL PROTECTED]> wrote: > 2008/5/14 Pat Nakajima <[EMAIL PROTECTED]>: > > > > > > > I've started putting together a way to specify per-object before/after > > callbacks for any method. Probably not something to go in core, but > > maybe something that would be interesting to core contributors. > > > There are some examples in a GitHub wiki (http://github.com/nakajima/ > > nakatype/wikis/callbacks), but basically, you specify callbacks like > > so: > > > var someArray = [1,2,3]; > > > Callbacks.add(someArray, { > > before: { > > push: function(entry) { > > var msg = 'about to push ' + entry + ' on array: ' + > > this.join(', '); > > console.info(msg); > > } > > }, > > > after: { > > push: function(entry) { > > var msg = 'just pushed ' + entry + ' on array: ' + > > this.join(', '); > > console.info(msg); > > } > > } > > }); > > > someArray.push(4); > > > In addition to adding 4 to someArray, the above code snippet will log > > to the console before and after. > > > If anybody has any suggestions/criticisms/threats, please do share! > > A very useful idea. > > How far is it from simple before/after callbacks to a full AOP implementation? > > Where I can see this being of instant use is the ability to develop a > class with no logging/diagnostics from day 1 and have a drop-in > before/after logger which wouldn't upset the main class. > > Rather than having to name the methods, it would be great to be able > to wildcard/regex them ( /[sg]et.+/ for example) as well as allowing > all with an exclude mechanism (allow the high use methods to NOT be > logged). > > I used to do Delphi development for a Point of Sale system. One of the > issues that we had was the user would say the calculation was wrong. > By using a plugin we could effectively record all the values of all > the calculations and the source of the values and produce a report of > any calculation. Remove the plugin and the app did nothing. All the > hooking and recording was in the plugin. This was useful especially > when you are converting costs with markups for bulk quantities > converted between buying and selling units. > > It is in keeping with the "unobtrusive" nature of much JS code. > > I think the callback handler should be available as an extension (like > the deprecated.js one is). So, officially supported/recognised, but > not built-in as standard. > > Maybe amend the rake dist process to allow those with the skills to > build their own prototype.js with the required extensions built in. > > -- > ----- > Richard Quadling > Zend Certified Engineer :http://zend.com/zce.php?c=ZEND002498&r=213474731 > "Standing on the shoulders of some very clever giants!" --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Prototype: Core" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/prototype-core?hl=en -~----------~----~----~----~------~----~------~--~---
