2009-08-20 10 views
8

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

1

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.

3

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.

+0

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

7

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.

7

ich Nokogiri bin mit ungültigen HTML zu beheben:

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

Ich glaube nicht, dass dies das HTML aufräumt. – aceofspades

+0

Ist es zuverlässig? Ich meine, korrigiert es Syntaxfehler wie beispielsweise verschachtelte Listen in Absätzen? –

+0

Nokogiri stellt nur sicher, dass der HTML-Code wohlgeformt ist, aber es wird keine Syntaxfehler beheben. Zum Beispiel wird "

x
y" in "
x
y
" "fixiert" – Daniel

Verwandte Themen