From: Robert Dober Date: 2010-05-25T00:57:44+09:00 Subject: Re: Ruby Newbie...Classes and Objects, oh my! 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