From: Jim Wang Date: 2011-09-22T12:45:32+09:00 Subject: Ruby code style / Regular Expression to remove blank lines / test case Hi Group, Forgive me to put 3 seemingly irrelevant words in the subject line. But they are the purposes of this post. This is basically my first Ruby class, which is to remove all empty lines and blank times from a txt file. a simple test case is also included. I tested the code and it works fine. But I did not have much idea about if the code style is good, or if there is some potential issues. Can someone pls do a quick review and kindly provide some feedback? I want to know - 1) Is there any potential issue in the code? did I miss some boundary check? 2) Is the code style good in general? e.g, name convention, indent, etc. 3) what can i do if i want to make it more professional? e.g., better choice of functions, error-handling, object-oriented, test-driven, etc. I am open to any feedback - as far as they help make better Ruby programing. ================================================================== # a copy is included as below require 'test/unit' # this class is to remove all the empty and blank lines. # # Usage: ruby Blanker.rb input.txt output.txt class BlankLineRemover def initialize() puts "BlankLineRemover initialized." end def generate(input_filename, output_filename) reader = File.read(input_filename) f = File.new(output_filename, "w") f.puts remove(reader) f.close end def remove(stringToremove) regEx = /^[\s]*$\n/ stringToReturn = stringToremove.gsub(regEx, '') stringToReturn.strip! if stringToReturn.length >= 1 return stringToReturn else return "" end end end class TestCleaner < Test::Unit::TestCase def test_basic sInput1 = "line1\n\t\nline4\n\tline5\n" sExpectedOutput1 = "line1\nline4\n\tline5" sInput2="" sExpectedOutput2 = "" sInput3="\n\t\t\n" sExpectedOutput3 = "" testCleaner = BlankLineRemover.new assert_equal(sExpectedOutput1, testCleaner.remove(sInput1)) assert_equal(sExpectedOutput2, testCleaner.remove(sInput2)) assert_equal(sExpectedOutput3, testCleaner.remove(sInput3)) end end unless ARGV.length == 2 puts "Usage: ruby Blanker.rb input.txt output.txt\n" exit end simpleRemover = BlankLineRemover.new simpleRemover.generate(ARGV[0],ARGV[1]) ================================================================== Attachments: http://www.ruby-forum.com/attachment/6616/Blanker.rb -- Posted via http://www.ruby-forum.com/.