[#11822] RCR: Input XML support in the base Ruby — Dave Thomas <Dave@...>

15 messages 2001/03/01

[#11960] Not Ruby, for me, for the moment at least — "Michael Kreuzer" <mkreuzer@... (nospam)>

I wrote on this newsgroup last weekend about how I was considering using

11 messages 2001/03/04

[#12023] French RUG ? — "Jerome" <jeromg@...>

Hi fellow rubyers,

16 messages 2001/03/05

[#12103] disassembling and reassembling a hash — raja@... (Raja S.)

Given a hash, h1, will the following always hold?

20 messages 2001/03/06

[#12204] FEATURE REQUEST: 'my' local variables — Leo Razoumov <see_signature@127.0.0.1>

Ruby is, indeed, a very well designed language.

64 messages 2001/03/07
[#12250] Re: FEATURE REQUEST: 'my' local variables — Leo Razoumov <see_signature@127.0.0.1> 2001/03/07

>>>>> "GK" == GOTO Kentaro <gotoken@math.sci.hokudai.ac.jp> writes:

[#12284] Re: FEATURE REQUEST: 'my' local variables — gotoken@... (GOTO Kentaro) 2001/03/08

In message "[ruby-talk:12250] Re: FEATURE REQUEST: 'my' local variables"

[#12289] Re: FEATURE REQUEST: 'my' local variables — matz@... (Yukihiro Matsumoto) 2001/03/08

Hi,

[#12452] Re: FEATURE REQUEST: 'my' local variables — gotoken@... (GOTO Kentaro) 2001/03/12

In message "[ruby-talk:12289] Re: FEATURE REQUEST: 'my' local variables"

[#12553] Re: FEATURE REQUEST: 'my' local variables — Dave Thomas <Dave@...> 2001/03/13

matz@zetabits.com (Yukihiro Matsumoto) writes:

[#12329] Math package — Mathieu Bouchard <matju@...>

18 messages 2001/03/09

[#12330] Haskell goodies, RCR and challenge — Robert Feldt <feldt@...>

Hi,

19 messages 2001/03/09
[#12374] Re: Haskell goodies, RCR and challenge — matz@... (Yukihiro Matsumoto) 2001/03/10

Hi,

[#12349] Can Ruby-GTK display Gif Png or Jpeg files? — Phlip <phlip_cpp@...>

Ruby-san:

20 messages 2001/03/09

[#12444] class variables — Max Ischenko <max@...>

14 messages 2001/03/12

[#12606] Order, chaos, and change requests :) — Dave Thomas <Dave@...>

17 messages 2001/03/14

[#12635] email address regexp — "David Fung" <dfung@...>

i would like to locate probable email addresses in a bunch of text files,

12 messages 2001/03/14

[#12646] police warns you -- Perl is dangerous!! — Leo Razoumov <see_signature@127.0.0.1>

I just read this story on Slashdot

14 messages 2001/03/14
[#12651] Re: police warns you -- Perl is dangerous!! — pete@... (Pete Kernan) 2001/03/14

On 14 Mar 2001 11:46:35 -0800, Leo Razoumov <see_signature@127.0.0.1> wrote:

[#12691] Re: police warns you -- Perl is dangerous!! — "W. Kent Starr" <elderburn@...> 2001/03/15

On Wednesday 14 March 2001 15:40, Pete Kernan wrote:

[#12709] [OFFTOPIC] Re: police warns you -- Perl is dangerous!! — Stephen White <spwhite@...> 2001/03/16

On Fri, 16 Mar 2001, W. Kent Starr wrote:

[#12655] Re: FEATURE REQUEST: 'my' local variables — "Benjamin J. Tilly" <ben_tilly@...>

>===== Original Message From Leo Razoumov <see_signature@127.0.0.1> =====

18 messages 2001/03/14

[#12706] Library packaging — "Nathaniel Talbott" <ntalbott@...>

I have a project that I'm working on that needs to live two different lives,

30 messages 2001/03/16

[#12840] Looking for a decent compression scheme — Dave Thomas <Dave@...>

14 messages 2001/03/19

[#12895] differences between range and array — "Doug Edmunds" <dae_alt3@...>

This code comes from the online code examples for

16 messages 2001/03/20
[#12896] Re: differences between range and array — "Hee-Sob Park" <phasis@...> 2001/03/20

[#12899] Re: differences between range and array — Jim Freeze <jim@...> 2001/03/20

On Tue, 20 Mar 2001, Hee-Sob Park wrote:

[#12960] TextBox ListBox — Ron Jeffries <ronjeffries@...>

Attached is a little Spike that Chet and I are doing. It is a

13 messages 2001/03/20

[#12991] [ANN] Lapidary 0.2.0 — "Nathaniel Talbott" <ntalbott@...>

Well, here's my first major contribution to the Ruby world: Lapidary. It's a

16 messages 2001/03/20

[#13028] mkmf question — Luigi Ballabio <luigi.ballabio@...>

15 messages 2001/03/21

[#13185] Reading a file backwards — "Daniel Berger" <djberg96@...>

Hi all,

21 messages 2001/03/25
[#13197] Re: Reading a file backwards — "Daniel Berger" <djberg96@...> 2001/03/25

> Hi Dan,

[#13203] Re: Reading a file backwards — Mathieu Bouchard <matju@...> 2001/03/25

On Sun, 25 Mar 2001, Daniel Berger wrote:

[#13210] Re: Reading a file backwards — "Daniel Berger" <djberg96@...> 2001/03/25

"Mathieu Bouchard" <matju@sympatico.ca> wrote in message

[#13374] Passing an array to `exec'? — Lloyd Zusman <ljz@...>

I'd like to do the following:

15 messages 2001/03/31

[#13397] Multidimensional arrays and hashes? — Lloyd Zusman <ljz@...>

Is it possible in ruby to make use of constructs that correspond to

14 messages 2001/03/31

[ruby-talk:12074] Re: Ruby & AOP

From: Avi Bryant <avi@...4.com>
Date: 2001-03-06 02:16:08 UTC
List: ruby-talk #12074
A lot of the discussion has been hovering around basically this question -
what would be the cleanest/most useful primitive for doing AOP or AOP-like
things?  advice.c was my first try at such a thing, but I'm not entirely
happy with it.  Something like "called" might be good - ideally usage
would be something like

class Foo
	def called(method, *args, &block)

		#do stuff (including manipulation of args)

		retval = send(method, args) &block

		#do more stuff

		return retval
	end
end

It's a little messier than the way advice.c currently works, but since the
primitive would most likely be used only within higer level AOP packages,
maybe that doesn't actually matter - and it would probably fix the
has_block? bug in advice.c that Guy pointed out.

The implementation exactly as I describe it above, however, wouldn't work
- it would end up in infinite recursion of send/called/send/called.  The
way both AspectR and advice.c solve this is to store the "real" method
under a mangled name, so that in fact "called" would look either like

def called(mangled_method, *args, &block)
	#do stuff (unmangling method if needed)
	send(mangled_method, args) &block
end

or

def called(method, *args, &block)
	#do stuff
	send(mangle(method), args) &block
end

Actually implementing this would be very easy, it would just be a
simplified advice.c.

Thoughts, anyone?

 On Tue, 6 Mar 2001, Dennis Decker Jensen wrote:

> So here is my main thougth: What about adding another callback named
> "called"? Object.called seems like the right place..(??)
> 
> It could be used something like this (wild fantasy code snippet):
> ---------------------
> class Thing
> 	attr_reader :x
> 
> 	def initialize(x, y)
> 		@x,@y = x, y
> 	end
> 
> 	def printXAndY
> 		print "x: #{@x} y: #{@y}\n"
> 	end
> 
> 	def Thing.called(object, method, returned_object, *args)
> 		puts "In class method: "
> 		print "#{object}.#{method}(#{args}\n"
> 	end
> 
> 	def called(object, method, returned_object, *args)
> 		puts "In instance method: "
> 		print "#{object}.#{method}(#{args})\n"
> 		args[0] = 7 if method =~ "printXandY"
> 	end
> end
> 
> t = Thing.new(12,24) # would generate something like:
> In class method: Thing.new(12, 24)
> In instance method: t.initialize(12, 24)
> 
> t.printXandY # would generate something like:
> In instance method: t.printXandY()
> 
> puts t.x # would generate something like:
> In instance method: t.x()
> 7
> ---------------------
> 
> It looks nice from a usage point of view. Pure Star Trek! Is it feasible?
> 
> The idea is to pass arguments similar to the ones passed on in AspectR and
> be able to change the arguments in place. Oh - wait - there is going to be a
> problem with that... Ruby variable assignment only changes the reference and
> not the object itself.
> 
> Sigh! I'm sorry about that.
> 
> I'm afraid though that I haven't got a clue regarding the implementation or
> issues involved. Does anyone have knowledge to see if it could be possible
> somehow? Would it be worth the effort?
> 
> Dennis Decker Jensen
> 

In This Thread