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