Skip to content

Instantly share code, notes, and snippets.

@RobertoBarros
Created January 28, 2025 17:11
Show Gist options
  • Save RobertoBarros/027ee5eb61b498e15c60cbb7c35fc2a1 to your computer and use it in GitHub Desktop.
Save RobertoBarros/027ee5eb61b498e15c60cbb7c35fc2a1 to your computer and use it in GitHub Desktop.
reboot_batch_1925_gifts_list_part_3
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