Class: Italian::Ruby::Traduttore
- Defined in:
- lib/italian/ruby/traduttore.rb,
lib/italian/ruby/traduttore/linea.rb,
lib/italian/ruby/traduttore/pezzo.rb,
lib/italian/ruby/traduttore/stringa.rb
Defined Under Namespace
Classes: Linea, Pezzo, Stringa
Constant Summary collapse
- STAMPA_DETTAGLI_TRADUZIONE =
Bandierina per stampare o meno i dettagli della traduzione, mentre questa viene eseguita.
false
Class Method Summary collapse
-
.esegui(percorso_archivio_tradotto) ⇒ Object
Punto d’ingresso del traduttore.
-
.traduci(archivio = nil, sorgente = nil, &blocco) ⇒ Object
Punto d’ingresso del traduttore.
-
.traduci_archivio(archivio) ⇒ Object
Traduce un archivio sorgente da ItalianRuby a Ruby.
-
.traduci_blocco(&blocco) ⇒ Object
Traduce un blocco di codice da ItalianRuby a Ruby.
-
.traduci_sorgente(sorgente) ⇒ Object
Traduce un pezzo di sorgente da ItalianRuby a Ruby.
Class Method Details
.esegui(percorso_archivio_tradotto) ⇒ Object
Punto d’ingresso del traduttore. Questo metodo esegue del codice Ruby presente in un archivio. Il codice può essere stato precedentemente tradotto dal metodo traduci del traduttore ItalianRuby.
28 29 30 31 32 33 34 |
# File 'lib/italian/ruby/traduttore.rb', line 28 def self.esegui(percorso_archivio_tradotto) load percorso_archivio_tradotto rescue SyntaxError => errore Italian::Ruby::Errori.recupera errore, percorso_archivio_tradotto rescue StandardError => errore Italian::Ruby::Errori.recupera errore, percorso_archivio_tradotto end |
.traduci(archivio = nil, sorgente = nil, &blocco) ⇒ Object
Punto d’ingresso del traduttore. Questo metodo accetta un archivio come argomento principale, oppure un blocco di codice.
39 40 41 42 43 |
# File 'lib/italian/ruby/traduttore.rb', line 39 def self.traduci(archivio = nil, sorgente = nil, &blocco) return traduci_archivio archivio if archivio != nil return traduci_sorgente sorgente if sorgente != nil return traduci_blocco &blocco if block_given? end |
.traduci_archivio(archivio) ⇒ Object
Traduce un archivio sorgente da ItalianRuby a Ruby. Salva la versione tradotta dell’archivio originale nel percorso delle traduzioni.
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/italian/ruby/traduttore.rb', line 51 def self.traduci_archivio(archivio) puts "Traduzione archivio: #{archivio}" if STAMPA_DETTAGLI_TRADUZIONE linee_sorgente = File.readlines archivio linee_tradotte = linee_sorgente.map.with_index do |linea, numero_linea| linea_da_tradurre = Italian::Ruby::Traduttore::Linea.new linea, numero_linea, archivio linea_tradotta = linea_da_tradurre.traduci puts "\t[#{numero_linea}] <- #{linea}" if STAMPA_DETTAGLI_TRADUZIONE puts "\t[#{numero_linea}] -> #{linea_tradotta}" if STAMPA_DETTAGLI_TRADUZIONE linea_tradotta.chomp end puts "Traduzione terminata." if STAMPA_DETTAGLI_TRADUZIONE puts if STAMPA_DETTAGLI_TRADUZIONE linee_tradotte = linee_tradotte.join("\n").freeze archivio_tradotto = Italian::Ruby.percorso_archivio_tradotto archivio cartella_archivio_tradotto = File.dirname archivio_tradotto FileUtils.mkdir_p cartella_archivio_tradotto unless Dir.exist? cartella_archivio_tradotto File.write archivio_tradotto, linee_tradotte archivio_tradotto rescue SyntaxError => errore Italian::Ruby::Errori.recupera errore, archivio end |
.traduci_blocco(&blocco) ⇒ Object
Traduce un blocco di codice da ItalianRuby a Ruby.
104 105 106 107 108 109 110 |
# File 'lib/italian/ruby/traduttore.rb', line 104 def self.traduci_blocco(&blocco) blocco.call rescue SyntaxError => errore Italian::Ruby::Errori.recupera errore rescue StandardError => errore Italian::Ruby::Errori.recupera errore end |
.traduci_sorgente(sorgente) ⇒ Object
Traduce un pezzo di sorgente da ItalianRuby a Ruby.
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/italian/ruby/traduttore.rb', line 81 def self.traduci_sorgente(sorgente) puts "Traduzione sorgente." if STAMPA_DETTAGLI_TRADUZIONE linee_sorgente = sorgente.split "\n" linee_tradotte = linee_sorgente.map.with_index do |linea, numero_linea| linea_da_tradurre = Italian::Ruby::Traduttore::Linea.new linea, numero_linea, nil linea_tradotta = linea_da_tradurre.traduci puts "\t[#{numero_linea}] <- #{linea}" if STAMPA_DETTAGLI_TRADUZIONE puts "\t[#{numero_linea}] -> #{linea_tradotta}" if STAMPA_DETTAGLI_TRADUZIONE linea_tradotta.chomp end puts "Traduzione terminata." if STAMPA_DETTAGLI_TRADUZIONE puts if STAMPA_DETTAGLI_TRADUZIONE sorgente_tradotto = linee_tradotte.join("\n").freeze sorgente_tradotto end |