read a ruby script like you would read a text file

Discussion in 'Ruby' started by Mmcolli00 Mom, Jan 27, 2009.

  1. 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-forum.com/.
    Mmcolli00 Mom, Jan 27, 2009
    #1
    1. Advertising

  2. 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
    Robert Klemme, Jan 27, 2009
    #2
    1. Advertising

  3. 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-forum.com/.
    Mmcolli00 Mom, Jan 27, 2009
    #3
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Alexander
    Replies:
    620
    Views:
    8,049
    Seebs
    Nov 9, 2010
  2. Alexander
    Replies:
    68
    Views:
    1,508
  3. Alexander
    Replies:
    60
    Views:
    1,404
    Thomas G. Marshall
    Nov 4, 2010
  4. Replies:
    4
    Views:
    76
    Joel VanderWerf
    Sep 29, 2005
  5. Aston J.
    Replies:
    13
    Views:
    514
    Justin Collins
    Mar 16, 2011
Loading...

Share This Page