21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
# File 'lib/italian/ruby/errori.rb', line 21
def self.recupera(errore, archivio = nil, numero_linea = nil)
archivio, numero_linea = ottieni_archivio_e_numero_linea_per_sintassi errore if errore.class.name == "SyntaxError"
archivio, numero_linea = ottieni_archivio_e_numero_linea_da errore if archivio.nil?
linee_sorgente = File.readlines archivio
numero_linea_errata = numero_linea if numero_linea != nil
numero_linea_errata = ottieni_numero_linea_da errore, archivio if numero_linea_errata.nil?
linea_errata = linee_sorgente[numero_linea_errata - 1].strip
linea_errata_precedente = linee_sorgente[numero_linea_errata - 2].strip if numero_linea_errata >= 2
linea_errata_successiva = linee_sorgente[numero_linea_errata].strip if numero_linea_errata < linee_sorgente.length
nome_classe_errore = TRADUZIONI_NOMI_CLASSI_ERRORI.fetch errore.class.name, nil
nome_classe_errore = errore.class.name if nome_classe_errore.nil?
puts "-------".rosso
puts "Si è verificato un errore: #{nome_classe_errore}.".rosso
puts
puts "\t [#{numero_linea_errata - 1}] #{linea_errata_precedente}".rosso if linea_errata_precedente != nil
puts "\t> [#{numero_linea_errata}] #{linea_errata}".rosso
puts "\t [#{numero_linea_errata + 1}] #{linea_errata_successiva}".rosso if linea_errata_successiva != nil
puts
puts errore.message.rosso
puts errore.backtrace.map(&:rosso)
puts "-------".rosso
exit
end
|