2009-08-20 9 views
8

Obecnie używam powiązań RubyTidy Ruby dla HTML Tidy, aby upewnić się, że otrzymałeś HTML jest dobrze uformowane. Obecnie ta biblioteka jest jedyną rzeczą, która powstrzymuje mnie przed otrzymaniem aplikacji Railsowej na Ruby 1.9. Czy istnieją inne alternatywne biblioteki, które będą porządkować fragmenty kodu HTML w Ruby 1.9?HTML Tidy/czyszczenie w Ruby 1.9

Odpowiedz

1

Obecnie ta biblioteka jest jedyną rzeczą mnie powstrzymuje przed dostaniem aplikacji Rails Ruby 1.9.

Uważaj, wiązania Ruby Tidy mają kilka nieprzyjemnych wycieków pamięci. Obecnie nie nadaje się do użytku w długich procesach. (dla rekordu używam http://github.com/ak47/tidy)

Po prostu musiałem usunąć go z aplikacji Rails 2.3 produkcji, ponieważ był wyciek około 1 MB/min.

3

Oto dobry przykład jak zrobić html wyglądają lepiej używając schludny:

require 'tidy' 
Tidy.path = '/opt/local/lib/libtidy.dylib' # or where ever your tidylib resides 

nice_html = "" 
Tidy.open(:show_warnings=>true) do |tidy| 
    tidy.options.output_xhtml = true 
    tidy.options.wrap = 0 
    tidy.options.indent = 'auto' 
    tidy.options.indent_attributes = false 
    tidy.options.indent_spaces = 4 
    tidy.options.vertical_space = false 
    tidy.options.char_encoding = 'utf8' 
    nice_html = tidy.clean(my_nasty_html_string) 
end 

# remove excess newlines 
nice_html = nice_html.strip.gsub(/\n+/, "\n") 
puts nice_html 

Więcej schludnych opcji, sprawdź man page.

+0

W chwili obecnej wydaje się, że uporządkowane gem jest niezgodna z Ruby 1.9. Wydaje się, że widelec na https://github.com/ShogunPanda/tidy ale nie badali go. – aceofspades

7

http://github.com/libc/tidy_ffi/blob/master/README.rdoc prace z Ruby 1.9 (najnowsza wersja)

Jeśli pracujesz na Windows, trzeba ustawić library_path np

require 'tidy_ffi' 
    TidyFFI.library_path = 'lib\\tidy\\bin\\tidy.dll' 
    tidy = TidyFFI::Tidy.new('test') 
    puts tidy.clean 

(używa tego samego dll jako schludny) powyższe linki daje więcej przykładów użycia.

7

Używam Nokogiri naprawić nieprawidłowy HTML:

 
    Nokogiri::HTML::DocumentFragment.parse(html).to_html 
+1

Nie sądzę, żeby to uporządkowało HTML. – aceofspades

+0

Czy jest niezawodny? Znaczy, to naprawić błędy składniowe, takie jak, na przykład, zagnieżdżonych list w punktach? –

+0

Nokogiri tylko zapewnia html jest dobrze wykształcona, ale to nie będzie naprawić błędy składniowe. Na przykład, '

x
y' "utrwala się" w '
x
Y
' – Daniel

Powiązane problemy