Skip to content

Instantly share code, notes, and snippets.

@RobertoBarros
Created April 30, 2024 15:00
Show Gist options
  • Save RobertoBarros/0dbb87e6dd70b1179bcfba4d626bb40e to your computer and use it in GitHub Desktop.
Save RobertoBarros/0dbb87e6dd70b1179bcfba4d626bb40e to your computer and use it in GitHub Desktop.
batch_1680_reboot_giftslist_part1
require 'colored'
require 'csv'
FILEPATH = 'gifts.csv'
def list(gifts)
gifts.each_with_index do |gift, index|
puts "#{index + 1} - #{gift}"
end
end
def add(gifts)
# Perguntar qual presente adicionar
puts "What gift would you like to add?"
gift = gets.chomp
# Adicionar o presente na lista
gifts << gift
# salvar os gifts no csv
save_csv(gifts)
# Mostrar a lista atualizada
list(gifts)
end
def delete(gifts)
# Mostrar os gifts já cadastrados
list(gifts)
# Perguntar qual o número do gift
puts "What gift number would you like to delete?"
index = gets.chomp.to_i - 1
# Apagar da lista pelo index se existir
if index >= 0 && index < gifts.size
gifts.delete_at(index)
save_csv(gifts)
else
puts "Invalid gift number".red
end
end
def load_csv
gifts = []
CSV.foreach(FILEPATH) do |row|
gifts << row[0]
end
gifts
end
def save_csv(gifts)
CSV.open(FILEPATH, "wb") do |csv|
gifts.each do |gift|
csv << [gift]
end
end
end
gifts_list = []
gifts_list = load_csv if File.exist?('gifts.csv')
# Mensagem de boas vindas
puts "Welcome to your Christmas Shopping list"
# LOOP
loop do
# Perguntar qual a ação [list|add|delete|quit]
puts '-' * 30
puts "which action do you want to be execute [list|add|delete|quit]".bold.green
input = gets.chomp.downcase
system "clear"
# Executar a ação
case input
when "list" then list(gifts_list)
when "add" then add(gifts_list)
when "delete" then delete(gifts_list)
when "quit" then break
else
# Se quit sair do loop
puts "invalid input"
end
# FIM DO LOOP
end
# Mensagem de término
puts "Thanks and goodbye"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment