Domanda

Dopo aver trascorso alcune ore con Ruby Debugger, ho finalmente appreso che ho bisogno di ripulire alcune pagine HTML non valide prima di poterle inviare a Hpricot. La migliore soluzione che ho trovato finora è la interfaccia Tidy Ruby .

Tidy funziona alla grande dalla riga di comando e anche l'interfaccia di Ruby funziona. Tuttavia, richiede dl / import , che non viene caricato in JRuby:

$ jirb
irb(main):001:0> require 'rubygems'
=> true
irb(main):002:0> require 'tidy'
LoadError: no such file to load -- dl/import

Questa libreria è disponibile per JRuby? Una ricerca web ha rivelato che non era disponibile l'anno scorso .

In alternativa, qualcuno può suggerire altri modi per ripulire HTML non valido in JRuby?

Aggiornamento

Seguendo il suggerimento di Markus ora uso Tidy tramite popen anziché libtidy. Ho pubblicato il codice che reindirizza i dati del documento in ordine per riferimento futuro. Speriamo che sia robusto e portatile.

def clean(data)
    cleaned = nil
    tidy = IO.popen('tidy -f "log/tidy.log" --force-output yes -wrap 0 -utf8', 'w+')
    begin
        tidy.write(data)
        tidy.close_write
        cleaned = tidy.read
        tidy.close_read
    rescue Errno::EPIPE
        $stderr.print "Running 'tidy' failed: " + $!
        tidy.close
    end        
    return cleaned if cleaned and cleaned != ""
    return data
end
È stato utile?

Soluzione

Puoi usarlo dalla riga di comando da JRuby con % x {.. .} o backtick. Puoi anche prendere in considerazione popen (e reindirizzare le cose).

Forse non è elegante, ma è più probabile che ti faccia andare con il minimo fastidio che cercare di pasticciare con librerie non supportate.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top