SYNOPSIS

    my $it = DBIx::DR::Iterator->new($arrayref);

    printf "Rows count: %d\n", $it->count;

    while(my $row == $it->next) {
        print "Row: %s\n", $row->field;
    }

    my $row = $it->get(15); # element 15



    my $it = DBIx::DR::Iterator->new($hashref);

    printf "Rows count: %d\n", $it->count;

    while(my $row == $it->next) {
        print "Row: %s\n", $row->field;
    }

    my $row = $it->get('abc'); # element with key name eq 'abc'

DESCRIPTION

The package constructs iterator from \s-1HASHREF\s0 or \s-1ARRAYREF\s0 value.

Methods

new

Constructor.

my $i = DBIx::DR::Iterator->new($arrayset [, OPTIONS ]);

Where \s-1OPTIONS\s0 are:

-item => 'decamelized_obj_define';

It will bless (or construct) row into specified class. See below. By default it constructs DBIx::DR::Iterator::Item objects.

count

Returns count of elements.

is_changed

Returns (or set) flag that one of contained elements was changed.

exists(name|number)

Returns true if element 'name|number' is exists.

get(name|number)

Returns element by 'name|number'. It will throw exception if element isn't exists.

next

Returns next element or undef.

reset

Resets internal iterator (that is used by next).

all

Returns all elements (as an array).

If You notice an argument it will extract specified fields:

my @ids = $it->all('id');

The same as:

my @ids = map { $_->id } $it->all;

grep

Constructs new iterator that is subset of parent iterator.

my $busy = $list->grep(sub { $_[0]->busy ? 1 : 0 });

push

Pushes one element into iterator.

If You use HASH-iterator You have to note key name.

Example

$hiter->push(abc => { id => 1 }); $hiter->push(abc => $oiter->get('abc'));

$aiter->push({ id => 1 });

DBIx::DR::Iterator::Item

One row. It has methods names coincident with field names. Also it has a few additional methods:

new

Constructor. Receives two arguments: \s-1HASHREF\s0 and link to iterator.

my $row = DBIx::DR::Iterator::Item->new({ id => 1 }); $row = DBIx::DR::Iterator::Item->new({ id => 1 }, $iterator); }

iterator

Returns (or set) iterator object. The link is created by constructor. This is a weaken link.

is_changed

Returns (or set) flag if the row has been changed. If You change any of row's fields the flag will be set. Also iterator's flag will be set.

COPYRIGHT

Copyright (C) 2011 Dmitry E. Oboukhov <[email protected]> Copyright (C) 2011 Roman V. Nikolaev <[email protected]>

This program is free software, you can redistribute it and/or modify it under the terms of the Artistic License.