Module: Italian::Ruby::Errori

Defined in:
lib/italian/ruby/errori.rb

Defined Under Namespace

Classes: StringaNonTerminata

Constant Summary collapse

TRADUZIONI_NOMI_CLASSI_ERRORI =

Nomi classi errori tradotti.

Hash[
  "SyntaxError"   => "ErroreSintassi",
  "LoadError"     => "ErroreCaricamento"
].freeze

Class Method Summary collapse

Class Method Details

.recupera(errore, archivio = nil, numero_linea = nil) ⇒ Object



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