Created
June 6, 2026 20:05
-
-
Save RobertoBarros/b32f771f84903823fbfac2a6c87ba96e to your computer and use it in GitHub Desktop.
batch_2302_christmas_list_parte_3
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 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