Есть ли рубиновый камень, который различается между документами HTML? - PullRequest
2 голосов
/ 01 февраля 2012

Выполнение различий двух разных HTML-документов оказывается совершенно другой проблемой, чем простое различие простого текста. Например, если я делаю простой LCS diff между:

Google</p>

и

Google</a></p>

результат сравнения НЕ:

</a>

но

/a></

Я пробовал большинство гемов, которые утверждают, что это html diff, но все они, похоже, просто реализуют текстовый LCS diff. Есть ли драгоценный камень, который делает diff, принимая во внимание HTML-теги?

Ответы [ 2 ]

0 голосов
/ 11 марта 2015

Попробуйте Samy Diff или rubygems html-diff

0 голосов
/ 05 октября 2013

После долгих поисков драгоценного камня, чтобы сделать это для меня, я обнаружил, что могу просто сделать сравнение строк между двумя проанализированными документами Нокогири:

def should_match_html(html_text1, html_text2)
  dom1 = Nokogiri::HTML(html_text1)
  dom2 = Nokogiri::HTML(html_text2)
  dom1.to_s.should == dom2.to_s
end

Затем вы можете просто добавить это в вашу спецификацию:

should_match_html expected_html, actual_html

Самое приятное то, что встроенный инструмент сравнения rspec автоматически предоставит вам построчный результат сравнения несовпадающих строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...