Kent Fredric > Git-PurePerl-Walker > Git::PurePerl::Walker

Download:
Git-PurePerl-Walker-0.002000.tar.gz

Dependencies

Annotate this POD

Website

View/Report Bugs
Module Version: 0.002000   Source  

NAME ^

Git::PurePerl::Walker - Walk over a sequence of commits in a Git::PurePerl repo

VERSION ^

version 0.002000

SYNOPSIS ^

        use Git::PurePerl::Walker;
        use Git::PurePerl::Walker::Method::FirstParent;

        my $repo = Git::PurePerl->new( ... );

        my $walker = Git::PurePerl::Walker->new(
                repo => $repo,
                method => Git::PurePerl::Walker::Method::FirstParent->new(
                        start => $repo->ref_sha1('refs/heads/master'),
                ),
                on_commit => sub {
                        my ( $commit ) = @_;
                        print $commit->sha1;
                },
        );

        $walker->step_all;

CONSTRUCTOR ARGUMENTS ^

repo

Mandatory: An instance of Git::PurePerl representing the repository to work with.

method

Mandatory: either a Str describing a Class Name Suffix, or an Object that does Git::PurePerl::Walker::Role::Method.

If its a Str, the Str will be expanded as follows:

        ->new(
                ...
                method => 'Foo',
                ...
        );

        $className = 'Git::PurePerl::Walker::Method::Foo'

And the resulting class will be loaded, and instantiated for you. ( Assuming of course, you don't need to pass any fancy args ).

If you need fancy args, or a class outside the Git::PurePerl::Walker::Method:: namespace, constructing the object will have to be your responsibility.

        ->new(
                ...
                method => Foo::Class->new(),
                ...
        )

on_commit

Mandatory: either a Str that can be expanded in a way similar to that by method, a CodeRef, or an object that does Git::PurePerl::Walker::Role::OnCommit.

If passed a Str it will be expanded like so:

        ->new(
                ...
                on_commit => $str,
                ...
        );

        $class = 'Git::PurePerl::Walker::OnCommit::' . $str;

And the resulting class loaded and instantiated.

If passed a CodeRef, Git::PurePerl::Walker::OnCommit::CallBack will be loaded and your CodeRef will be passed as an argument.

        ->new(
                ...
                on_commit => sub {
                        my ( $commit ) = @_;

                },
                ...
        );

If you need anything fancier, or requiring an unusual namespace, you'll want to construct the object yourself.

        ->new(
                ...
                on_commit => Foo::Package->new()
                ...
        );

METHODS ^

reset

        $walker->reset();

Reset the walk routine back to the state it was before you walked.

step

Increments one step forward in the git history, and dispatches the object to the OnCommit handlers.

If there are more possible steps to take, it will return a true value.

        while ( $walker->step ) {
                /* Code to execute if walker has more items */
        }

This code is almost identical to:

        while(1) {
                $walker->on_commit->handle( $walker->method->current );

                last if not $walker->method->has_next;

                $walker->method->next;

                /*  Code to execute if walker has more items */
        }

step_all

        my $steps = $walker->step_all;

Mostly a convenience method to iterate until it can iterate no more, but without you needing to wrap it in a while() block.

Returns the number of steps executed.

ATTRIBUTES ^

repo

method

on_commit

ATTRIBUTE GENERATED METHODS ^

repo

        # Getter
        my $repo = $walker->repo();

method

        # Getter
        my $method_object = $walker->method();

on_commit

        # Getter
        my $on_commit_object = $walker->on_commit();

PRIVATE ATTRIBUTES ^

_method

_on_commit

PRIVATE METHODS ^

_build_repo

_build_method

_build_on_commit

PRIVATE ATTRIBUTE GENERATED METHODS ^

_method

        # Getter
        my $methodish = $walker->_method();

_on_commit

        # Getter
        my $on_commitish => $walker->_on_commit();

AUTHOR ^

Kent Fredric <kentnl@cpan.org>

COPYRIGHT AND LICENSE ^

This software is copyright (c) 2012 by Kent Fredric <kentnl@cpan.org>.

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

syntax highlighting: