Skip to content

Instantly share code, notes, and snippets.

@RobertoBarros
Created June 6, 2026 20:05
Show Gist options
  • Select an option

  • Save RobertoBarros/b32f771f84903823fbfac2a6c87ba96e to your computer and use it in GitHub Desktop.

Select an option

Save RobertoBarros/b32f771f84903823fbfac2a6c87ba96e to your computer and use it in GitHub Desktop.
batch_2302_christmas_list_parte_3
require "csv"
FILEPATH = "gifts.csv"
def add(gifts_list)
#Perguntar qual item o usuário quer adicionar
puts "Qual item você gostaria de adicionar?"
#Ler a resposta do usuário
name = gets.chomp
#Armazenar a resposta
gifts_list << { gift: name, marked: false }
save_list(gifts_list)
end
def list(gifts_list)
#Listar os itens que estao na lista de presentes do usuario
# item é um hash no formato { gift: "Meia", marked: false }
gifts_list.each_with_index do |item, index|
check = item[:marked] ? "[X]" : "[ ]"
puts "#{index + 1} - #{check} #{item[:gift]}"
end
end
def remove(gifts_list)
# Qual o número do item deseja remover?
puts "Qual o número do item deseja remover?"
# Armazenar a resposta
index = gets.chomp.to_i - 1
if index >= 0 && index <= gifts_list.size - 1
# Remover da lista pelo index
gifts_list.delete_at(index)
save_list(gifts_list)
else
puts "Número inválido"
end
end
def mark(gifts_list)
puts "Qual item deseja marcar?"
index = gets.chomp.to_i - 1
if index >= 0 && index <= gifts_list.size - 1
# marcar da lista pelo index
gifts_list[index][:marked] = true
save_list(gifts_list)
else
puts "Número inválido"
end
end
def save_list(gifts_list)
CSV.open(FILEPATH, "wb") do |csv|
gifts_list.each do |item|
csv << [item[:gift], item[:marked]]
end
end
end
def load_list(gifts_list)
CSV.foreach(FILEPATH) do |row|
gift = row[0]
marked = row[1] == "true"
gifts_list << {gift: gift, marked: marked}
end
end
# O programa começa a partir daqui:
#Criar a variável da lista de presentes
gifts_list = []
load_list(gifts_list) if File.exist?(FILEPATH)
#Boas-vindas ao usuário
puts "Bem-vind@ à sua lista de presentes de natal!"
#Criar o loop do menu
loop do
#Apresentar o menu
puts "Qual é a sua escolha? [Listar | Adicionar | Excluir | Marcar | Fechar]"
#Pegar a resposta do usuário
answer = gets.chomp.downcase
#Procurar qual caso/alternativa é
case answer
#Mostrar a lista
when "listar" then list(gifts_list)
#Adicionar itens a lista
when "adicionar" then add(gifts_list)
#Excluir itens da lista
when "excluir" then remove(gifts_list)
# Marcar um item da Lista
when "marcar" then mark(gifts_list)
#Sair da lista
when "fechar"
break
#Caso o usuário escolha uma alternativa não válida
else
puts "Escolha uma alternativa válida!"
end
#Limpar a tela após cada "escolha"
#print `clear`
#Finalizar o loop
end
#Tchau!
puts "Obrigad@! Volte sempre!"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment