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
-~----------~----~----~----~------~----~------~--~---

Reply via email to