# Lorax 0.1.0 Released

**URL:** <https://www.ruby-forum.com/t/lorax-0-1-0-released/184895>\
**Category:** Ruby\
**Created:** [March 10, 2010, 4:39am UTC](https://www.ruby-forum.com/t/lorax-0-1-0-released/184895 "2010-03-10T04:39:08Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![miked](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/ed655f/32.png) [@miked](https://www.ruby-forum.com/u/miked)\
**Post date:** [March 10, 2010, 4:39am UTC](https://www.ruby-forum.com/t/lorax-0-1-0-released/184895/1 "2010-03-10T04:39:08Z")

</div>

lorax version 0.1.0 has been released!

- [http://github.com/flavorjones/lorax](http://github.com/flavorjones/lorax)

The Lorax is a diff and patch library for XML/HTML documents, based on  
Nokogiri.

It can tell you whether two XML/HTML documents are identical, or if  
they’re not, tell you what’s different. In trivial cases, it can even  
apply the patch.

It’s based loosely on Gregory Cobena’s master’s thesis paper, which  
generates deltas in less than O(n \* log n) time, accepting some  
tradeoffs in the size of the delta set. You can find his paper at  
[Gregory Cobena's PhD Thesis](http://gregory.cobena.free.fr/www/Publications/thesis.html).

This is an early alpha release, so please expect bugs. See the failing  
tests for more information.

“I am the Lorax, I speak for the trees.”

Changes:

## 0.1.0 (2010-03-09)

- Happy Birthday!
- Diffs and generates patches, and for trivial cases applies patches  
correctly.

---

<div class="post-metadata">

**Author:** ![miked](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/ed655f/32.png) [@miked](https://www.ruby-forum.com/u/miked)\
**Post date:** [March 10, 2010, 4:54am UTC](https://www.ruby-forum.com/t/lorax-0-1-0-released/184895/2 "2010-03-10T04:54:21Z")

</div>

On Tue, Mar 9, 2010 at 8:38 PM, Mike D.  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)wrote:

> “I am the Lorax, I speak for the trees.”

That’s awesome, great name

---

<div class="post-metadata">

**Author:** ![miked](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/ed655f/32.png) [@miked](https://www.ruby-forum.com/u/miked)\
**Post date:** [March 10, 2010, 1:57pm UTC](https://www.ruby-forum.com/t/lorax-0-1-0-released/184895/3 "2010-03-10T13:57:30Z")

</div>

On Wed, Mar 10, 2010 at 6:09 AM, Intransition [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> > It can tell you whether two XML/HTML documents are identical, or if  
> > they’re not, tell you what’s different. In trivial cases, it can even  
> > apply the patch.
> 
> Why not in every case?

Because there are still boogs! 😃

One example: the XPath pointing at the elements involved in the deltas  
doesn’t take into consideration the fact that other sibling elements may  
have been inserted or removed as part of an earlier delta. Another  
example:  
there are edge cases where Lorax can get confused by many identical  
sibling  
nodes interleaved with changing elements (think whitespace in an HTML  
doc).

I’d like to note that the library uses dependency injection to allow a  
modular choice of algorithm. So people with better CS chops than me can  
take  
a whack at it by building their own delta-set generator for their  
favorite  
algorithm, while still taking using the fast subtree signatures.

If you’re curious and interested, I’d love to have more eyes and hands  
on  
these issues. Both master and whitespace-fix branches have failing tests  
which can tell you where to dive in. The TODO has information on class  
responsibilities, algorithmic notes, missing integration tests and a  
list of  
needed features (like an rspec matcher).

---

<div class="post-metadata">

**Author:** ![miked](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/ed655f/32.png) [@miked](https://www.ruby-forum.com/u/miked)\
**Post date:** [March 10, 2010, 12:10pm UTC](https://www.ruby-forum.com/t/lorax-0-1-0-released/184895/4 "2010-03-10T12:10:22Z")

</div>

On Mar 9, 10:38 pm, Mike D. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> lorax version 0.1.0 has been released!
> 
> - [http://github.com/flavorjones/lorax](http://github.com/flavorjones/lorax)
> 
> The Lorax is a diff and patch library for XML/HTML documents, based on  
> Nokogiri.
> 
> It can tell you whether two XML/HTML documents are identical, or if  
> they’re not, tell you what’s different. In trivial cases, it can even  
> apply the patch.

Why not in every case?
