Created
January 28, 2025 18:05
-
-
Save RobertoBarros/fea0baf36d087a8abc4850562f38aa25 to your computer and use it in GitHub Desktop.
reboot_batch_1925_gifts_list_part_4
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require "csv" | |
FILEPATH = "gifts.csv" | |
def list(gifts) | |
puts "Aqui está sua lista:" | |
# gift é um hash do tipo: {name: "Meia", bought: true} | |
gifts.each_with_index do |gift, index| | |
bought = gift[:bought] ? "[X]" : "[ ]" | |
puts "#{index + 1} - #{bought} - #{gift[:name]}" | |
end | |
end | |
def add(gifts) | |
# Perguntar qual o presente para adicionar na lista | |
puts "Qual presente deseja add na lista?" | |
name = gets.chomp | |
# Adicionar na lista de gifts | |
gifts << {name: name, bought: false} | |
# Salva os novos presentes no arquivo CSV | |
save_csv(gifts) | |
end | |
def delete(gifts) | |
# Mostrar os presentes | |
list(gifts) | |
# Perguntar qual o número do presente para excluir | |
puts "Qual Numero do presente deseja deletar?" | |
index = gets.chomp.to_i - 1 | |
# Verificar se o index é válido | |
if index >= 0 && index < gifts.size | |
# Remover de gifts pelo index | |
gifts.delete_at(index) | |
# Salva os novos presentes no arquivo CSV | |
save_csv(gifts) | |
else | |
puts "Opção Inválida" | |
end | |
end | |
def mark(gifts) | |
# Listar os presentes | |
list(gifts) | |
# Perguntar qual o número do presente para excluir | |
puts "Qual Numero do presente deseja marcar?" | |
index = gets.chomp.to_i - 1 | |
# Verificar se o index é válido | |
if index >= 0 && index < gifts.size | |
# Recuperar o gift pelo index | |
gift = gifts[index] # É o hash do tipo {name: "Meia", bought: false} | |
gift[:bought] = true | |
# Salva os novos presentes no arquivo CSV | |
save_csv(gifts) | |
else | |
puts "Opção Inválida" | |
end | |
end | |
# Salva o array gifts em um arquivo CSV | |
def save_csv(gifts) | |
CSV.open(FILEPATH, "wb") do |csv| | |
gifts.each do |gift| | |
csv << [gift[:name], gift[:bought]] | |
end | |
end | |
end | |
# Retorna um array de strings carregados do CSV | |
def load_csv(gifts) | |
CSV.foreach(FILEPATH) do |row| | |
name = row[0] | |
bought = row[1] == "true" | |
gifts << {name: name, bought: bought} | |
end | |
end | |
# =============================================== | |
# o programa começa a partir daqui | |
# =============================================== | |
gifts = [] | |
# Carrega o CSV somente se o arquivo existir | |
load_csv(gifts) if File.exist?(FILEPATH) | |
# Mensagem de Boas Vindas | |
puts "Seja Bem vindo a sua lista" | |
# LOOP | |
loop do | |
# Informar e perguntar qual opção | |
puts "Which action [list|add|delete|mark|quit]?" | |
action = gets.chomp.downcase | |
#Executar a opção selecionada | |
case action | |
when "list" | |
list(gifts) | |
when "add" | |
add(gifts) | |
when "delete" | |
delete(gifts) | |
when "mark" | |
mark(gifts) | |
when "quit" | |
# Se for `quit` sai do loop | |
break | |
else | |
puts "Opção inválida" | |
end | |
# FIM DO LOOP | |
end | |
# Mensagem de Goodbye | |
puts "Goodbye" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment