Pergunta

Depois de passar algumas horas com o rubi Debugger eu finalmente aprendi que eu preciso para limpar algumas páginas HTML malformados antes que eu possa alimentar aqueles que Hpricot. A melhor solução que eu encontrei até agora é o Tidy Rubi interface de .

Tidy funciona muito bem na linha de comando e também as obras de interface Ruby. No entanto, isso requer dl / importação, que deixa de carga em JRuby:

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

É esta biblioteca disponível para JRuby? A pesquisa na web revelou que não estava disponível no ano passado .

Como alternativa, alguém pode sugerir outras maneiras de limpar malformado HTML no JRuby?

Atualização

Seguindo a sugestão Markus' Eu agora uso Tidy via popen vez de libtidy. Eu postei o código que canaliza os dados de documentos através arrumado para referência futura. Esperemos que este é robusto e portátil.

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
Foi útil?

Solução

Você poderia usá-lo na linha de comando de dentro JRuby com %x{...} ou backticks. Você também pode querer considerar popen (e coisas tubos através dele).

Não elegante, talvez, mas é mais provável para você ir com o mínimo de confusão de tentar mexer com bibliotecas sem suporte.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top