#--- # Excerpted from "Seven Languages in Seven Weeks", # published by The Pragmatic Bookshelf. # Copyrights apply to this code. It may not be used to create training material, # courses, books, articles, and the like. Contact us if you are in doubt. # We make no guarantees that this code is fit for any purpose. # Visit http://www.pragmaticprogrammer.com/titles/btlang for more book information. #--- module ActsAsCsv def read puts self.class file = File.new(self.class.to_s.downcase + '.txt') @headers = file.gets.chomp.split(', ') file.each do |row| @result << row.chomp.split(', ') end end def headers @headers end def csv_contents @result end def initialize @result = [] read end end class RubyCsv include ActsAsCsv end m = RubyCsv.new puts m.headers.inspect puts m.csv_contents.inspect