Created
January 28, 2025 17:11
-
-
Save RobertoBarros/027ee5eb61b498e15c60cbb7c35fc2a1 to your computer and use it in GitHub Desktop.
reboot_batch_1925_gifts_list_part_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 'json' | |
# Função para salvar os presentes em um arquivo JSON | |
def save_gifts(gifts, filename = 'gifts.json') | |
File.write(filename, JSON.pretty_generate(gifts)) | |
end | |
# Função para carregar os presentes de um arquivo JSON | |
def load_gifts(filename = 'gifts.json') | |
return {} unless File.exist?(filename) | |
JSON.parse(File.read(filename)) | |
rescue JSON::ParserError | |
{} | |
end | |
# Função para exibir a lista de presentes com status | |
def display_list(gifts) | |
if gifts.empty? | |
puts "Sua lista de presentes está vazia." | |
else | |
puts "Aqui está sua lista de presentes:" | |
gifts.each_with_index do |(nome, status), index| | |
status_display = status.downcase == 'comprado' ? '✅ Comprado' : '❌ Não Comprado' | |
puts "#{index + 1} - #{nome} - #{status_display}" | |
end | |
end | |
end | |
# Função para adicionar um novo presente | |
def add(gifts) | |
puts "Qual presente deseja adicionar na lista?" | |
nome = gets.chomp.strip | |
if nome.empty? | |
puts "O nome do presente não pode estar vazio." | |
elsif gifts.key?(nome) | |
puts "Este presente já está na lista." | |
else | |
gifts[nome] = 'Não Comprado' | |
puts "\"#{nome}\" foi adicionado à lista com status 'Não Comprado'." | |
end | |
end | |
# Função para deletar um presente | |
def delete(gifts) | |
display_list(gifts) | |
return if gifts.empty? | |
puts "Qual número do presente deseja deletar?" | |
input = gets.chomp | |
if input.match?(/^\d+$/) | |
index = input.to_i - 1 | |
nome = gifts.keys[index] | |
if nome | |
gifts.delete(nome) | |
puts "\"#{nome}\" foi removido da lista." | |
else | |
puts "Opção inválida." | |
end | |
else | |
puts "Por favor, insira um número válido." | |
end | |
end | |
# Função para atualizar o status de um presente | |
def update_status(gifts) | |
display_list(gifts) | |
return if gifts.empty? | |
puts "Qual número do presente deseja atualizar o status?" | |
input = gets.chomp | |
if input.match?(/^\d+$/) | |
index = input.to_i - 1 | |
nome = gifts.keys[index] | |
if nome | |
current_status = gifts[nome].downcase | |
novo_status = current_status == 'comprado' ? 'Não Comprado' : 'Comprado' | |
gifts[nome] = novo_status | |
puts "O status de \"#{nome}\" foi atualizado para '#{novo_status}'." | |
else | |
puts "Opção inválida." | |
end | |
else | |
puts "Por favor, insira um número válido." | |
end | |
end | |
# Carregar a lista de presentes existente | |
gifts = load_gifts | |
# Mensagem de Boas-Vindas | |
puts "Seja Bem-vindo à sua lista de presentes!" | |
# LOOP PRINCIPAL | |
loop do | |
# Informar e perguntar qual opção | |
puts "\nQual ação deseja realizar? [listar|adicionar|deletar|atualizar|sair]" | |
print ">> " | |
action = gets.chomp.downcase | |
# Executar a opção selecionada | |
case action | |
when "listar" | |
display_list(gifts) | |
when "adicionar" | |
add(gifts) | |
save_gifts(gifts) | |
when "deletar" | |
delete(gifts) | |
save_gifts(gifts) | |
when "atualizar" | |
update_status(gifts) | |
save_gifts(gifts) | |
when "sair", "quit" | |
save_gifts(gifts) | |
break | |
else | |
puts "Opção inválida. Por favor, escolha [listar|adicionar|deletar|atualizar|sair]." | |
end | |
end | |
# Mensagem de Despedida | |
puts "Adeus! Sua lista foi salva." |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment