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
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.
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.
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.
Używam Nokogiri naprawić nieprawidłowy HTML:
Nokogiri::HTML::DocumentFragment.parse(html).to_html
Nie sądzę, żeby to uporządkowało HTML. – aceofspades
Czy jest niezawodny? Znaczy, to naprawić błędy składniowe, takie jak, na przykład, zagnieżdżonych list w punktach? –
Nokogiri tylko zapewnia html jest dobrze wykształcona, ale to nie będzie naprawić błędy składniowe. Na przykład, '
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