[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