NAME

String::ShowHTMLDiff - Perl extension to help visualize (in a browser) differences between strings.

SYNOPSIS

use String::ShowDiff qw/html_colored_diff/;
print html_colored_diff("abcehjlmnp", "bcdefjklmrst");

# or a bit more detailed:
my %options = ('u' => 'reset',
               '+' => 'on_green',
      		 '-' => 'on_red');
print html_colored_diff($oldstring, $newstring, \%options);

# or let's see only the changed words 
print html_colored_diff($old, $new, {context => qr/\w*/, gap => ' '});

DESCRIPTION

This module is a slight spin on the String::ShowASCIIDiff module. It marks up a diff between two strings using HTML. YOU supply the style sheet and make it look cool. A sample style sheet is included. Basically, you just have to define the style for the <SPAN> tags that are in the output. The classes are

 unchanged
 diff_minus
 diff_plus

See a CSS tutorial if you still don't know what's going on.

This module is a wrapper around the diff algorithm from the module Algorithm::Diff.

Compared to the many other Diff modules, the output is neither in diff-style nor are the recognised differences on line or word boundaries, they are at character level.

FUNCTIONS

html_colored_diff $string, $changed_string, $options_hash;

This method compares $string with $changed_string and returns an HTML encoded string.

print html_colored_diff($s1, $s2, {context => qr/.*/, gap => ''}); # default
# will print the complete combined string with the marked removings and
# additions

print html_colored_diff($s1, $s2, {context => qr/.{0,3}/, gap => ' ... '});
# will print all changings with a context of the left and right 3 chars
# and will join each of them with a space, 3 dots and a space
# Note that it is important to use qr/.{0,3}/ instead of qr/.../ to also
# show only a context of 0,1 or 2 chars at the beginning or end of the
# strings

print html_colored_diff($s1, $s2, {context => qr/\w*/, gap => ' '})
# will print all changed words and seperates them with a blank

EXPORT

None by default.

SEE ALSO

Algorithm::Diff, String::ShowASCIIDiff, Text::Diff, Text::ParagraphDiff, Test::Differences

ORIGINAL AUTHOR WHO DID ALL THE WORK

Janek Schleicher, <bigj@kamelfreund.de>

GUY WHO ADDED THE HTML CRAP

Jim Garvin <jg.perl@thegarvin.com>

COPYRIGHT AND LICENSE

Copyright 2003 by Jim Garvin

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.