Text::WordDiff::ANSIColor - ANSI colored formatting for Text::WordDiff


Text-WordDiff documentation Contained in the Text-WordDiff distribution.

Index


Code Index:

Name

Top

Text::WordDiff::ANSIColor - ANSI colored formatting for Text::WordDiff

Synopsis

Top

    use Text::WordDiff;

    my $diff = word_diff 'file1.txt', 'file2.txt';
    my $diff = word_diff \$string1,   \$string2,   { STYLE => 'ANSIColor' };
    my $diff = word_diff \*FH1,       \*FH2;       \%options;
    my $diff = word_diff \&reader1,   \&reader2;
    my $diff = word_diff \@records1,  \@records2;

    # May also mix input types:
    my $diff = word_diff \@records1,  'file_B.txt';

Description

Top

This class subclasses Text::WordDiff::Base to provide a formatting class for Text::WordDiff that uses ANSI-standard terminal escape sequences to highlight deleted and inserted text. This formatting class is the default class used by Text::WordDiff; see its documentation for details on its interface. This class should never be used directly.

Text::WordDiff::ANSIColor formats word diffs for viewing in an ANSI-standard terminal session. The diff content is highlighted as follows:

Deletes

Deleted words will display in bold-faced red. The ANSI standard for strikethrough is also used, but since it is not supported by most terminals, likely will not show up.

Inserts

Inserted words will display in bold-faced, underlined green.

All other content is simply returned.

See Also

Top

Text::WordDiff
Text::WordDiff::HTML

Support

Top

This module is stored in an open repository at the following address:

https://svn.kineticode.com/Text-WordDiff/trunk/

Patches against Text::WordDiff are welcome. Please send bug reports to <bug-text-worddiff@rt.cpan.org>.

Author

Top

David Wheeler <david@kineticode.com>

Copyright and License

Top


Text-WordDiff documentation Contained in the Text-WordDiff distribution.

package Text::WordDiff::ANSIColor;

use strict;
use Term::ANSIColor qw(:constants);
use vars qw($VERSION @ISA);

# Term::ANSIColor doesn't support STRIKETHROUGH, so we'll do it ourselves.
use constant STRIKETHROUGH => "\e[9m";

$VERSION = '0.07';
@ISA = qw(Text::WordDiff::Base);

sub same_items {
    shift;
    return join '', @_;
}

sub delete_items {
    shift;
    return join '', BOLD, RED, STRIKETHROUGH, @_, RESET;
}

sub insert_items {
    shift;
    return join '', BOLD, GREEN, UNDERLINE, @_, RESET;
}

1;
__END__