module Italian::Ruby::Errori
Constants
- TRADUZIONI_NOMI_CLASSI_ERRORI
Nomi classi errori tradotti.
Public Class Methods
recupera(errore, archivio = nil, numero_linea = nil)
click to toggle source
# 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
Private Class Methods
ottieni_archivio_e_numero_linea_da(errore)
click to toggle source
Ottiene l'archivio e il numero della linea errata dalla traccia dell'errore.
# File lib/italian/ruby/errori.rb, line 61 def self.ottieni_archivio_e_numero_linea_da(errore) traccia = errore.backtrace[0] traccia = errore.backtrace[1] if errore.message.start_with? "wrong number of arguments" archivio_e_numero_linea = traccia.partition(":in").first archivio, numero_linea = archivio_e_numero_linea.split(":") numero_linea = numero_linea.to_i [ archivio, numero_linea ] end
ottieni_archivio_e_numero_linea_per_sintassi(errore)
click to toggle source
Ottiene l'archivio e il numero della linea errata dal messaggio di errore. Utilizzato per gli errori di sintassi.
# File lib/italian/ruby/errori.rb, line 52 def self.ottieni_archivio_e_numero_linea_per_sintassi(errore) archivio_e_numero_linea = errore.message.partition(": ").first archivio, numero_linea = archivio_e_numero_linea.split(":") numero_linea = numero_linea.to_i [ archivio, numero_linea ] end
ottieni_numero_linea_da(errore, archivio)
click to toggle source
Ottiene il numero della linea errata dal messaggio d'errore.
# File lib/italian/ruby/errori.rb, line 73 def self.ottieni_numero_linea_da(errore, archivio) traccia_errore = errore.backtrace.find do |traccia| traccia.include? archivio end traccia_errore.partition(":").last.partition(":").first.to_i rescue nil end