PrettyDiff is a highly customizable library for creating fully featured HTML listings out of unified diff format strings. Include copy/paste-safe line numbers and built-in syntax highlighting.
Switch branches/tags
Nothing to show
Pull request Compare This branch is 82 commits behind isabanin:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
test
.document
.gitignore
LICENSE
README.rdoc
Rakefile
VERSION
pretty_diff.gemspec

README.rdoc

Pretty Diff

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

Installation

gem install pretty_diff

Example

A quick example will tell it all:

udiff = File.read("awesome.diff")
pretty = PrettyDiff::Diff.new(udiff)
pretty.to_html

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

ilya.sabanin.ru/projects/pretty_diff_example.html

Features

The library is really easy to read and change. All HTML is concentrated in a single place – HtmlGenerator; so 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.

History

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

Read more about Open Source Fridays here:

wildbit.com/blog/2010/01/15/open-source-fridays-at-wildbit/

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