Sync from SUSE:SLFO:Main perl-Spiffy revision 2c59c8e4e45270c629543679b4433c0b
This commit is contained in:
commit
23fc198a59
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
## Default LFS
|
||||
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||
*.bsp filter=lfs diff=lfs merge=lfs -text
|
||||
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.gem filter=lfs diff=lfs merge=lfs -text
|
||||
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||
*.jar filter=lfs diff=lfs merge=lfs -text
|
||||
*.lz filter=lfs diff=lfs merge=lfs -text
|
||||
*.lzma filter=lfs diff=lfs merge=lfs -text
|
||||
*.obscpio filter=lfs diff=lfs merge=lfs -text
|
||||
*.oxt filter=lfs diff=lfs merge=lfs -text
|
||||
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||
*.png filter=lfs diff=lfs merge=lfs -text
|
||||
*.rpm filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||
*.txz filter=lfs diff=lfs merge=lfs -text
|
||||
*.whl filter=lfs diff=lfs merge=lfs -text
|
||||
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||
*.zst filter=lfs diff=lfs merge=lfs -text
|
BIN
Spiffy-0.46.tar.gz
(Stored with Git LFS)
Normal file
BIN
Spiffy-0.46.tar.gz
(Stored with Git LFS)
Normal file
Binary file not shown.
89
perl-Spiffy.changes
Normal file
89
perl-Spiffy.changes
Normal file
@ -0,0 +1,89 @@
|
||||
-------------------------------------------------------------------
|
||||
Mon Apr 13 17:33:13 UTC 2015 - coolo@suse.com
|
||||
|
||||
- updated to 0.46
|
||||
0.45 Sat Aug 16 04:04:07 PDT 2014
|
||||
- Eliminate spurious trailing whitespace
|
||||
|
||||
0.44 Sat Aug 16 02:50:17 PDT 2014
|
||||
- Eliminate File::Basename from test/
|
||||
|
||||
0.43 Fri Aug 15 20:37:55 PDT 2014
|
||||
- Add t/000-compile-modules.t
|
||||
|
||||
0.42 Sat Aug 9 00:43:22 PDT 2014
|
||||
- Only support back to 5.8.1
|
||||
|
||||
0.41 Thu Aug 7 00:28:54 PDT 2014
|
||||
- Fix bad encoding in Pod
|
||||
|
||||
0.40 Wed Aug 6 10:29:46 PDT 2014
|
||||
- Fix a bug that was causing lots of warnings in Test::Base on perl 5.21
|
||||
|
||||
0.39 Tue Aug 5 10:13:52 PDT 2014
|
||||
- Add badges to doc
|
||||
|
||||
0.38 Mon Aug 4 00:30:13 PDT 2014
|
||||
- Remove (c) from Copyright
|
||||
|
||||
0.37 Wed Jul 30 16:16:56 PDT 2014
|
||||
- Switch IRC to '#pkg'
|
||||
|
||||
0.36 Sat Jul 26 12:01:35 PDT 2014
|
||||
- Fix email in Meta
|
||||
|
||||
0.35 Mon Jul 21 17:15:27 PDT 2014
|
||||
- Fix Meta and add Contributing
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Aug 14 17:04:16 UTC 2013 - lars@linux-schulserver.de
|
||||
|
||||
- update to 0.31:
|
||||
+ Make tests not use 'B" package. rt72542
|
||||
+ Use Module::Package
|
||||
- cleanup specfile and use perl_make_install and perl_gen_filelist
|
||||
macros
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Nov 30 19:20:43 UTC 2010 - coolo@novell.com
|
||||
|
||||
- switch to perl_requires macro
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Nov 29 18:31:05 UTC 2010 - coolo@novell.com
|
||||
|
||||
- remove /var/adm/perl-modules
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sun Nov 28 11:38:00 UTC 2010 - coolo@novell.com
|
||||
|
||||
- remove .packlist file
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Oct 19 08:39:07 UTC 2010 - coolo@novell.com
|
||||
|
||||
- add perl as explicit buildrequire
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sun Jan 10 15:43:32 CET 2010 - jengelh@medozas.de
|
||||
|
||||
- enable parallel build
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Oct 25 15:32:01 CEST 2006 - cwh@suse.de
|
||||
|
||||
version: 0.30
|
||||
date: Sun Jan 29 12:18:02 PST 2006
|
||||
changes:
|
||||
- Use faster runtime code in `field`.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Jan 25 21:39:57 CET 2006 - mls@suse.de
|
||||
|
||||
- converted neededforbuild to BuildRequires
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Jan 20 10:07:20 CET 2006 - cwh@suse.de
|
||||
|
||||
- Initially packaged for SUSE Linux
|
||||
|
159
perl-Spiffy.spec
Normal file
159
perl-Spiffy.spec
Normal file
@ -0,0 +1,159 @@
|
||||
#
|
||||
# spec file for package perl-Spiffy
|
||||
#
|
||||
# Copyright (c) 2015 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 http://bugs.opensuse.org/
|
||||
#
|
||||
|
||||
|
||||
Name: perl-Spiffy
|
||||
Version: 0.46
|
||||
Release: 0
|
||||
%define cpan_name Spiffy
|
||||
Summary: Spiffy Perl Interface Framework For You
|
||||
License: Artistic-1.0 or GPL-1.0+
|
||||
Group: Development/Libraries/Perl
|
||||
Url: http://search.cpan.org/dist/Spiffy/
|
||||
Source: http://www.cpan.org/authors/id/I/IN/INGY/%{cpan_name}-%{version}.tar.gz
|
||||
BuildArch: noarch
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
BuildRequires: perl
|
||||
BuildRequires: perl-macros
|
||||
%{perl_requires}
|
||||
|
||||
%description
|
||||
"Spiffy" is a framework and methodology for doing object oriented (OO)
|
||||
programming in Perl. Spiffy combines the best parts of Exporter.pm,
|
||||
base.pm, mixin.pm and SUPER.pm into one magic foundation class. It attempts
|
||||
to fix all the nits and warts of traditional Perl OO, in a clean,
|
||||
straightforward and (perhaps someday) standard way.
|
||||
|
||||
Spiffy borrows ideas from other OO languages like Python, Ruby, Java and
|
||||
Perl 6. It also adds a few tricks of its own.
|
||||
|
||||
If you take a look on CPAN, there are a ton of OO related modules. When
|
||||
starting a new project, you need to pick the set of modules that makes most
|
||||
sense, and then you need to use those modules in each of your classes.
|
||||
Spiffy, on the other hand, has everything you'll probably need in one
|
||||
module, and you only need to use it once in one of your classes. If you
|
||||
make Spiffy.pm the base class of the basest class in your project, Spiffy
|
||||
will automatically pass all of its magic to all of your subclasses. You may
|
||||
eventually forget that you're even using it!
|
||||
|
||||
The most striking difference between Spiffy and other Perl object oriented
|
||||
base classes, is that it has the ability to export things. If you create a
|
||||
subclass of Spiffy, all the things that Spiffy exports will automatically
|
||||
be exported by your subclass, in addition to any more things that you want
|
||||
to export. And if someone creates a subclass of your subclass, all of those
|
||||
things will be exported automatically, and so on. Think of it as "Inherited
|
||||
Exportation", and it uses the familiar Exporter.pm specification syntax.
|
||||
|
||||
To use Spiffy or any subclass of Spiffy as a base class of your class, you
|
||||
specify the '-base' argument to the 'use' command.
|
||||
|
||||
use MySpiffyBaseModule -base;
|
||||
|
||||
You can also use the traditional 'use base 'MySpiffyBaseModule';' syntax
|
||||
and everything will work exactly the same. The only caveat is that
|
||||
Spiffy.pm must already be loaded. That's because Spiffy rewires base.pm on
|
||||
the fly to do all the Spiffy magics.
|
||||
|
||||
Spiffy has support for Ruby-like mixins with Perl6-like roles. Just like
|
||||
'base' you can use either of the following invocations:
|
||||
|
||||
use mixin 'MySpiffyBaseModule';
|
||||
use MySpiffyBaseModule -mixin;
|
||||
|
||||
The second version will only work if the class being mixed in is a subclass
|
||||
of Spiffy. The first version will work in all cases, as long as Spiffy has
|
||||
already been loaded.
|
||||
|
||||
To limit the methods that get mixed in, use roles. (Hint: they work just
|
||||
like an Exporter list):
|
||||
|
||||
use MySpiffyBaseModule -mixin => qw(:basics x y !foo);
|
||||
|
||||
In object oriented Perl almost every subroutine is a method. Each method
|
||||
gets the object passed to it as its first argument. That means practically
|
||||
every subroutine starts with the line:
|
||||
|
||||
my $self = shift;
|
||||
|
||||
Spiffy provides a simple, optional filter mechanism to insert that line for
|
||||
you, resulting in cleaner code. If you figure an average method has 10
|
||||
lines of code, that's 10% of your code! To turn this option on, you just
|
||||
use the '- Base' option instead of the '-base' option, or add the
|
||||
'-selfless' option. If source filtering makes you queazy, don't use the
|
||||
feature. I personally find it addictive in my quest for writing squeaky
|
||||
clean, maintainable code.
|
||||
|
||||
A useful feature of Spiffy is that it exports two functions: 'field' and
|
||||
'const' that can be used to declare the attributes of your class, and
|
||||
automatically generate accessor methods for them. The only difference
|
||||
between the two functions is that 'const' attributes can not be modified;
|
||||
thus the accessor is much faster.
|
||||
|
||||
One interesting aspect of OO programming is when a method calls the same
|
||||
method from a parent class. This is generally known as calling a super
|
||||
method. Perl's facility for doing this is butt ugly:
|
||||
|
||||
sub cleanup {
|
||||
my $self = shift;
|
||||
$self->scrub;
|
||||
$self->SUPER::cleanup(@_);
|
||||
}
|
||||
|
||||
Spiffy makes it, er, super easy to call super methods. You just use the
|
||||
'super' function. You don't need to pass it any arguments because it
|
||||
automatically passes them on for you. Here's the same function with Spiffy:
|
||||
|
||||
sub cleanup {
|
||||
$self->scrub;
|
||||
super;
|
||||
}
|
||||
|
||||
Spiffy has a special method for parsing arguments called 'parse_arguments',
|
||||
that it also uses for parsing its own arguments. You declare which
|
||||
arguments are boolean (singletons) and which ones are paired, with two
|
||||
special methods called 'boolean_arguments' and 'paired_arguments'. Parse
|
||||
arguments pulls out the booleans and pairs and returns them in an anonymous
|
||||
hash, followed by a list of the unmatched arguments.
|
||||
|
||||
Finally, Spiffy can export a few debugging functions 'WWW', 'XXX', 'YYY'
|
||||
and 'ZZZ'. Each of them produces a YAML dump of its arguments. WWW warns
|
||||
the output, XXX dies with the output, YYY prints the output, and ZZZ
|
||||
confesses the output. If YAML doesn't suit your needs, you can switch all
|
||||
the dumps to Data::Dumper format with the '-dumper' option.
|
||||
|
||||
That's Spiffy!
|
||||
|
||||
%prep
|
||||
%setup -q -n %{cpan_name}-%{version}
|
||||
|
||||
%build
|
||||
%{__perl} Makefile.PL INSTALLDIRS=vendor
|
||||
%{__make} %{?_smp_mflags}
|
||||
|
||||
%check
|
||||
%{__make} test
|
||||
|
||||
%install
|
||||
%perl_make_install
|
||||
%perl_process_packlist
|
||||
%perl_gen_filelist
|
||||
|
||||
%files -f %{name}.files
|
||||
%defattr(-,root,root,755)
|
||||
%doc Changes CONTRIBUTING LICENSE README
|
||||
|
||||
%changelog
|
Loading…
Reference in New Issue
Block a user