Pretty Diff

A tiny library for generating pretty HTML listings for unified Diff format. Heavily used in Beanstalk ( application.


gem install pretty_diff


A quick example will tell it all:

udiff ="awesome.diff")
pretty =

Wrap it with HTML, add some styles and you will get something like this:


The library is really easy to read and change. All HTML is generated by a set of classes called generators, it’s very easy to customize the output to suit your needs.

By default PrettyDiff will generate HTML that can be easily colored with the CSS that you can find in the example above.

PrettyDiff will generate 2 columns of line numbers, as it’s usually done for diffs. These columns are copy/paste safe, means that line numbers won’t be copied when you copy diff contents.

Tabs will be automatically converted to double spaces.

HTML tags will be automatically escaped from the input string.

To Do

The test suit can be somewhat improved.


The library was extracted from Beanstalk during the awesome Wildbit Open Source Fridays.

Read more about Open Source Fridays here:


  1. mrsimo

Copyright © 2010 Ilya Sabanin, Wildbit; see LICENSE for details.