Function names contain regex?


#1

Is it possible to support something like the following:

def validate_address{#/d/#)
x = {#1}
miscfunction(x)
end

And yes, I totally just made up some bogus syntax - I have no idea if a
variable function name containing a regular expression is possible…
perhaps through some trick of aliasing?

I figure it must be possible, due to the model.find_x_and_y() methods in
ActiveRecord.

Bonus question: Is there a way for the code inside a function to
retrieve
the name of the function? And if so, if it was called through an alias,
would it return the name of the alias or the name of the original
function?

Pete


#2

Pete,

There’s no syntax for it, but you can implement it yourself using
method_missing (which is what ActiveRecord does):

class Foo
def validate_address(parameter, a)
puts “#{parameter}: #{a}”
end

 def method_missing(sym, *args, &block)
   if sym.to_s =~ /^validate_address_(.*)$/
     validate_address($1, *args, &block)
   else
     super
   end
 end

end

f = Foo.new
f.validate_address_hello(“world”)
#-> “hello: world”

  • Jamis