The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
NAME
    Algorithm::Diff::Callback - Use callbacks on computed differences

VERSION
    version 0.100

SYNOPSIS
    Use callbacks in your diff process to get better control over what will
    happen.

        use Algorithm::Diff::Callback 'diff_arrays';

        diff_arrays(
            \@old_family_members,
            \@new_family_members,
            added   => sub { say 'Happy to hear about ', shift },
            deleted => sub { say 'Sorry to hear about ', shift },
        );

    Or using hashes:

        use Algorithm::Diff::Callback 'diff_hashes';

        diff_hashes(
            \%old_details,
            \%new_details,
            added   => sub { say 'Gained ', shift },
            deleted => sub { say 'Lost ',   shift },
            changed => sub {
                my ( $key, $before, $after ) = @_;
                say "$key changed from $before to $after";
            },
        );

DESCRIPTION
    One of the difficulties when using diff modules is that they assume they
    know what you want the information for. Some give you formatted output,
    some give you just the values that changes (but neglect to mention how
    each changed) and some (such as Algorithm::Diff) give you way too much
    information that you now have to skim over and write long complex loops
    for.

    Algorithm::Diff::Callback let's you pick what you're going to diff
    (Arrays or Hashes) and set callbacks for the diff process.

EXPORT
    You'll need to declare to explicitly export these functions.

  diff_arrays
  diff_hashes
        use Algorithm::Diff::Callback qw<diff_arrays diff_hashes>;

SUBROUTINES/METHODS
  diff_arrays(\@old, \@new, %callbacks)
    The first two parameters are array references to compare.

    The rest of the parameters are keys for the type of callback you want
    and the corresponding callback. You can provide multiple callbacks.
    Supported keys are:

    *   added

            diff_arrays(
                \@old, \@new,
                added => sub {
                    my $value = shift;
                    say "$value was added to the array";
                }
            );

    *   deleted

            diff_arrays(
                \@old, \@new,
                deleted => sub {
                    my $value = shift;
                    say "$value was deleted from the array";
                }
            );

  diff_hashes(\%old, \%new, %callbacks)
    The first two parameters are hash references to compare.

    The rest of the parameters are keys for the type of callback you want
    and the corresponding callback. You can provide multiple callbacks.
    Supported keys are:

    *   added

            diff_hashes(
                \%old, \%new,
                added => sub {
                    my ( $key, $value ) = @_;
                    say "$key ($value) was added to the hash";
                }
            );

    *   deleted

            diff_hashes(
                \%old, \%new,
                deleted => sub {
                    my ( $key, $value ) = @_;
                    say "$key ($value) was deleted from the hash";
                }
            );

    *   changed

            diff_hashes(
                \%old, \%new,
                changed => sub {
                    my ( $key, $before, $after ) = @_;
                    say "$key in the hash was changed from $before to $after";
                }
            );

BUGS
    Please report bugs on the Github issues page at
    <http://github.com/xsawyerx/algorithm-diff-callback/issues>.

SUPPORT
    This module sports 100% test coverage, but in case you have more
    issues...

    You can find documentation for this module with the perldoc command.

        perldoc Algorithm::Diff::Callback

    You can also look for information at:

    *   Github issues tracker

        <http://github.com/xsawyerx/algorithm-diff-callback/issues>

    *   RT: CPAN's request tracker

        <http://rt.cpan.org/NoAuth/Bugs.html?Dist=Algorithm-Diff-Callback>

    *   AnnoCPAN: Annotated CPAN documentation

        <http://annocpan.org/dist/Algorithm-Diff-Callback>

    *   CPAN Ratings

        <http://cpanratings.perl.org/d/Algorithm-Diff-Callback>

    *   Search CPAN

        <http://search.cpan.org/dist/Algorithm-Diff-Callback/>

DEPENDENCIES
    Algorithm::Diff

    List::MoreUtils

    Carp

    Exporter

AUTHOR
    Sawyer X <xsawyerx@cpan.org>

COPYRIGHT AND LICENSE
    This software is copyright (c) 2012 by Sawyer X.

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