From: fuglyducky Date: 2010-05-25T01:45:07+09:00 Subject: Re: Ruby Newbie...Classes and Objects, oh my! On May 24, 8:57 am, Robert Dober wrote: > On Mon, May 24, 2010 at 4:30 PM, fuglyducky wrote: > > I'm very new to Ruby and I'm trying to create a program that will take > > one text file and dump each line into an array. Then I take a second > > file and dump that into a string. Then I insert the string into the > > array. The code for these pieces work. However, for flexibility I want/ > > need to be able to use OO methods and that is where I seem to hit a > > wall. Not sure what I am supposed to do or how to call it. Below is my > > code, any input you may have would be greatly appreciated!!! > > > ############################################################### > > > class XMLProcessing > >        def initialize(array_file, string_file, output_file) > >                @array_file = array_file > >                @string_file = string_file > >                @output_file = output_file > >        end > > >        def lines_to_array > >                # Dump each line from text file into array > >                File.open(@array_file).each do |line| > >                        my_array << line > > This is a local variable, uninitialized for that matter > try >       @my_array = [] >       File.open... >               @my_array << line >       end > > However, you could also simply do a >      @my_array = File.readlines( @array_file ).map( &:chomp ) > or the more explicit (and in Rubies < 1.9 necessary ) >      @my_array = File.readlines( @array_file ).map{ |line| line.chomp }>                end > >        end > > >        def file_to_string > >                # Create string from text file > >                @my_string_file = File.open(@string_file) > >                my_string = @my_string_file.read > > Same here >              @my_string = ... > > >        end > > >        def string_into_array > >                # Insert string into array > >                my_array.insert((my_array.length - 1), my_string) > > and here too > @my_array>        end > > >        def new_array_to_file > >                # Dump the array to a text file > >                newFile = File.new(@output_file, "w+") > >                my_array.each { |element| newFile.puts element } > > change here too >            @my_array > > >                print 'New file created: ' + (@output_file) > >        end > > end > > > stat_xml = XMLProcessing.new("Stat.Template.xml", "Seg.Template.xml", > > "stat.xml.txt") > > Now just call the methods you want to execute on stat_xml as e.g. > stat_xml.file_to_string > .. > .. > > I do not think your design is ideal, calling all those external method > calls for intermediate computations(1), but for a beginner it is > pretty nicely structured code. > > HTH > R. > > (1) But there might be reasons invisible to YHS. > > > > > ############################################################### > > -- > The best way to predict the future is to invent it. > -- Alan Kay Wow...thanks for the response!!! I'm not a programmer for a developer by any means. I'm a tester that needed a quick (and hopefully not too dirty) way of creating the files I need. The reason I wanted to call all of the submethods was because I need to be able to create a random number of some of the individual files before I dump them into the array. I thought that in the main body of the code I would script it out to call that particular method. This is all pretty new to me...is that bad form?