Вопрос

Проведя несколько часов с Ruby Debugger, я, наконец, узнал, что мне нужно очистить некоторые искаженные HTML-страницы, прежде чем я смогу отправить их в Hpricot.Лучшее решение, которое я нашел на данный момент, - это Аккуратный интерфейс Ruby.

Аккуратный отлично работает из командной строки, а также работает интерфейс Ruby.Однако для этого требуется dl/импорт, который не загружается в JRuby:

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

Доступна ли эта библиотека для JRuby?Поиск в Интернете показал, что в прошлом году его не было в продаже.

В качестве альтернативы, может ли кто-нибудь предложить другие способы очистки искаженного HTML в JRuby?

Обновить

Следуя предложению Маркуса, я теперь использую Tidy через popen вместо libtidy.Я опубликовал код, который передает данные документа через tidy для дальнейшего использования.Надеюсь, это надежное и портативное устройство.

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
Это было полезно?

Решение

Вы могли бы использовать его из командной строки изнутри Руби с %x{...} или отступления.Возможно, вы также захотите рассмотреть popen (и пропускать через это все).

Возможно, это не элегантно, но, скорее всего, поможет вам начать работу с минимальными хлопотами, чем пытаться возиться с неподдерживаемыми библиотеками.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top