class Italian::Ruby::Traduttore::Linea
Public Class Methods
new(contenuto, indice, nome_archivio)
click to toggle source
# File lib/italian/ruby/traduttore/linea.rb, line 26 def initialize(contenuto, indice, nome_archivio) @contenuto = contenuto @indice = indice @nome_archivio = nome_archivio trova_posizione_primo_commento trova_posizioni_stringhe end
Public Instance Methods
traduci()
click to toggle source
Traduce la linea in codice Ruby
.
# File lib/italian/ruby/traduttore/linea.rb, line 37 def traduci @pezzi_da_tradurre = [] if @posizione_primo_commento != nil if @stringhe.none? or @posizione_primo_commento < @stringhe[0].posizione_iniziale dividi_usando_posizione_commento else dividi_usando_posizioni_stringhe end else if @stringhe.none? dividi_in_pezzo_unico else dividi_usando_posizioni_stringhe end end @pezzi_da_tradurre.map(&:traduci).join end
Private Instance Methods
dividi_in_pezzo_unico()
click to toggle source
Divide la linea in un pezzo unico, che contiene se stessa.
# File lib/italian/ruby/traduttore/linea.rb, line 98 def dividi_in_pezzo_unico @pezzi_da_tradurre = [ Italian::Ruby::Traduttore::Pezzo.new(@contenuto) ] end
dividi_usando_posizione_commento()
click to toggle source
Divide la linea in pezzi, usando la posizione del commento.
# File lib/italian/ruby/traduttore/linea.rb, line 104 def dividi_usando_posizione_commento if @posizione_primo_commento == 0 @pezzi_da_tradurre = [ Italian::Ruby::Traduttore::Pezzo.new(@contenuto) ] return end @pezzi_da_tradurre = [ Italian::Ruby::Traduttore::Pezzo.new(@contenuto[0..@posizione_primo_commento - 1]), Italian::Ruby::Traduttore::Pezzo.new(@contenuto[@posizione_primo_commento..]) ] end
dividi_usando_posizioni_stringhe()
click to toggle source
Divide la linea in pezzi, usando le posizioni delle stringhe trovate.
# File lib/italian/ruby/traduttore/linea.rb, line 118 def dividi_usando_posizioni_stringhe @pezzi_da_tradurre = [] cursore_contenuto = 0 @stringhe.each do |stringa| unless stringa.posizione_iniziale == cursore_contenuto pezzo_non_stringa = @contenuto[cursore_contenuto..stringa.posizione_iniziale - 1] @pezzi_da_tradurre << Italian::Ruby::Traduttore::Pezzo.new(pezzo_non_stringa) end pezzo_stringa = @contenuto[stringa.posizione_iniziale..stringa.posizione_finale] @pezzi_da_tradurre << Italian::Ruby::Traduttore::Pezzo.new(pezzo_stringa) cursore_contenuto = stringa.posizione_finale + 1 end if cursore_contenuto < @contenuto.length - 1 pezzo_non_stringa = @contenuto[cursore_contenuto..] @pezzi_da_tradurre << Italian::Ruby::Traduttore::Pezzo.new(pezzo_non_stringa) end @pezzi_da_tradurre end
trova_posizione_primo_commento()
click to toggle source
Trova la posizione del primo commento all'interno della linea.
# File lib/italian/ruby/traduttore/linea.rb, line 61 def trova_posizione_primo_commento @posizione_primo_commento = @contenuto.index "#" end
trova_posizioni_stringhe()
click to toggle source
Trova le strighe all'interno della linea. Le stringhe possono iniziare con il doppio apice (“), il singolo apice ('), o il percentuale-graffa (%{).
# File lib/italian/ruby/traduttore/linea.rb, line 68 def trova_posizioni_stringhe @stringhe = [] stringa_trovata = trova_prossima_stringa_partendo_da 0 while stringa_trovata != nil @stringhe << stringa_trovata inizio_nuova_ricerca = stringa_trovata.posizione_finale + 1 stringa_trovata = trova_prossima_stringa_partendo_da inizio_nuova_ricerca end end
trova_prossima_stringa_partendo_da(posizione_partenza)
click to toggle source
Trova la prossima stringa sul contenuto, partendo dalla posizione indicata.
# File lib/italian/ruby/traduttore/linea.rb, line 83 def trova_prossima_stringa_partendo_da(posizione_partenza) tipo_stringa_corrente = nil posizione_inizio_stringa = @contenuto.index /['"]|%\{/, posizione_partenza return nil if posizione_inizio_stringa.nil? return nil if @posizione_primo_commento != nil && @posizione_primo_commento < posizione_inizio_stringa stringa_da_chiudere = Italian::Ruby::Traduttore::Stringa.new @contenuto, posizione_inizio_stringa stringa_da_chiudere.ricerca_chiusura stringa_da_chiudere rescue Italian::Ruby::Errori::StringaNonTerminata => errore Italian::Ruby::Errori.recupera errore, @nome_archivio, @indice + 1 end