1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- Name: perl-Devel-EnforceEncapsulation
- Version: 0.50
- Release: 2%{?_dist_release}
- Summary: Find access violations to blessed objects
- Group: Development/Libraries
- License: GPL+ or Artistic
- URL: http://search.cpan.org/dist/Devel-EnforceEncapsulation/
- Source0: http://search.cpan.org/CPAN/authors/id/C/CL/CLOTHO/Devel-EnforceEncapsulation-%{version}.tgz
- BuildArch: noarch
- BuildRequires: perl(Carp)
- BuildRequires: perl(English)
- BuildRequires: perl(ExtUtils::MakeMaker)
- BuildRequires: perl(Test::More)
- BuildRequires: perl(Test::Pod)
- BuildRequires: perl(Test::Pod::Coverage)
- Requires: perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version))
- Vendor: Project Vine
- Distribution: Vine Linux
- Packager: shaolin
- %description
- Encapsulation is the practice of creating subroutines to access the properties
- of a class instead of accessing those properties directly. The advantage of
- good encapsulation is that the author is permitted to change the internal
- implementation of a class without breaking its usage.
- Object-oriented programming in Perl is most commonly implemented via blessed
- hashes. This practice makes it easy for users of a class to violate
- encapsulation by simply accessing the hash values directly. Although less
- common, the same applies to classes implemented via blessed arrays, scalars,
- filehandles, etc.
- This module is a hack to block those direct accesses. If you try to access a
- hash value of an object from its own class, or a superclass or subclass, all
- goes well. If you try to access a hash value from any other package, an
- exception is thrown. The same applies to the scalar value of a blessed scalar,
- entry in a blessed array, etc.
- To be clear: this class is NOT intended for strict enforcement of
- encapsulation. If you want bullet-proof encapsulation, use inside-out objects
- or the like. Instead, this module is intended to be a development or debugging
- aid in catching places where direct access is used against classes implemented
- as blessed hashes.
- To repeat: the encapsulation enforced here is a hack and is easily
- circumvented. Please use this module for good (finding bugs), not evil (making
- life harder for downstream developers).
- %prep
- %setup -q -n Devel-EnforceEncapsulation-%{version}
- %build
- perl Makefile.PL INSTALLDIRS=vendor
- make %{?_smp_mflags}
- %install
- make pure_install DESTDIR=%{buildroot}
- find %{buildroot} -type f -name .packlist -exec rm -f {} \;
- find %{buildroot} -depth -type d -exec rmdir {} \; 2>/dev/null
- %{_fixperms} %{buildroot}
- %check
- make test AUTHOR_TEST=1 AUTHOR_TEST_CDOLAN=1
- %files
- %defattr(-,root,root,-)
- %doc CHANGES LICENSE README index.html
- %{perl_vendorlib}/Devel/
- %{_mandir}/man3/Devel::EnforceEncapsulation.3pm*
- %changelog
- * Thu Mar 02 2012 MATSUBAYASHI Kohji <shaolin@vinelinux.org> - 0.50-2
- - rebuild
- * Fri Feb 24 2012 MATSUBAYASHI Kohji <shaolin@vinelinux.org> - 0.50-1
- - initial build for Vine Linux
- * Wed Jan 11 2012 Paul Howarth <paul@city-fan.org> - 0.50-5
- - BR: perl(Carp) and perl(English)
- * Mon Jun 20 2011 Marcela Mašláňová <mmaslano@redhat.com> - 0.50-4
- - Perl mass rebuild
- * Mon Apr 11 2011 Paul Howarth <paul@city-fan.org> - 0.50-3
- - Clean up for modern rpmbuild
- * Mon Apr 11 2011 Paul Howarth <paul@city-fan.org> - 0.50-2
- - Nobody else likes macros for commands
- * Fri Mar 18 2011 Paul Howarth <paul@city-fan.org> - 0.50-1
- - Initial RPM version
|