# # spec file for package perl-Class-Method-Modifiers # # Copyright (c) 2016 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-Class-Method-Modifiers Version: 2.12 Release: 29.14 %define cpan_name Class-Method-Modifiers Summary: Provides Moose-like method modifiers License: Artistic-1.0 or GPL-1.0+ Group: Development/Libraries/Perl Url: http://search.cpan.org/dist/Class-Method-Modifiers/ Source0: http://www.cpan.org/authors/id/E/ET/ETHER/%{cpan_name}-%{version}.tar.gz Source1: cpanspec.yml BuildArch: noarch BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: perl BuildRequires: perl-macros BuildRequires: perl(Test::Fatal) BuildRequires: perl(Test::More) >= 0.88 BuildRequires: perl(Test::Requires) %{perl_requires} %description Method modifiers are a convenient feature from the CLOS (Common Lisp Object System) world. In its most basic form, a method modifier is just a method that calls '$self->SUPER::foo(@_)'. I for one have trouble remembering that exact invocation, so my classes seldom re-dispatch to their base classes. Very bad! 'Class::Method::Modifiers' provides three modifiers: 'before', 'around', and 'after'. 'before' and 'after' are run just before and after the method they modify, but can not really affect that original method. 'around' is run in place of the original method, with a hook to easily call that original method. See the 'MODIFIERS' section for more details on how the particular modifiers work. One clear benefit of using 'Class::Method::Modifiers' is that you can define multiple modifiers in a single namespace. These separate modifiers don't need to know about each other. This makes top-down design easy. Have a base class that provides the skeleton methods of each operation, and have plugins modify those methods to flesh out the specifics. Parent classes need not know about 'Class::Method::Modifiers'. This means you should be able to modify methods in _any_ subclass. See Term::VT102::ZeroBased for an example of subclassing with 'Class::Method::Modifiers'. In short, 'Class::Method::Modifiers' solves the problem of making sure you call '$self->SUPER::foo(@_)', and provides a cleaner interface for it. As of version 1.00, 'Class::Method::Modifiers' is faster in some cases than Moose. See 'benchmark/method_modifiers.pl' in the Moose distribution. 'Class::Method::Modifiers' also provides an additional "modifier" type, 'fresh'; see below. %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 * Tue Mar 8 2016 coolo@suse.com - updated to 2.12 see /usr/share/doc/packages/perl-Class-Method-Modifiers/Changes 2.12 2016-03-04 22:12:15Z - minor documentation tweaks * Tue Sep 16 2014 coolo@suse.com - updated to 2.11 - add documentation for modifying multiple methods at once (mannih, github #2) * Fri Mar 7 2014 coolo@suse.com - updated to 2.10 - installation switched to using only ExtUtils::MakeMaker, to allow for use on perl 5.6 * Fri Jan 17 2014 lars@linux-schulserver.de - updated to 2.09 + refresh configure_requires checking in generated Makefile.PL; new CONTRIBUTING file; updated tests (compile test now only runs for authors; check-deps test replaced by information-only report-prereqs test) * Mon Nov 25 2013 coolo@suse.com - updated to 2.08 - remove requirement on perl 5.8 in metadata - repository migrated to the github moose organization - remove t/00-check-deps.t, which fails on old toolchains that do not understand configure_requires * Fri Oct 4 2013 coolo@suse.com - updated to 2.07 - removed dependency on Test::Warnings in tests (now reserved for author testing) - now packaged with a Build.PL (for Module::Build::Tiny), and a Makefile.PL (for legacy 5.6 and 5.8 users; prints a warning on invocation) - packaging the dist again with EUMM rather than MBT - Support for handling lvalue methods (Graham Knop) - convert to building with Dist::Zilla * Mon Jun 3 2013 coolo@suse.com - updated to 2.04 Test for and fix $_ corruption (Vladimir Timofeev) New 'fresh' modifier (Aaron Crane) Avoid "Variable "$..." will not stay shared" warnings under 5.8.x (from changes in 1.09) [#80194] (Karen Etheridge) * Thu Apr 19 2012 tabraham@novell.com - updated to 1.09 - Install modified subs in the proper namespace [#74569] (Karen Etheridge) * Wed Oct 26 2011 tabraham@novell.com - updated to 1.08 Sun Oct 16 2011 - document install_modifier (requested by Tokuhiro Matsuno) * Wed May 11 2011 dbahi@novell.com - 1.07 Wed Feb 23 2011 Move from Test::Exception to Test::Fatal (Justin Hunter) - 1.06 Fri Nov 26 2010 Add support for: modifier ["name1", "name2"] => sub {} * Tue Nov 30 2010 coolo@novell.com - switch to perl_requires macro * Tue Sep 21 2010 dbahi@novell.com - initial package 1.05 * created by cpanspec 1.78