Asp Forum
Home
|
Login
|
Register
|
Search
Forums
>
comp.lang.ruby
A proper Ruby way to call a procedure by name
John Small
12/14/2008 1:59:00 PM
I know how to do this using a case statement but I want to know if
there's a more Rubyesque way of doing things.
I'm screen scraping from a lot of different sources. They all have much
same data but it's presented in different ways with different access
methods. I use scRubyt to do the scraping and define most of the setup
for each way of presenting things in hashes which are read in from yaml
files. That way I can nearly DRY everything up into a few simple Ruby
routines with all the differences between the websites extracted into
data files.
But there's one area I'm not satisfied with because some cases are so
different from the others that I have to write special routines just
for them. That's ok and I can name the routines to be used for those
cases in the yaml file. Then when the yaml config file is read in I can
use a switch statement to tell me how to process the data from each site
along the lines of
result = case value
when name1_from_yaml: result1(param1,param2)
when name2_from_yaml: result2(param1,param2)
etc
end
which is fine and dandy but what I really want to do is to be able to
put the name of the function to call into the yaml data file and then
somehow get to
result = function_named_in_yaml_file(param1,param2)
How do I do this in Ruby? In other words I want a string or symbol to
invoke a procedure without going via a case statement.
Ta
John Small
--
Posted via
http://www.ruby-...
.
2 Answers
Tim Hunter
12/14/2008 2:45:00 PM
0
John Small wrote:
> I know how to do this using a case statement but I want to know if
> there's a more Rubyesque way of doing things.
>
> I'm screen scraping from a lot of different sources. They all have much
> same data but it's presented in different ways with different access
> methods. I use scRubyt to do the scraping and define most of the setup
> for each way of presenting things in hashes which are read in from yaml
> files. That way I can nearly DRY everything up into a few simple Ruby
> routines with all the differences between the websites extracted into
> data files.
>
> But there's one area I'm not satisfied with because some cases are so
> different from the others that I have to write special routines just
> for them. That's ok and I can name the routines to be used for those
> cases in the yaml file. Then when the yaml config file is read in I can
> use a switch statement to tell me how to process the data from each site
> along the lines of
>
> result = case value
> when name1_from_yaml: result1(param1,param2)
> when name2_from_yaml: result2(param1,param2)
> etc
> end
>
> which is fine and dandy but what I really want to do is to be able to
> put the name of the function to call into the yaml data file and then
> somehow get to
>
> result = function_named_in_yaml_file(param1,param2)
>
> How do I do this in Ruby? In other words I want a string or symbol to
> invoke a procedure without going via a case statement.
>
> Ta
>
> John Small
ri Object#__send__
obj.__send__(method_name, arg1, arg2...)
--
RMagick:
http://rmagick.ruby...
John Small
12/15/2008 12:30:00 PM
0
Tim
OK, thanks for that. I knew it had to be simple
>> John Small
>
> ri Object#__send__
>
> obj.__send__(method_name, arg1, arg2...)
--
Posted via
http://www.ruby-...
.
Servizio di avviso nuovi messaggi
Ricevi direttamente nella tua mail i nuovi messaggi per
A proper Ruby way to call a procedure by name
Inserendo la tua e-mail nella casella sotto, riceverai un avviso tramite posta elettronica ogni volta che il motore di ricerca troverà un nuovo messaggio per te
Il servizio è completamente GRATUITO!
x
Login to ForumsZone
Login with Google
Login with E-Mail & Password