Ich verwende derzeit die RubyTidy Ruby Bindings für HTML sauber, um sicherzustellen, dass HTML, die ich erhalte, wohlgeformt ist. Zur Zeit hält mich diese Bibliothek nur davon ab, eine Rails-Anwendung auf Ruby 1.9 zu bekommen. Gibt es alternative Bibliotheken, die HTML-Teile auf Ruby 1.9 aufräumen?HTML Sauberkeit/Reinigung in Ruby 1.9
Antwort
Derzeit wird diese Bibliothek ist die einzige was mich zurück aus dem Halten 1.9 eine Rails-Anwendung auf Rubin bekommen.
Vorsicht, die Ruby Tidy-Bindungen haben einige unangenehme Speicherlecks. Es ist derzeit in lang laufenden Prozessen unbrauchbar. (für die Aufzeichnung verwende ich http://github.com/ak47/tidy)
Ich musste es nur von einer Produktion Rails 2.3 Anwendung entfernen, weil es etwa 1MB/min leckte.
Hier ist ein schönes Beispiel dafür, wie Ihre HTML besser aussehen mit ordentlich zu machen:
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
Weitere ordentlich Optionen, die man page überprüfen.
http://github.com/libc/tidy_ffi/blob/master/README.rdoc Arbeiten mit Ruby 1.9 (neueste Version)
Wenn Sie unter Windows arbeiten, müssen Sie die library_path zB
require 'tidy_ffi'
TidyFFI.library_path = 'lib\\tidy\\bin\\tidy.dll'
tidy = TidyFFI::Tidy.new('test')
puts tidy.clean
(Er verwendet die gleiche DLL wie ordentlich) Die obigen Links setzen gibt Ihnen mehr Beispiele für die Nutzung.
ich Nokogiri bin mit ungültigen HTML zu beheben:
Nokogiri::HTML::DocumentFragment.parse(html).to_html
Ich glaube nicht, dass dies das HTML aufräumt. – aceofspades
Ist es zuverlässig? Ich meine, korrigiert es Syntaxfehler wie beispielsweise verschachtelte Listen in Absätzen? –
Nokogiri stellt nur sicher, dass der HTML-Code wohlgeformt ist, aber es wird keine Syntaxfehler beheben. Zum Beispiel wird "
Ab jetzt scheint es, die ordentlich Juwel mit Ruby 1.9 nicht kompatibel ist. Es scheint eine Gabelung bei https://github.com/ShogunPanda/tidy zu geben, aber ich habe es nicht untersucht. – aceofspades