# version: 5 unless ARGV.length == 2 puts "Usage: differences.rb " exit end def boring?(line) line.split('/').include?('temp') or line.split('/').include?('recycler') end def boring?(str, list) str in list end boring?('a', 'a b c'.split) exit def inventory_from(filename) inventory = File.open(filename) downcased = inventory.collect do |line| line.chomp.downcase end downcased.reject do |line| boring?(line) end end old_inventory = inventory_from(ARGV[0]) new_inventory = inventory_from(ARGV[1]) num_added = (new_inventory - old_inventory).length puts "The following #{num_added} files have been added: " puts new_inventory - old_inventory puts num_deleted = (old_inventory - new_inventory).length puts "The following #{num_deleted} files have been deleted: " puts old_inventory - new_inventory puts num_common = (old_inventory & new_inventory).length puts "A total of #{num_common} common files."