- 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
|
- license update: GPL+ or Artistic
|
||||||
See README and MoreUtils.pm - "same terms as Perl" expands to 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
|
# All modifications and additions to the file contributed by third parties
|
||||||
# remain the property of their copyright owners, unless otherwise agreed
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
@ -15,38 +15,350 @@
|
|||||||
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
||||||
#
|
#
|
||||||
|
|
||||||
# norootforbuild
|
|
||||||
|
|
||||||
|
|
||||||
Name: perl-List-MoreUtils
|
Name: perl-List-MoreUtils
|
||||||
%define cpan_name %( echo %{name} | %{__sed} -e 's,perl-,,' )
|
Version: 0.30
|
||||||
Summary: Provide the stuff missing in List::Util
|
Release: 1
|
||||||
Version: 0.22
|
|
||||||
Release: 85
|
|
||||||
#
|
|
||||||
License: GPL+ or Artistic
|
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
|
Group: Development/Libraries/Perl
|
||||||
#
|
#Source: http://www.cpan.org/authors/id/A/AD/ADAMK/List-MoreUtils-%{version}.tar.gz
|
||||||
Url: http://search.cpan.org/perldoc?List::MoreUtils
|
Source: %{cpan_name}-%{version}.tar.gz
|
||||||
Source: http://search.cpan.org/CPAN/authors/id/V/VP/VPARSEVAL/List-MoreUtils-0.22.tar.gz
|
|
||||||
#
|
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
%{perl_requires}
|
|
||||||
BuildRequires: perl
|
BuildRequires: perl
|
||||||
BuildRequires: perl-macros
|
BuildRequires: perl-macros
|
||||||
|
%{perl_requires}
|
||||||
|
|
||||||
%description
|
%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
|
All of the below functions are implementable in only a couple of lines of
|
||||||
List::MoreUtils provides some trivial but commonly needed functionality
|
Perl code. Using the functions from this module however should give
|
||||||
on lists which is not going to go into List::Util.
|
slightly better performance as everything is implemented in C. The
|
||||||
Authors: Tassilo von Parseval, <tassilo.von.parseval@rwth-aachen.de>
|
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
|
%prep
|
||||||
%setup -q -n %{cpan_name}-%{version}
|
%setup -q -n %{cpan_name}-%{version}
|
||||||
|
|
||||||
%build
|
%build
|
||||||
perl Makefile.PL OPTIMIZE="$RPM_OPT_FLAGS -Wall"
|
%{__perl} Makefile.PL INSTALLDIRS=vendor OPTIMIZE="%{optflags}"
|
||||||
%{__make} %{?_smp_mflags}
|
%{__make} %{?_smp_mflags}
|
||||||
|
|
||||||
%check
|
%check
|
||||||
@ -58,10 +370,10 @@ perl Makefile.PL OPTIMIZE="$RPM_OPT_FLAGS -Wall"
|
|||||||
%perl_gen_filelist
|
%perl_gen_filelist
|
||||||
|
|
||||||
%clean
|
%clean
|
||||||
%{__rm} -rf $RPM_BUILD_ROOT
|
%{__rm} -rf %{buildroot}
|
||||||
|
|
||||||
%files -f %{name}.files
|
%files -f %{name}.files
|
||||||
%defattr(-, root, root)
|
%defattr(644,root,root,755)
|
||||||
%doc Changes README
|
%doc Changes LICENSE README
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
Loading…
x
Reference in New Issue
Block a user