MooX::Const - Syntactic sugar for constant and write-once Moo attributes
version v0.2.2
use Moo; use MooX::Const; use Types::Standard -types; has thing => ( is => 'const', isa => ArrayRef[HashRef], );
This is syntactic sugar for using Types::Const with Moo. The SYNOPSIS above is equivalent to:
use Types::Const -types; has thing => ( is => 'ro', isa => Const[ArrayRef[HashRef]], coerce => 1, );
It modifies the has function to support "const" attributes. These are read-only ("ro") attributes for references, where the underlying data structure has been set as read-only.
has
This will return an error if there is no "isa", the "isa" is not a Type::Tiny type, if it is not a reference, or if it is blessed object.
Simple value types such as Int or Str are silently converted to read-only attributes.
Int
Str
As of v0.2.0, it also supports write-once ("wo") attributes for references:
has setting => ( is => 'wo', isa => HashRef, );
This allows you to set the attribute once. The value is coerced into a constant, and cannot be changed again.
Support for Perl versions earlier than 5.10 will be removed sometime in 2019.
Moo
Types::Const
Type::Tiny
The development version is on github at https://github.com/robrwo/MooX-Const and may be cloned from git://github.com/robrwo/MooX-Const.git
Please report any bugs or feature requests on the bugtracker website https://github.com/robrwo/MooX-Const/issues
When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.
Robert Rothenberg <rrwo@cpan.org>
This module was inspired by suggestions from Kang-min Liu 劉康民 <gugod@gugod.org> in a blog post.
Kang-min Liu 劉康民 <gugod@gugod.org>
This software is Copyright (c) 2018 by Robert Rothenberg.
This is free software, licensed under:
The Artistic License 2.0 (GPL Compatible)
To install MooX::Const, copy and paste the appropriate command in to your terminal.
cpanm
cpanm MooX::Const
CPAN shell
perl -MCPAN -e shell install MooX::Const
For more information on module installation, please visit the detailed CPAN module installation guide.