S
Simon Harrison
Hi all. I've written a little script to search a csv file for films. It
works but has problems. I'd appreciate any pointers with the following:
1. I've used instance variables without a class, to make them visible
amongst methods. Is this acceptable for a short script like this?
2. As it is, it will only match exactly. For example, I have The Mummy
and The Mummy Returns. If I search for 'mummy' program reports "film not
found." I know I need to use Regexp's, not sure how to implement it here
though.
3. Any other comments gratefully received.
#################
# search_films.rb
#################
require 'csv'
def load_xvid_file(path_to_csv)
@names = []
csv_contents = CSV.read(path_to_csv)
csv_contents.shift
csv_contents.each do |row|
@names << row[0]
end
@names.each { |f| f.downcase! }
end
def search_for_film
print "Enter name of film to search for: "
film = gets.chomp.downcase
puts
if @names.include?(film)
puts "#{film} found!"
else
puts "#{film} not found "
end
prompt
end
def prompt
print "Search again? (y or n) "
answer = gets.chomp.downcase
case answer
when /y/
search_for_film
when /n/
puts "Goodbye."
exit
else
prompt
end
end
load_xvid_file("/home/simon/Documents/CSV/XviD.csv")
search_for_film
works but has problems. I'd appreciate any pointers with the following:
1. I've used instance variables without a class, to make them visible
amongst methods. Is this acceptable for a short script like this?
2. As it is, it will only match exactly. For example, I have The Mummy
and The Mummy Returns. If I search for 'mummy' program reports "film not
found." I know I need to use Regexp's, not sure how to implement it here
though.
3. Any other comments gratefully received.
#################
# search_films.rb
#################
require 'csv'
def load_xvid_file(path_to_csv)
@names = []
csv_contents = CSV.read(path_to_csv)
csv_contents.shift
csv_contents.each do |row|
@names << row[0]
end
@names.each { |f| f.downcase! }
end
def search_for_film
print "Enter name of film to search for: "
film = gets.chomp.downcase
puts
if @names.include?(film)
puts "#{film} found!"
else
puts "#{film} not found "
end
prompt
end
def prompt
print "Search again? (y or n) "
answer = gets.chomp.downcase
case answer
when /y/
search_for_film
when /n/
puts "Goodbye."
exit
else
prompt
end
end
load_xvid_file("/home/simon/Documents/CSV/XviD.csv")
search_for_film