HTML приборка / уборка в Ruby 1.9 - PullRequest
8 голосов
/ 21 августа 2009

В настоящее время я использую привязки RubyTidy Ruby для HTML-кода, чтобы убедиться, что полученный HTML-код правильно сформирован. В настоящее время эта библиотека - единственное, что удерживает меня от получения приложения Rails на Ruby 1.9. Существуют ли альтернативные библиотеки, которые приведут в порядок фрагменты HTML на Ruby 1.9?

Ответы [ 4 ]

7 голосов
/ 29 ноября 2010

Я использую Nokogiri , чтобы исправить недействительный HTML:

  Nokogiri::HTML::DocumentFragment.parse(html).to_html
7 голосов
/ 21 апреля 2010

http://github.com/libc/tidy_ffi/blob/master/README.rdoc работает с ruby ​​1.9 (последняя версия)

Если вы работаете с окнами, вам нужно установить library_path, например,

    require 'tidy_ffi'
    TidyFFI.library_path = 'lib\\tidy\\bin\\tidy.dll'
    tidy = TidyFFI::Tidy.new('test')
    puts tidy.clean

(он использует ту же самую DLL, что и tidy). Приведенные выше ссылки дают вам еще один пример использования.

3 голосов
/ 16 апреля 2010

Вот хороший пример того, как сделать ваш HTML лучше, используя tidy:

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

Для получения более подробной информации, обратитесь к справочной странице .

1 голос
/ 11 марта 2010

В настоящее время эта библиотека является единственной вещь, удерживающая меня от получения Приложение Rails на Ruby 1.9.

Осторожно, у привязок Ruby Tidy есть некоторые неприятные утечки памяти. В настоящее время он непригоден для длительных процессов. (для записи я использую http://github.com/ak47/tidy)

Мне просто нужно было удалить его из рабочего приложения Rails 2.3, потому что оно протекало со скоростью 1 МБ / мин.

...