NAME
XAS::Lib::Iterator - A class for the XAS environment
SYNOPSIS
use XAS::Lib::Iterator;
my @data = ['test1', 'test2', 'test3', 'test4'];
my $iterator = XAS::Lib::Iterator->new(@data);
while (my $item = $iterator->next) {
printf("item: %s\n", $item);
}
DESCRIPTION
This is a general purpose iterator for an array of items. Once the items are composed, you can then transverse over them and return items.
METHODS
new($items);
Initialize the object and process the supplied items.
- $items
-
If the item is a blessed object with a as_list() method, then what is returned from that call is used.
If the item is a hash, it will be decomposed into an array of hashes with the fields "key" and "value". Where "key" is the orignal key and "value" is the original value. The items will be sorted by the key.
And lastly, you can use a delimited string. The delimiter can be white space or commas. This will be split into an array of sorted items.
Sorting is done by Perls builtin sort function.
count
Return the number of items.
first
Set the index to the first item.
last
Set the index to the last item.
index($position)
Return or set the current position of the index.
find($callback)
This method will find an item within the items. It will return the position in the index or -1.
- $callback
-
The comparison routine. It is passed an item for comparision. The routine should return the following:
1 if the item is greater then what is wanted.
-1 if the item is lesser then what is wanted.
0 if they match.
next
Return the next item and increment the index.
prev
Return the previous item and decrements the index.
item
Return the item at the current index position.
items
Return a slice of the items from the current index position to the end.
SEE ALSO
AUTHOR
Kevin L. Esteb, <kevin@kesteb.us>
COPYRIGHT AND LICENSE
Copyright (c) 2015 Kevin L. Esteb
This is free software; you can redistribute it and/or modify it under the terms of the Artistic License 2.0. For details, see the full text of the license at http://www.perlfoundation.org/artistic_license_2_0.