class Italian::Ruby::Traduttore::Stringa
Attributes
posizione_finale[RW]
posizione_iniziale[RW]
Public Class Methods
new(contenuto, posizione_iniziale)
click to toggle source
# File lib/italian/ruby/traduttore/stringa.rb, line 18 def initialize(contenuto, posizione_iniziale) @contenuto = contenuto @posizione_iniziale = posizione_iniziale determina_tipo end
Public Instance Methods
ricerca_chiusura()
click to toggle source
Ricerca la posizione del carattere di chiusura della stringa.
# File lib/italian/ruby/traduttore/stringa.rb, line 27 def ricerca_chiusura case @tipo when :doppio_apice @posizione_finale = @contenuto.index /"/, @posizione_iniziale + 1 when :singolo_apice @posizione_finale = @contenuto.index /'/, @posizione_iniziale + 1 when :percentuale_graffa @posizione_finale = @contenuto.index /\}/, posizione_ultima_interpolazione end raise Italian::Ruby::Errori::StringaNonTerminata, "la stringa iniziata alla posizione #{@posizione_iniziale} non è terminata" if @posizione_finale.nil? end
Private Instance Methods
determina_tipo()
click to toggle source
Determina il tipo della stringa.
# File lib/italian/ruby/traduttore/stringa.rb, line 46 def determina_tipo carattere_stringa = @contenuto[@posizione_iniziale] case carattere_stringa when "\"" then @tipo = :doppio_apice when "'" then @tipo = :singolo_apice when "%" then @tipo = :percentuale_graffa end end
posizione_ultima_interpolazione()
click to toggle source
Determina la posizione dell'ultima interpolazione, se presente.
# File lib/italian/ruby/traduttore/stringa.rb, line 58 def posizione_ultima_interpolazione posizione_finale = @posizione_iniziale + 2 inizio_prossima_interpolazione = @contenuto.index /#\{/, posizione_finale while inizio_prossima_interpolazione != nil fine_prossima_interpolazione = @contenuto.index /\}/, inizio_prossima_interpolazione raise "l'interpolazione iniziata alla posizione #{inizio_prossima_interpolazione} non è terminata" if fine_prossima_interpolazione.nil? posizione_finale = fine_prossima_interpolazione + 1 inizio_prossima_interpolazione = @contenuto.index /#\{/, fine_prossima_interpolazione end posizione_finale end