Frage

einige Stunden mit der Ruby-Debugger Nachdem er ich endlich gelernt, dass ich einige ungültige HTML-Seiten bereinigen müssen, bevor ich diejenigen Hpricot ernähren kann. Die beste Lösung, die ich bisher gefunden ist die Tidy Ruby-Schnittstelle .

Tidy von der Kommandozeile funktioniert gut und auch die Ruby-Schnittstelle funktioniert. Es erfordert jedoch dl / Import , die in JRuby nicht geladen werden kann:

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

Ist diese Bibliothek für JRuby? Eine Web-Suche ergab, dass nicht verfügbar letztes Jahr war.

Alternativ kann jemand andere Möglichkeiten vorschlagen ungültige HTML in JRuby aufzuräumen?

Update

Im Anschluss an Markus' Vorschlag jetzt ich über popen Tidy anstelle von libtidy. Ich stellte den Code, die Rohre die Dokumentdaten durch ordentlich für die Zukunft. Hoffentlich ist dies robust und tragbar.

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
War es hilfreich?

Lösung

Sie können es von der Kommandozeile aus JRuby mit %x{...} oder Backticks. Vielleicht möchten Sie auch popen (und Rohr Dinge durch sie).

betrachten

Nicht elegant vielleicht, aber eher Sie gehen mit minimalem Aufwand zu bekommen, als mit nicht unterstützten Bibliotheken zu verwirren versucht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top