File perl-PerlX-Maybe.spec of Package perl-PerlX-Maybe

# spec file for package perl-PerlX-Maybe
# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via

Name:           perl-PerlX-Maybe
Version:        1.201
Release:        0
%define cpan_name PerlX-Maybe
Summary:        Return a Pair Only If They Are Both Defined
License:        Artistic-1.0 OR GPL-1.0-or-later
Group:          Development/Libraries/Perl
Url:  {cpan_name}
Source1:        cpanspec.yml
BuildArch:      noarch
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
BuildRequires:  perl
BuildRequires:  perl-macros
Recommends:     perl(Exporter::Tiny)
Recommends:     perl(PerlX::Maybe::XS)

Moose classes (and some other classes) distinguish between an attribute
being unset and the attribute being set to undef. Supplying a constructor
arguments like this:

 my $bob = Person->new(
    name => $name,
    age => $age,

Will result in the 'name' and 'age' attributes possibly being set to undef
(if the corresponding '$name' and '$age' variables are not defined), which
may violate the Person class' type constraints.

(Note: if you are the _author_ of the class in question, you can solve this
using MooseX::UndefTolerant. However, some of us are stuck using
non-UndefTolerant classes written by third parties.)

To ensure that the Person constructor does not try to set a name or age at
all when they are undefined, ugly looking code like this is often used:

 my $bob = Person->new(
    defined $name ? (name => $name) : (),
    defined $age ? (age => $age) : (),


 use PerlX::Maybe;

 my $bob = Person->new(
    (name => $name) x!!(defined $name),
    (age  => $age)  x!!(defined $age),

A slightly more elegant solution is the 'maybe' function.

%setup -q -n %{cpan_name}-%{version}

perl Makefile.PL INSTALLDIRS=vendor
make %{?_smp_mflags}

make test


%files -f %{name}.files
%doc Changes COPYRIGHT CREDITS doap.ttl README
%license LICENSE

openSUSE Build Service is sponsored by