Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/postmodern/nokogiri-diff
Calculate the differences between two XML/HTML documents.
https://github.com/postmodern/nokogiri-diff
html html-diff ruby xml xml-diff
Last synced: 6 days ago
JSON representation
Calculate the differences between two XML/HTML documents.
- Host: GitHub
- URL: https://github.com/postmodern/nokogiri-diff
- Owner: postmodern
- License: mit
- Created: 2010-11-15T04:41:29.000Z (almost 14 years ago)
- Default Branch: main
- Last Pushed: 2024-01-25T07:01:24.000Z (10 months ago)
- Last Synced: 2024-10-12T19:45:17.812Z (26 days ago)
- Topics: html, html-diff, ruby, xml, xml-diff
- Language: Ruby
- Homepage:
- Size: 52.7 KB
- Stars: 131
- Watchers: 8
- Forks: 12
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: ChangeLog.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# nokogiri-diff
[![CI](https://github.com/postmodern/nokogiri-diff/actions/workflows/ruby.yml/badge.svg)](https://github.com/postmodern/nokogiri-diff/actions/workflows/ruby.yml)
* [Source](https://github.com/postmodern/nokogiri-diff)
* [Issues](https://github.com/postmodern/nokogiri-diff/issues)
* [Documentation](http://rubydoc.info/gems/nokogiri-diff/frames)## Description
nokogiri-diff adds the ability to calculate the differences (added or
removed nodes) between two XML/HTML documents.## Features
* Performs a breadth-first comparison between children nodes.
* Compares XML/HTML Elements, Attributes, Text nodes and DTD nodes.
* Allows calculating differences between documents, or just enumerating the
added or removed nodes.## Examples
Enumerate over the differences between two HTML documents:
```ruby
require 'nokogiri/diff'doc1 = Nokogiri::HTML('
')one
two
doc2 = Nokogiri::HTML('')one
three
doc1.diff(doc2) do |change,node|
puts "#{change} #{node.to_html}".ljust(30) + node.parent.path
end#
/
#one
two
#one
/div
# - two /div
# + /div
# +three
/div
# + id="1" /div/p[1]
# one /div/p
```Only find the added nodes:
```ruby
doc1.diff(doc2, :added => true) do |change,node|
puts node.to_html.ljust(30) + node.parent.path
end# /div
#three
/div
# id="1" /div/p[1]
```Only find the removed nodes:
```ruby
doc1.diff(doc2, :removed => true) do |change,node|
puts node.to_html.ljust(30) + node.parent.path
end# two /div
```## Requirements
* [ruby](http://www.ruby-lang.org/) >= 2.0.0
* [tdiff](http://github.com/postmodern/tdiff) ~> 0.4
* [nokogiri](http://nokogiri.rubyforge.org/) ~> 1.5## Install
```shell
$ gem install nokogiri-diff
```## License
See {file:LICENSE.txt} for details.