문제

루비 디버거로 몇 시간을 보낸 후 마침내 HPRICOT에 공급하기 전에 오르플 링 된 HTML 페이지를 정리해야한다는 것을 알게되었습니다. 내가 지금까지 찾은 최고의 솔루션은 다음과 같습니다 깔끔한 루비 인터페이스.

깔끔한 명령 줄에서 잘 작동하고 루비 인터페이스도 작동합니다. 그러나 필요합니다 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에서 사용할 수 있습니까? 웹 검색에서 밝혀졌습니다 작년에 사용할 수 없었습니다.

또는 누군가 Jruby에서 기형 HTML을 정리할 수있는 다른 방법을 제안 할 수 있습니까?

업데이트

Markus의 제안에 따라 나는 이제 libtidy 대신 Popen을 통해 Tidy를 사용합니다. 향후 참조를 위해 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
도움이 되었습니까?

해결책

내부의 명령 줄에서 사용할 수 있습니다. Jruby ~와 함께 %x{...} 또는 백틱. 당신은 또한 고려하고 싶을 수도 있습니다 popen (그리고 그것을 통해 물건을 파이프하십시오).

아마도 우아하지는 않지만 지원되지 않은 라이브러리를 엉망으로 만들기보다는 최소한의 번거 로움을 느낄 가능성이 높습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top