[libmoosex-lazyrequire-perl] 03/06: Initial implementation.
Intrigeri
intrigeri at moszumanska.debian.org
Wed Aug 27 21:25:15 UTC 2014
This is an automated email from the git hooks/post-receive script.
intrigeri pushed a commit to annotated tag 0.01
in repository libmoosex-lazyrequire-perl.
commit f635f1dcc658b0cab42b633e6c5369e6eb199229
Author: Florian Ragwitz <rafl at debian.org>
Date: Thu Aug 13 01:57:07 2009 +0200
Initial implementation.
---
lib/MooseX/LazyRequire.pm | 17 +++++++++++
.../Meta/Attribute/Trait/LazyRequire.pm | 35 ++++++++++++++++++++++
2 files changed, 52 insertions(+)
diff --git a/lib/MooseX/LazyRequire.pm b/lib/MooseX/LazyRequire.pm
new file mode 100644
index 0000000..d95aa5e
--- /dev/null
+++ b/lib/MooseX/LazyRequire.pm
@@ -0,0 +1,17 @@
+package MooseX::LazyRequire;
+
+use Moose::Exporter;
+use aliased 'MooseX::LazyRequire::Meta::Attribute::Trait::LazyRequire';
+use namespace::autoclean;
+
+Moose::Exporter->setup_import_methods;
+
+sub init_meta {
+ my ($class, %options) = @_;
+ return Moose::Util::MetaRole::apply_metaclass_roles(
+ for_class => $options{for_class},
+ attribute_metaclass_roles => [LazyRequire],
+ );
+}
+
+1;
diff --git a/lib/MooseX/LazyRequire/Meta/Attribute/Trait/LazyRequire.pm b/lib/MooseX/LazyRequire/Meta/Attribute/Trait/LazyRequire.pm
new file mode 100644
index 0000000..2ff57ac
--- /dev/null
+++ b/lib/MooseX/LazyRequire/Meta/Attribute/Trait/LazyRequire.pm
@@ -0,0 +1,35 @@
+package MooseX::LazyRequire::Meta::Attribute::Trait::LazyRequire;
+
+use Moose::Role;
+use MooseX::Types::Moose qw/Bool/;
+use namespace::autoclean;
+
+has lazy_require => (
+ is => 'ro',
+ isa => Bool,
+ required => 1,
+ default => 0,
+);
+
+after _process_options => sub {
+ my ($class, $name, $options) = @_;
+ return unless $options->{lazy_require};
+
+ Moose->throw_error(
+ "You may not use both a builder or a default and lazy_require for one attribute ($name)",
+ data => $options,
+ ) if $options->{builder};
+
+ $options->{ lazy } = 1;
+ $options->{ required } = 1;
+ $options->{ default } = sub {
+ confess "Attribute $name must be provided before calling reader"
+ };
+};
+
+package # hide
+ Moose::Meta::Attribute::Custom::Trait::LazyRequire;
+
+sub register_implementation { 'MooseX::LazyRequire::Meta::Attribute::Trait::LazyRequire' }
+
+1;
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libmoosex-lazyrequire-perl.git
More information about the Pkg-perl-cvs-commits
mailing list