Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/grinnz/class-tiny-immutable
Class::Tiny::Immutable - Minimalist class construction, with read-only attributes
https://github.com/grinnz/class-tiny-immutable
Last synced: 5 days ago
JSON representation
Class::Tiny::Immutable - Minimalist class construction, with read-only attributes
- Host: GitHub
- URL: https://github.com/grinnz/class-tiny-immutable
- Owner: Grinnz
- License: other
- Created: 2017-07-14T00:16:12.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2019-02-10T19:58:11.000Z (almost 6 years ago)
- Last Synced: 2024-11-13T05:43:33.798Z (about 2 months ago)
- Language: Perl
- Homepage:
- Size: 18.6 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.pod
- Changelog: Changes
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
=pod
=head1 NAME
Class::Tiny::Immutable - Minimalist class construction, with read-only
attributes=head1 SYNOPSIS
In I:
package Person;
use Class::Tiny::Immutable qw( name );
1;In I:
package Employee;
use parent 'Person';
use Class::Tiny::Immutable qw( ssn ), {
timestamp => sub { time } # lazy attribute with default
};
1;In I:
use Employee;
my $obj = Employee->new; # dies, name and ssn attributes are required
my $obj = Employee->new( name => "Larry", ssn => "111-22-3333" );
my $name = $obj->name;
my $timestamp = $obj->timestamp;
# no attributes can be set
$obj->ssn("222-33-4444"); # dies
$obj->timestamp(time); # dies=head1 DESCRIPTION
L is a wrapper around L which makes the
generated attributes read-only, and required to be set in the object
constructor if they do not have a lazy default defined. In other words,
attributes are either "lazy" or "required".=head1 METHODS
In addition to methods inherited from L, Class::Tiny::Immutable
defines the following additional introspection method:=head2 get_all_required_attributes_for
my @required = Class::Tiny::Immutable->get_all_required_attributes_for($class);
Returns an unsorted list of required attributes known to Class::Tiny::Immutable
for a class and its superclasses.=head1 BUGS
Report any issues on the public bugtracker.
=head1 AUTHOR
Dan Book
=head1 COPYRIGHT AND LICENSE
This software is Copyright (c) 2017 by Dan Book.
This is free software, licensed under:
The Artistic License 2.0 (GPL Compatible)
=head1 SEE ALSO
L, L
=cut