[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

read a ruby script like you would read a text file

Mmcolli00 Mom

1/27/2009 6:46:00 PM

Do you know if this is possible:
I want to read each ruby script in a directory (btw there a hundreds of
them) and then use that info to lable and make reports later. For now, I
just want to know if there is a possiblity to do this.

Each script contains an intialized setting that I can use to distinguish
the difference in my file standards. Later, I am going to create a
report based on what is available. Any suggestions for the below code?
Thanks, MC


Dir.entries("C:/ScriptDirectory").each do |filename|
if File.extname(filename) == ".rb" then #read a ruby file
File.open(filename, 'r') do |f1|
f1.each_line |line|
@fileStandard1 << filename if line =~ /setting343234/
puts "Stardard1" +@fileStandard1
@fileStandard2 << filename if line =~ /setting343999/
puts "Standard2" +@fileStandard2
@fileStandard3 << filename if line =~ /setting343245/
puts "Standard3" +@fileStandard3
end
end
end

##this code is a snippet I am going to use the new variables later in
the program.
--
Posted via http://www.ruby-....

2 Answers

Robert Klemme

1/27/2009 10:36:00 PM

0

On 27.01.2009 19:46, Mmcolli00 Mom wrote:
> Do you know if this is possible:
> I want to read each ruby script in a directory (btw there a hundreds of
> them) and then use that info to lable and make reports later. For now, I
> just want to know if there is a possiblity to do this.

What do you mean by "read"? Do you want to execute the Ruby code in
those scripts?

> Each script contains an intialized setting that I can use to distinguish
> the difference in my file standards. Later, I am going to create a
> report based on what is available. Any suggestions for the below code?
> Thanks, MC
>
>
> Dir.entries("C:/ScriptDirectory").each do |filename|
> if File.extname(filename) == ".rb" then #read a ruby file
> File.open(filename, 'r') do |f1|
> f1.each_line |line|
> @fileStandard1 << filename if line =~ /setting343234/
> puts "Stardard1" +@fileStandard1
> @fileStandard2 << filename if line =~ /setting343999/
> puts "Standard2" +@fileStandard2
> @fileStandard3 << filename if line =~ /setting343245/
> puts "Standard3" +@fileStandard3
> end
> end
> end
>
> ##this code is a snippet I am going to use the new variables later in
> the program.

There seems to be a bit of redundant code. How about

@file_standards = {
343234 => [],
343999 => [],
343245 => [],
}

Dir["C:/ScriptDirectory/*.rb"].each do |file|
File.foreach file do |line|
num = line[/settings(\d+)/, 1].to_i
std = @file_standards[num] and std << file
end
end

Cheers

robert

--
remember.guy do |as, often| as.you_can - without end

Mmcolli00 Mom

1/27/2009 10:53:00 PM

0

Thanks Robert,

Yes, I didn't want to run the scripts only read through them and
categorize them. This really did the trick. Pretty fancy and efficient
too! :-)

Thanks, MC
--
Posted via http://www.ruby-....