From 71dc6f234c8179f31ca9fd3f18f2ee9a9c37b32d Mon Sep 17 00:00:00 2001 From: Lars Balker Rasmussen Date: Wed, 23 Jul 2008 08:05:22 +0000 Subject: [PATCH] New port: devel/p5-Class-Method-Modifiers, Provides Moose-like method modifiers --- devel/Makefile | 1 + devel/p5-Class-Method-Modifiers/Makefile | 27 +++++++++++++++++++++++ devel/p5-Class-Method-Modifiers/distinfo | 3 +++ devel/p5-Class-Method-Modifiers/pkg-descr | 22 ++++++++++++++++++ devel/p5-Class-Method-Modifiers/pkg-plist | 7 ++++++ 5 files changed, 60 insertions(+) create mode 100644 devel/p5-Class-Method-Modifiers/Makefile create mode 100644 devel/p5-Class-Method-Modifiers/distinfo create mode 100644 devel/p5-Class-Method-Modifiers/pkg-descr create mode 100644 devel/p5-Class-Method-Modifiers/pkg-plist diff --git a/devel/Makefile b/devel/Makefile index 988b16e8d16b..88fb6838da13 100644 --- a/devel/Makefile +++ b/devel/Makefile @@ -1016,6 +1016,7 @@ SUBDIR += p5-Class-MOP SUBDIR += p5-Class-MakeMethods SUBDIR += p5-Class-Measure + SUBDIR += p5-Class-Method-Modifiers SUBDIR += p5-Class-MethodMaker SUBDIR += p5-Class-MethodMapper SUBDIR += p5-Class-MixinFactory diff --git a/devel/p5-Class-Method-Modifiers/Makefile b/devel/p5-Class-Method-Modifiers/Makefile new file mode 100644 index 000000000000..c6c3cf291126 --- /dev/null +++ b/devel/p5-Class-Method-Modifiers/Makefile @@ -0,0 +1,27 @@ +# New ports collection makefile for: devel/p5-Class-Method-Modifiers +# Date created: 23 Jul 2008 +# Whom: Lars Balker Rasmussen +# +# $FreeBSD$ +# + +PORTNAME= Class-Method-Modifiers +PORTVERSION= 1.01 +CATEGORIES= devel perl5 +MASTER_SITES= CPAN +PKGNAMEPREFIX= p5- + +MAINTAINER= lbr@FreeBSD.org +COMMENT= Provides Moose-like method modifiers + +RUN_DEPENDS= p5-MRO-Compat>=0:${PORTSDIR}/devel/p5-MRO-Compat +BUILD_DEPENDS= ${RUN_DEPENDS} + +PERL_CONFIGURE= 5.8.0+ + +MAN3= Class::Method::Modifiers.3 + +post-extract: + @${PERL} -i -ne 'print unless m,build_requires,' ${WRKSRC}/Makefile.PL + +.include diff --git a/devel/p5-Class-Method-Modifiers/distinfo b/devel/p5-Class-Method-Modifiers/distinfo new file mode 100644 index 000000000000..2c2f199ad138 --- /dev/null +++ b/devel/p5-Class-Method-Modifiers/distinfo @@ -0,0 +1,3 @@ +MD5 (Class-Method-Modifiers-1.01.tar.gz) = f0398c468025d21493745619b1114a46 +SHA256 (Class-Method-Modifiers-1.01.tar.gz) = ce22a834bbe79e2ff5c01709becffaf0c9a7d71b3bd94b2e07b611fe4f0375be +SIZE (Class-Method-Modifiers-1.01.tar.gz) = 23163 diff --git a/devel/p5-Class-Method-Modifiers/pkg-descr b/devel/p5-Class-Method-Modifiers/pkg-descr new file mode 100644 index 000000000000..2ed944b78be9 --- /dev/null +++ b/devel/p5-Class-Method-Modifiers/pkg-descr @@ -0,0 +1,22 @@ +Method modifiers are a powerful 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. + +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. + +In short, Class::Method::Modifiers solves the problem of making sure you call +$self->SUPER::foo(@_), and provides a cleaner interface for it. + +WWW: http://search.cpan.org/dist/Class-Method-Modifiers/ diff --git a/devel/p5-Class-Method-Modifiers/pkg-plist b/devel/p5-Class-Method-Modifiers/pkg-plist new file mode 100644 index 000000000000..7420bc523243 --- /dev/null +++ b/devel/p5-Class-Method-Modifiers/pkg-plist @@ -0,0 +1,7 @@ +%%SITE_PERL%%/Class/Method/Modifiers.pm +%%SITE_PERL%%/%%PERL_ARCH%%/auto/Class/Method/Modifiers/.packlist +@dirrmtry %%SITE_PERL%%/%%PERL_ARCH%%/auto/Class/Method/Modifiers +@dirrmtry %%SITE_PERL%%/%%PERL_ARCH%%/auto/Class/Method +@dirrmtry %%SITE_PERL%%/%%PERL_ARCH%%/auto/Class +@dirrmtry %%SITE_PERL%%/Class/Method +@dirrmtry %%SITE_PERL%%/Class