The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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.