From: Trans Date: 2006-08-31T01:20:35+09:00 Subject: Re: Matz' Wild Ideas: Annotations Matt Todd wrote: > class X > def foo arg1 > # do stuff here > end > annotate :foo do > requires "arg1 >= 10" # or whatever it takes > overriding true > visibility public # though I think what we've now works well > end > end > > I like your last try, Trans, but it just doesn't sit too well with me. > This example above is about as verbose as I'd like it... #annotate > being a class method that actively annotates the methods properties. > This way _could_ be easier to implement, and less destructive of the > current syntax. (I like that.) Plus, it's a method, so it doesn't > matter where or when you call it. > > Also, I don't think we should duplicate visibilitiy... there's a > reason we have what we already have for defining public and private > and protected. > > One of my biggest concerns/thoughts, really, is how to preserve the > test "arg1 >= 10" to be both reprintable and testable. I mean, I guess > it could be done with some hacking to get the binding of the method > and then #eval it with that binding, but still, you're passing a > string as a test. > > I understand and agree with you, Francis: annotations open up quite a > bit. In fact, it's a step towards good AOP (Aspect Oriented > Programming). (Or am I thinking of another term... crap, where's my > PragProg book!?) But, on configuration vs. convention, it would be > perfectly sufficient to have a conventional annotation, and from > there, anything specific just overrides it. That way we don't have to > worry about breakage and for those that are perfectly happy with the > way things are now (a good majority of the people) can go on their > merry way. Is there any other way!? :) FYI. I'm working on this for next version of Facets' Annotations system. Thanks, T.