Attualmente sto usando i binding RubyTidy Ruby per l'HTML ordinato per assicurarmi che l'HTML che ricevo sia ben formato. Attualmente questa libreria è l'unica cosa che mi impedisce di ottenere un'applicazione Rails su Ruby 1.9. Ci sono delle librerie alternative là fuori che riordino blocchi di HTML su Ruby 1.9?Ordine/pulizia HTML in Ruby 1.9
risposta
Attualmente questa libreria è l'unica cosa che mi trattiene da ottenere un'applicazione Rails su Ruby 1.9.
Attenti, le associazioni Ruby Tidy hanno alcune brutte perdite di memoria. Attualmente è inutilizzabile nei processi di lunga durata. (per la cronaca, sto usando http://github.com/ak47/tidy)
Ho dovuto semplicemente rimuoverlo da un'applicazione di Rails 2.3 di produzione perché perdeva circa 1MB/min.
Ecco un bel esempio di come rendere il vostro html aspetto migliore con ordine:
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
Per le opzioni più ordinato, controlla la man page.
http://github.com/libc/tidy_ffi/blob/master/README.rdoc opere con Ruby 1.9 (ultima versione)
Se si sta lavorando su Windows, è necessario impostare il Library_Path esempio
require 'tidy_ffi'
TidyFFI.library_path = 'lib\\tidy\\bin\\tidy.dll'
tidy = TidyFFI::Tidy.new('test')
puts tidy.clean
(Esso utilizza la stessa DLL come ordinato) I collegamenti di cui sopra ti dà più esempi di utilizzo.
Sto usando Nokogiri per risolvere HTML non validi:
Nokogiri::HTML::DocumentFragment.parse(html).to_html
Non penso che questo riordini l'HTML. – aceofspades
È affidabile? Intendo, corregge errori di sintassi come, ad esempio, elenchi annidati nei paragrafi? –
Nokogiri assicura che l'html sia ben formato, ma non risolverà gli errori di sintassi. Ad esempio, '
A partire da ora sembra che il gioiello in ordine non è compatibile con Ruby 1.9. Sembra che ci sia un fork su https://github.com/ShogunPanda/tidy ma non l'ho studiato. – aceofspades