Module: Kernel
- Defined in:
- lib/italian/ruby/metodi/kernel.rb,
lib/italian/ruby/alias/kernel.rb
Overview
Aggiunge i metodi :richiedi e :richiedi_relativo, che permettono di caricare un file sorgente scritto in Italian Ruby e usarlo allo stesso modo di come funzionano :require e :require_relative di Ruby standard.
È possibile utilizzare :richiedi e :richiedi_relativo sia in file sorgenti scritti in Italian Ruby che in file sorgenti scritti in Ruby standard.
Instance Method Summary collapse
-
#richiedi(archivio) ⇒ Object
Richiede un archivio da caricare in memoria.
-
#richiedi_relativo(percorso_archivio) ⇒ Object
Richiede un archivio cercandolo come percorso relativo.
-
#richiedi_tutti(percorso_cartella) ⇒ Object
Richiede tutti gli archivi di una cartella.
-
#rimanda(costante, archivio) ⇒ Object
Rimanda la costante alla definizione in archivio.
-
#rimanda_relativo(costante, percorso_archivio) ⇒ Object
Come il rimanda, ma usando un percorso relativo.
Instance Method Details
#richiedi(archivio) ⇒ Object
Richiede un archivio da caricare in memoria. Se l’archivio è trovato nei percorsi di caricamento presenti in memoria, e scritto in ItalianRuby, allora viene tradotto e caricato. Altrimenti viene cercato e caricato come un archivio Ruby standard.
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/italian/ruby/metodi/kernel.rb', line 18 def richiedi(archivio) archivi_in_memoria = $:.map do |cartella| Dir["#{cartella}/**/#{archivio}.ir"] end archivio_in_italiano_da_richiedere = archivi_in_memoria.flatten.compact.first return traduci_e_richiedi archivio_in_italiano_da_richiedere if archivio_in_italiano_da_richiedere != nil # Non è stato trovato nessun archivio in italiano corrispondente al nome # passato. Viene ora tentato il caricamento di un file Ruby originale con # lo stesso nome. require archivio rescue LoadError => errore sorgenti_chiamanti = caller_locations.reject do |locazione| locazione.absolute_path.include? "lib/italian/ruby/metodi/kernel" end sorgente_chiamante = sorgenti_chiamanti.first.absolute_path numero_linea_errata = sorgenti_chiamanti.first.lineno Italian::Ruby::Errori.recupera errore, sorgente_chiamante, numero_linea_errata end |
#richiedi_relativo(percorso_archivio) ⇒ Object
Richiede un archivio cercandolo come percorso relativo.
40 41 42 43 44 45 46 47 |
# File 'lib/italian/ruby/metodi/kernel.rb', line 40 def richiedi_relativo(percorso_archivio) sorgente_chiamante, linea_chiamante = ottieni_sorgente_e_linea_chiamante caller_locations archivio_da_richiedere = archivio_relativo sorgente_chiamante, percorso_archivio raise LoadError, "cannot load such file -- #{percorso_archivio}" if archivio_da_richiedere.nil? traduci_e_richiedi archivio_da_richiedere rescue LoadError => errore Italian::Ruby::Errori.recupera errore, sorgente_chiamante, linea_chiamante end |
#richiedi_tutti(percorso_cartella) ⇒ Object
Richiede tutti gli archivi di una cartella.
51 52 53 54 55 56 57 58 59 60 |
# File 'lib/italian/ruby/metodi/kernel.rb', line 51 def richiedi_tutti(percorso_cartella) sorgente_chiamante, linea_chiamante = ottieni_sorgente_e_linea_chiamante caller_locations cartella_da_richiedere = cartella_relativa sorgente_chiamante, percorso_cartella raise LoadError, "cannot load such directory -- #{percorso_cartella}" if cartella_da_richiedere.nil? Dir["#{cartella_da_richiedere}/**/*.ir"].sort_by { |file| file.count("/") }.each do |archivio| traduci_e_richiedi archivio end rescue LoadError => errore Italian::Ruby::Errori.recupera errore, sorgente_chiamante, linea_chiamante end |
#rimanda(costante, archivio) ⇒ Object
Rimanda la costante alla definizione in archivio. La prima volta che viene incontrata la definizione della costante nel codice, allora l’archivio verrà richiesto.
66 67 68 69 70 71 72 73 74 |
# File 'lib/italian/ruby/metodi/kernel.rb', line 66 def rimanda(costante, archivio) archivi_in_memoria = $:.map do |cartella| Dir["#{cartella}/**/#{archivio}.ir"] end archivio_da_tradurre = archivi_in_memoria.flatten.compact.first archivio_da_richiedere = Italian::Ruby.percorso_archivio_tradotto archivio_da_tradurre traduci archivio_da_tradurre Object.autoload costante, archivio_da_richiedere end |
#rimanda_relativo(costante, percorso_archivio) ⇒ Object
Come il rimanda, ma usando un percorso relativo.
78 79 80 81 82 83 84 |
# File 'lib/italian/ruby/metodi/kernel.rb', line 78 def rimanda_relativo(costante, percorso_archivio) sorgente_chiamante, linea_chiamante = ottieni_sorgente_e_linea_chiamante caller_locations archivio_da_tradurre = archivio_relativo sorgente_chiamante, percorso_archivio archivio_da_richiedere = Italian::Ruby.percorso_archivio_tradotto archivio_da_tradurre traduci archivio_da_tradurre Object.autoload costante, archivio_da_richiedere end |