2009-08-20 21 views
8

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

1

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.

3

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.

+0

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

7

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.

7

Sto usando Nokogiri per risolvere HTML non validi:

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

Non penso che questo riordini l'HTML. – aceofspades

+0

È affidabile? Intendo, corregge errori di sintassi come, ad esempio, elenchi annidati nei paragrafi? –

+0

Nokogiri assicura che l'html sia ben formato, ma non risolverà gli errori di sintassi. Ad esempio, '

x
y' è" corretto "in'
x
y
' – Daniel

Problemi correlati