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.rubyforge.org/