- initial package 0.30
* created by cpanspec 1.78.03 - update to 0.30, see Changes for details (a lot) Mar 17 08:24:00 UTC 2011 - cfarrell@novell.com OBS-URL: https://build.opensuse.org/package/show/devel:languages:perl/perl-List-MoreUtils?expand=0&rev=13
This commit is contained in:
parent
6b8493623b
commit
075d670998
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:b4948b26851d9d9ac611eb487ecb92815dc3c5ee64e414bc67211b48590f62b7
|
||||
size 22570
|
3
List-MoreUtils-0.30.tar.gz
Normal file
3
List-MoreUtils-0.30.tar.gz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:1d401b6e08681dcc782b04b7a6e128fff043b9a06ef12fee0931800a006132f0
|
||||
size 36659
|
@ -1,5 +1,16 @@
|
||||
-------------------------------------------------------------------
|
||||
Thu Mar 17 08:24:00 UTC 2011 - cfarrell@novell.com
|
||||
Thu Mar 31 12:41:18 UTC 2011 - coolo@novell.com
|
||||
|
||||
- initial package 0.30
|
||||
* created by cpanspec 1.78.03
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Mar 31 12:40:18 UTC 2011 - coolo@novell.com
|
||||
|
||||
- update to 0.30, see Changes for details (a lot)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mar 17 08:24:00 UTC 2011 - cfarrell@novell.com
|
||||
|
||||
- license update: GPL+ or Artistic
|
||||
See README and MoreUtils.pm - "same terms as Perl" expands to GPL+ or Artistic
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# spec file for package perl-List-MoreUtils
|
||||
# spec file for package perl-List-MoreUtils (Version 0.30)
|
||||
#
|
||||
# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
@ -15,38 +15,350 @@
|
||||
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
||||
#
|
||||
|
||||
# norootforbuild
|
||||
|
||||
|
||||
Name: perl-List-MoreUtils
|
||||
%define cpan_name %( echo %{name} | %{__sed} -e 's,perl-,,' )
|
||||
Summary: Provide the stuff missing in List::Util
|
||||
Version: 0.22
|
||||
Release: 85
|
||||
#
|
||||
Version: 0.30
|
||||
Release: 1
|
||||
License: GPL+ or Artistic
|
||||
%define cpan_name List-MoreUtils
|
||||
Summary: Provide the stuff missing in List::Util
|
||||
Url: http://search.cpan.org/dist/List-MoreUtils/
|
||||
Group: Development/Libraries/Perl
|
||||
#
|
||||
Url: http://search.cpan.org/perldoc?List::MoreUtils
|
||||
Source: http://search.cpan.org/CPAN/authors/id/V/VP/VPARSEVAL/List-MoreUtils-0.22.tar.gz
|
||||
#
|
||||
#Source: http://www.cpan.org/authors/id/A/AD/ADAMK/List-MoreUtils-%{version}.tar.gz
|
||||
Source: %{cpan_name}-%{version}.tar.gz
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
%{perl_requires}
|
||||
BuildRequires: perl
|
||||
BuildRequires: perl-macros
|
||||
%{perl_requires}
|
||||
|
||||
%description
|
||||
*List::MoreUtils* provides some trivial but commonly needed functionality
|
||||
on lists which is not going to go into the List::Util manpage.
|
||||
|
||||
%{cpan_name} module for perl
|
||||
List::MoreUtils provides some trivial but commonly needed functionality
|
||||
on lists which is not going to go into List::Util.
|
||||
Authors: Tassilo von Parseval, <tassilo.von.parseval@rwth-aachen.de>
|
||||
All of the below functions are implementable in only a couple of lines of
|
||||
Perl code. Using the functions from this module however should give
|
||||
slightly better performance as everything is implemented in C. The
|
||||
pure-Perl implementation of these functions only serves as a fallback in
|
||||
case the C portions of this module couldn't be compiled on this machine.
|
||||
|
||||
* any BLOCK LIST
|
||||
|
||||
Returns a true value if any item in LIST meets the criterion given
|
||||
through BLOCK. Sets '$_' for each item in LIST in turn:
|
||||
|
||||
print "At least one value undefined"
|
||||
if any { ! defined($_) } @list;
|
||||
|
||||
Returns false otherwise, or if LIST is empty.
|
||||
|
||||
* all BLOCK LIST
|
||||
|
||||
Returns a true value if all items in LIST meet the criterion given
|
||||
through BLOCK. Sets '$_' for each item in LIST in turn:
|
||||
|
||||
print "All items defined"
|
||||
if all { defined($_) } @list;
|
||||
|
||||
Returns false otherwise, or if LIST is empty.
|
||||
|
||||
* none BLOCK LIST
|
||||
|
||||
Logically the negation of 'any'. Returns a true value if no item in LIST
|
||||
meets the criterion given through BLOCK. Sets '$_' for each item in LIST
|
||||
in turn:
|
||||
|
||||
print "No value defined"
|
||||
if none { defined($_) } @list;
|
||||
|
||||
Returns false otherwise, or if LIST is empty.
|
||||
|
||||
* notall BLOCK LIST
|
||||
|
||||
Logically the negation of 'all'. Returns a true value if not all items in
|
||||
LIST meet the criterion given through BLOCK. Sets '$_' for each item in
|
||||
LIST in turn:
|
||||
|
||||
print "Not all values defined"
|
||||
if notall { defined($_) } @list;
|
||||
|
||||
Returns false otherwise, or if LIST is empty.
|
||||
|
||||
* true BLOCK LIST
|
||||
|
||||
Counts the number of elements in LIST for which the criterion in BLOCK is
|
||||
true. Sets '$_' for each item in LIST in turn:
|
||||
|
||||
printf "%i item(s) are defined", true { defined($_) } @list;
|
||||
|
||||
* false BLOCK LIST
|
||||
|
||||
Counts the number of elements in LIST for which the criterion in BLOCK is
|
||||
false. Sets '$_' for each item in LIST in turn:
|
||||
|
||||
printf "%i item(s) are not defined", false { defined($_) } @list;
|
||||
|
||||
* firstidx BLOCK LIST
|
||||
|
||||
* first_index BLOCK LIST
|
||||
|
||||
Returns the index of the first element in LIST for which the criterion in
|
||||
BLOCK is true. Sets '$_' for each item in LIST in turn:
|
||||
|
||||
my @list = (1, 4, 3, 2, 4, 6);
|
||||
printf "item with index %i in list is 4", firstidx { $_ == 4 } @list;
|
||||
__END__
|
||||
item with index 1 in list is 4
|
||||
|
||||
Returns '-1' if no such item could be found.
|
||||
|
||||
'first_index' is an alias for 'firstidx'.
|
||||
|
||||
* lastidx BLOCK LIST
|
||||
|
||||
* last_index BLOCK LIST
|
||||
|
||||
Returns the index of the last element in LIST for which the criterion in
|
||||
BLOCK is true. Sets '$_' for each item in LIST in turn:
|
||||
|
||||
my @list = (1, 4, 3, 2, 4, 6);
|
||||
printf "item with index %i in list is 4", lastidx { $_ == 4 } @list;
|
||||
__END__
|
||||
item with index 4 in list is 4
|
||||
|
||||
Returns '-1' if no such item could be found.
|
||||
|
||||
'last_index' is an alias for 'lastidx'.
|
||||
|
||||
* insert_after BLOCK VALUE LIST
|
||||
|
||||
Inserts VALUE after the first item in LIST for which the criterion in
|
||||
BLOCK is true. Sets '$_' for each item in LIST in turn.
|
||||
|
||||
my @list = qw/This is a list/;
|
||||
insert_after { $_ eq "a" } "longer" => @list;
|
||||
print "@list";
|
||||
__END__
|
||||
This is a longer list
|
||||
|
||||
* insert_after_string STRING VALUE LIST
|
||||
|
||||
Inserts VALUE after the first item in LIST which is equal to STRING.
|
||||
|
||||
my @list = qw/This is a list/;
|
||||
insert_after_string "a", "longer" => @list;
|
||||
print "@list";
|
||||
__END__
|
||||
This is a longer list
|
||||
|
||||
* apply BLOCK LIST
|
||||
|
||||
Applies BLOCK to each item in LIST and returns a list of the values after
|
||||
BLOCK has been applied. In scalar context, the last element is returned.
|
||||
This function is similar to 'map' but will not modify the elements of the
|
||||
input list:
|
||||
|
||||
my @list = (1 .. 4);
|
||||
my @mult = apply { $_ *= 2 } @list;
|
||||
print "\@list = @list\n";
|
||||
print "\@mult = @mult\n";
|
||||
__END__
|
||||
@list = 1 2 3 4
|
||||
@mult = 2 4 6 8
|
||||
|
||||
Think of it as syntactic sugar for
|
||||
|
||||
for (my @mult = @list) { $_ *= 2 }
|
||||
|
||||
* before BLOCK LIST
|
||||
|
||||
Returns a list of values of LIST upto (and not including) the point where
|
||||
BLOCK returns a true value. Sets '$_' for each element in LIST in turn.
|
||||
|
||||
* before_incl BLOCK LIST
|
||||
|
||||
Same as 'before' but also includes the element for which BLOCK is true.
|
||||
|
||||
* after BLOCK LIST
|
||||
|
||||
Returns a list of the values of LIST after (and not including) the point
|
||||
where BLOCK returns a true value. Sets '$_' for each element in LIST in
|
||||
turn.
|
||||
|
||||
@x = after { $_ % 5 == 0 } (1..9); # returns 6, 7, 8, 9
|
||||
|
||||
* after_incl BLOCK LIST
|
||||
|
||||
Same as 'after' but also inclues the element for which BLOCK is true.
|
||||
|
||||
* indexes BLOCK LIST
|
||||
|
||||
Evaluates BLOCK for each element in LIST (assigned to '$_') and returns a
|
||||
list of the indices of those elements for which BLOCK returned a true
|
||||
value. This is just like 'grep' only that it returns indices instead of
|
||||
values:
|
||||
|
||||
@x = indexes { $_ % 2 == 0 } (1..10); # returns 1, 3, 5, 7, 9
|
||||
|
||||
* firstval BLOCK LIST
|
||||
|
||||
* first_value BLOCK LIST
|
||||
|
||||
Returns the first element in LIST for which BLOCK evaluates to true. Each
|
||||
element of LIST is set to '$_' in turn. Returns 'undef' if no such
|
||||
element has been found.
|
||||
|
||||
'first_val' is an alias for 'firstval'.
|
||||
|
||||
* lastval BLOCK LIST
|
||||
|
||||
* last_value BLOCK LIST
|
||||
|
||||
Returns the last value in LIST for which BLOCK evaluates to true. Each
|
||||
element of LIST is set to '$_' in turn. Returns 'undef' if no such
|
||||
element has been found.
|
||||
|
||||
'last_val' is an alias for 'lastval'.
|
||||
|
||||
* pairwise BLOCK ARRAY1 ARRAY2
|
||||
|
||||
Evaluates BLOCK for each pair of elements in ARRAY1 and ARRAY2 and
|
||||
returns a new list consisting of BLOCK's return values. The two elements
|
||||
are set to '$a' and '$b'. Note that those two are aliases to the original
|
||||
value so changing them will modify the input arrays.
|
||||
|
||||
@a = (1 .. 5);
|
||||
@b = (11 .. 15);
|
||||
@x = pairwise { $a + $b } @a, @b; # returns 12, 14, 16, 18, 20
|
||||
|
||||
# mesh with pairwise
|
||||
@a = qw/a b c/;
|
||||
@b = qw/1 2 3/;
|
||||
@x = pairwise { ($a, $b) } @a, @b; # returns a, 1, b, 2, c, 3
|
||||
|
||||
* each_array ARRAY1 ARRAY2 ...
|
||||
|
||||
Creates an array iterator to return the elements of the list of arrays
|
||||
ARRAY1, ARRAY2 throughout ARRAYn in turn. That is, the first time it is
|
||||
called, it returns the first element of each array. The next time, it
|
||||
returns the second elements. And so on, until all elements are exhausted.
|
||||
|
||||
This is useful for looping over more than one array at once:
|
||||
|
||||
my $ea = each_array(@a, @b, @c);
|
||||
while ( my ($a, $b, $c) = $ea->() ) { .... }
|
||||
|
||||
The iterator returns the empty list when it reached the end of all
|
||||
arrays.
|
||||
|
||||
If the iterator is passed an argument of ''index'', then it retuns the
|
||||
index of the last fetched set of values, as a scalar.
|
||||
|
||||
* each_arrayref LIST
|
||||
|
||||
Like each_array, but the arguments are references to arrays, not the
|
||||
plain arrays.
|
||||
|
||||
* natatime BLOCK LIST
|
||||
|
||||
Creates an array iterator, for looping over an array in chunks of '$n'
|
||||
items at a time. (n at a time, get it?). An example is probably a better
|
||||
explanation than I could give in words.
|
||||
|
||||
Example:
|
||||
|
||||
my @x = ('a' .. 'g');
|
||||
my $it = natatime 3, @x;
|
||||
while (my @vals = $it->())
|
||||
{
|
||||
print "@vals\n";
|
||||
}
|
||||
|
||||
This prints
|
||||
|
||||
a b c
|
||||
d e f
|
||||
g
|
||||
|
||||
* mesh ARRAY1 ARRAY2 [ ARRAY3 ... ]
|
||||
|
||||
* zip ARRAY1 ARRAY2 [ ARRAY3 ... ]
|
||||
|
||||
Returns a list consisting of the first elements of each array, then the
|
||||
second, then the third, etc, until all arrays are exhausted.
|
||||
|
||||
Examples:
|
||||
|
||||
@x = qw/a b c d/;
|
||||
@y = qw/1 2 3 4/;
|
||||
@z = mesh @x, @y; # returns a, 1, b, 2, c, 3, d, 4
|
||||
|
||||
@a = ('x');
|
||||
@b = ('1', '2');
|
||||
@c = qw/zip zap zot/;
|
||||
@d = mesh @a, @b, @c; # x, 1, zip, undef, 2, zap, undef, undef, zot
|
||||
|
||||
'zip' is an alias for 'mesh'.
|
||||
|
||||
* uniq LIST
|
||||
|
||||
* distinct LIST
|
||||
|
||||
Returns a new list by stripping duplicate values in LIST. The order of
|
||||
elements in the returned list is the same as in LIST. In scalar context,
|
||||
returns the number of unique elements in LIST.
|
||||
|
||||
my @x = uniq 1, 1, 2, 2, 3, 5, 3, 4; # returns 1 2 3 5 4
|
||||
my $x = uniq 1, 1, 2, 2, 3, 5, 3, 4; # returns 5
|
||||
|
||||
* minmax LIST
|
||||
|
||||
Calculates the minimum and maximum of LIST and returns a two element list
|
||||
with the first element being the minimum and the second the maximum.
|
||||
Returns the empty list if LIST was empty.
|
||||
|
||||
The 'minmax' algorithm differs from a naive iteration over the list where
|
||||
each element is compared to two values being the so far calculated min
|
||||
and max value in that it only requires 3n/2 - 2 comparisons. Thus it is
|
||||
the most efficient possible algorithm.
|
||||
|
||||
However, the Perl implementation of it has some overhead simply due to
|
||||
the fact that there are more lines of Perl code involved. Therefore, LIST
|
||||
needs to be fairly big in order for 'minmax' to win over a naive
|
||||
implementation. This limitation does not apply to the XS version.
|
||||
|
||||
* part BLOCK LIST
|
||||
|
||||
Partitions LIST based on the return value of BLOCK which denotes into
|
||||
which partition the current value is put.
|
||||
|
||||
Returns a list of the partitions thusly created. Each partition created
|
||||
is a reference to an array.
|
||||
|
||||
my $i = 0;
|
||||
my @part = part { $i++ % 2 } 1 .. 8; # returns [1, 3, 5, 7], [2, 4, 6, 8]
|
||||
|
||||
You can have a sparse list of partitions as well where non-set partitions
|
||||
will be undef:
|
||||
|
||||
my @part = part { 2 } 1 .. 10; # returns undef, undef, [ 1 .. 10 ]
|
||||
|
||||
Be careful with negative values, though:
|
||||
|
||||
my @part = part { -1 } 1 .. 10;
|
||||
__END__
|
||||
Modification of non-creatable array value attempted, subscript -1 ...
|
||||
|
||||
Negative values are only ok when they refer to a partition previously
|
||||
created:
|
||||
|
||||
my @idx = ( 0, 1, -1 );
|
||||
my $i = 0;
|
||||
my @part = part { $idx[$++ % 3] } 1 .. 8; # [1, 4, 7], [2, 3, 5, 6, 8]
|
||||
|
||||
%prep
|
||||
%setup -q -n %{cpan_name}-%{version}
|
||||
|
||||
%build
|
||||
perl Makefile.PL OPTIMIZE="$RPM_OPT_FLAGS -Wall"
|
||||
%{__perl} Makefile.PL INSTALLDIRS=vendor OPTIMIZE="%{optflags}"
|
||||
%{__make} %{?_smp_mflags}
|
||||
|
||||
%check
|
||||
@ -58,10 +370,10 @@ perl Makefile.PL OPTIMIZE="$RPM_OPT_FLAGS -Wall"
|
||||
%perl_gen_filelist
|
||||
|
||||
%clean
|
||||
%{__rm} -rf $RPM_BUILD_ROOT
|
||||
%{__rm} -rf %{buildroot}
|
||||
|
||||
%files -f %{name}.files
|
||||
%defattr(-, root, root)
|
||||
%doc Changes README
|
||||
%defattr(644,root,root,755)
|
||||
%doc Changes LICENSE README
|
||||
|
||||
%changelog
|
||||
|
Loading…
x
Reference in New Issue
Block a user