Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > Feeding a codeblock/function with an array or something similar?

Reply
Thread Tools

Feeding a codeblock/function with an array or something similar?

 
 
kazaam
Guest
Posts: n/a
 
      09-04-2007
Hi,
I have a codeblock like this:

def foobar(command,customerrormessage)
if not system(command)
puts customerrormessage
exit
end
end


and then many calls of it like:

foobar('rm something','Error I could'nt remove something')
foobar('apt-get install thishere','Error while installing the packet')
foobar('module-assistant a-i mymodule','Error while installing the module')
[..]

In pascal I would simply create a multi-dimensional array[x,y] and fill it with the commands and the corresponding error-messages but how to do this in ruby? There are no arrays like the mentioned on or? Or do you have a even better solution for this?

greets

--
kazaam <(E-Mail Removed)>
 
Reply With Quote
 
 
 
 
Jesús Gabriel y Galán
Guest
Posts: n/a
 
      09-04-2007
On 9/4/07, kazaam <(E-Mail Removed)> wrote:
> I have a codeblock like this:
>
> def foobar(command,customerrormessage)
> if not system(command)
> puts customerrormessage
> exit
> end
> end
>
>
> and then many calls of it like:
>
> foobar('rm something','Error I could'nt remove something')
> foobar('apt-get install thishere','Error while installing the packet')
> foobar('module-assistant a-i mymodule','Error while installing the module')


> In pascal I would simply create a multi-dimensional array[x,y] and fill it with the
> commands and the corresponding error-messages but how to do this in ruby?
> There are no arrays like the mentioned on or? Or do you have a even better
> solution for this?


I assume the order in which you execute the commands is important, so
I would do it like this (not tested):

command_list = []
command_list << {:command => 'rm something', :error_msg => 'I couldn't
remove something'}
command_list << {:command => 'apt-get install thishere', :error_msg =>
'Error while installing the packet'}
command_list << {:command => 'module-assistant a-i mymodule',
:error_msg => 'Error while installing the module'}

process_commands(command_list)

the process_commands can be something like:

def process_commands(command_list)
command_list.each do |command|
if not system(command[:command])
puts command[:error_msg]
end
end
end

Don't know if you want to break the execution of the other commands if
something fails, in which case you can return from the method inside
the if, but this can get you started as an idea.

Jesus.

 
Reply With Quote
 
 
 
 
kazaam
Guest
Posts: n/a
 
      09-04-2007
Hi thanks,
I would do this method to make my code smaller and better looking but the whole:

> command_list << {:command => 'rm something', :error_msg => 'I couldn't
> remove something'}
> command_list << {:command => 'apt-get install thishere', :error_msg =>
> 'Error while installing the packet'}
> command_list << {:command => 'module-assistant a-i mymodule',
> :error_msg => 'Error while installing the module'}


would blow the code even more than my momentan solution

--
kazaam <(E-Mail Removed)>
 
Reply With Quote
 
Robert Klemme
Guest
Posts: n/a
 
      09-04-2007
2007/9/4, kazaam <(E-Mail Removed)>:
> Hi,
> I have a codeblock like this:
>
> def foobar(command,customerrormessage)
> if not system(command)
> puts customerrormessage
> exit
> end
> end
>
>
> and then many calls of it like:
>
> foobar('rm something','Error I could'nt remove something')
> foobar('apt-get install thishere','Error while installing the packet')
> foobar('module-assistant a-i mymodule','Error while installing the module')
> [..]
>
> In pascal I would simply create a multi-dimensional array[x,y] and fill it with the commands and the corresponding error-messages but how to do this in ruby? There are no arrays like the mentioned on or? Or do you have a even better solution for this?


You can create multidimensional array just the same:

[
['rm something','Error I could'nt remove something'],
['apt-get install thishere','Error while installing the packet'],
['module-assistant a-i mymodule','Error while installing the module'],
].each do |cmd, error|
unless system cmd
$stderr.puts error
exit 1
end
end

Kind regards

robert

 
Reply With Quote
 
Jesús Gabriel y Galán
Guest
Posts: n/a
 
      09-04-2007
On 9/4/07, kazaam <(E-Mail Removed)> wrote:
> Hi thanks,
> I would do this method to make my code smaller and better looking but the
> whole:
>
> > command_list << {:command => 'rm something', :error_msg => 'I couldn't
> > remove something'}
> > command_list << {:command => 'apt-get install thishere', :error_msg =>
> > 'Error while installing the packet'}
> > command_list << {:command => 'module-assistant a-i mymodule',
> > :error_msg => 'Error while installing the module'}

>
> would blow the code even more than my momentan solution


It's easy to read this from a YAML configuration file or from a DB, so
the actual list of commands is not hardcoded. It all depends on the
complexity of your application. Of course you can also use other
structures like a multidimensional array, or a unidimensional array
with [cmd1, msg1, cmd2, msg2...], but I like the hash cause it makes
clear what each element is. I'd rather not have arrays where you need
to know that the first element is something and the second is
something else, but for simple cases it might be enough. YMMV, though.

Jesus.

 
Reply With Quote
 
kazaam
Guest
Posts: n/a
 
      09-04-2007
thank you this works nice

---
kazaam <(E-Mail Removed)>
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
! It's Time To STOP Feeding USA Judges & Lawyers Canobull Righteous Computer Support 8 04-16-2005 04:55 AM
feeding data to an xml form judy XML 0 11-20-2004 02:41 AM
Feeding Frenzy jane jones Computer Support 2 05-23-2004 05:39 PM
Re: Feeding long input to showDocument: any way to use POST? Andrew Thompson Java 1 04-02-2004 02:22 PM
FEEDING TIME !!! Annika1980 Digital Photography 2 07-30-2003 12:44 AM



Advertisments