summaryrefslogtreecommitdiffstats
path: root/lib/MooseX/Bread
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2011-02-21 16:04:51 -0600
committerJesse Luehrs <doy@tozt.net>2011-02-21 16:04:51 -0600
commitb274df4c9da24b117a22e287acd03b3fa87233a8 (patch)
tree602aba197c8752ea4253bc8fbb950fb373f92903 /lib/MooseX/Bread
parent61839366b807e9e8f6818020508d765efed945b5 (diff)
downloadbread-board-declare-b274df4c9da24b117a22e287acd03b3fa87233a8.tar.gz
bread-board-declare-b274df4c9da24b117a22e287acd03b3fa87233a8.zip
rename MooseX::Bread::Board -> Bread::Board::Declare
Diffstat (limited to 'lib/MooseX/Bread')
-rw-r--r--lib/MooseX/Bread/Board.pm36
-rw-r--r--lib/MooseX/Bread/Board/BlockInjection.pm10
-rw-r--r--lib/MooseX/Bread/Board/ConstructorInjection.pm10
-rw-r--r--lib/MooseX/Bread/Board/Literal.pm10
-rw-r--r--lib/MooseX/Bread/Board/Meta/Role/Accessor.pm26
-rw-r--r--lib/MooseX/Bread/Board/Meta/Role/Attribute.pm185
-rw-r--r--lib/MooseX/Bread/Board/Meta/Role/Class.pm32
-rw-r--r--lib/MooseX/Bread/Board/Meta/Role/Instance.pm9
-rw-r--r--lib/MooseX/Bread/Board/Role/Object.pm36
-rw-r--r--lib/MooseX/Bread/Board/Role/Service.pm40
10 files changed, 0 insertions, 394 deletions
diff --git a/lib/MooseX/Bread/Board.pm b/lib/MooseX/Bread/Board.pm
deleted file mode 100644
index 56a0949..0000000
--- a/lib/MooseX/Bread/Board.pm
+++ /dev/null
@@ -1,36 +0,0 @@
-package MooseX::Bread::Board;
-use Moose::Exporter;
-
-use Bread::Board ();
-
-my (undef, undef, $init_meta) = Moose::Exporter->build_import_methods(
- install => ['import', 'unimport'],
- class_metaroles => {
- attribute => ['MooseX::Bread::Board::Meta::Role::Attribute'],
- class => ['MooseX::Bread::Board::Meta::Role::Class'],
- instance => ['MooseX::Bread::Board::Meta::Role::Instance'],
- },
- (Moose->VERSION >= 1.9900
- ? (role_metaroles => {
- applied_attribute =>
- ['MooseX::Bread::Board::Meta::Role::Attribute'],
- })
- : ()),
- base_class_roles => ['MooseX::Bread::Board::Role::Object'],
-);
-
-sub init_meta {
- my $package = shift;
- my %options = @_;
- if (my $meta = Class::MOP::class_of($options{for_class})) {
- if ($meta->isa('Class::MOP::Class')) {
- my @supers = $meta->superclasses;
- $meta->superclasses('Bread::Board::Container')
- if @supers == 1 && $supers[0] eq 'Moose::Object';
- }
- }
- $package->$init_meta(%options);
-}
-
-
-1;
diff --git a/lib/MooseX/Bread/Board/BlockInjection.pm b/lib/MooseX/Bread/Board/BlockInjection.pm
deleted file mode 100644
index e1dca1e..0000000
--- a/lib/MooseX/Bread/Board/BlockInjection.pm
+++ /dev/null
@@ -1,10 +0,0 @@
-package MooseX::Bread::Board::BlockInjection;
-use Moose;
-
-extends 'Bread::Board::BlockInjection';
-with 'MooseX::Bread::Board::Role::Service';
-
-__PACKAGE__->meta->make_immutable;
-no Moose;
-
-1;
diff --git a/lib/MooseX/Bread/Board/ConstructorInjection.pm b/lib/MooseX/Bread/Board/ConstructorInjection.pm
deleted file mode 100644
index f3b345b..0000000
--- a/lib/MooseX/Bread/Board/ConstructorInjection.pm
+++ /dev/null
@@ -1,10 +0,0 @@
-package MooseX::Bread::Board::ConstructorInjection;
-use Moose;
-
-extends 'Bread::Board::ConstructorInjection';
-with 'MooseX::Bread::Board::Role::Service';
-
-__PACKAGE__->meta->make_immutable;
-no Moose;
-
-1;
diff --git a/lib/MooseX/Bread/Board/Literal.pm b/lib/MooseX/Bread/Board/Literal.pm
deleted file mode 100644
index bf5944a..0000000
--- a/lib/MooseX/Bread/Board/Literal.pm
+++ /dev/null
@@ -1,10 +0,0 @@
-package MooseX::Bread::Board::Literal;
-use Moose;
-
-extends 'Bread::Board::Literal';
-with 'MooseX::Bread::Board::Role::Service';
-
-__PACKAGE__->meta->make_immutable;
-no Moose;
-
-1;
diff --git a/lib/MooseX/Bread/Board/Meta/Role/Accessor.pm b/lib/MooseX/Bread/Board/Meta/Role/Accessor.pm
deleted file mode 100644
index 10748e0..0000000
--- a/lib/MooseX/Bread/Board/Meta/Role/Accessor.pm
+++ /dev/null
@@ -1,26 +0,0 @@
-package MooseX::Bread::Board::Meta::Role::Accessor;
-use Moose::Role;
-
-around _inline_get => sub {
- my $orig = shift;
- my $self = shift;
- my ($instance) = @_;
-
- my $attr = $self->associated_attribute;
-
- return 'do {' . "\n"
- . 'my $val;' . "\n"
- . 'if (' . $self->_inline_has($instance) . ') {' . "\n"
- . '$val = ' . $self->$orig($instance) . ';' . "\n"
- . '}' . "\n"
- . 'else {' . "\n"
- . '$val = ' . $instance . '->get_service(\'' . $attr->name . '\')->get;' . "\n"
- . $self->_inline_check_constraint('$val')
- . '}' . "\n"
- . '$val' . "\n"
- . '}';
-};
-
-no Moose::Role;
-
-1;
diff --git a/lib/MooseX/Bread/Board/Meta/Role/Attribute.pm b/lib/MooseX/Bread/Board/Meta/Role/Attribute.pm
deleted file mode 100644
index 2622e84..0000000
--- a/lib/MooseX/Bread/Board/Meta/Role/Attribute.pm
+++ /dev/null
@@ -1,185 +0,0 @@
-package MooseX::Bread::Board::Meta::Role::Attribute;
-use Moose::Role;
-Moose::Util::meta_attribute_alias('Service');
-
-use Bread::Board::Types;
-use List::MoreUtils qw(any);
-
-use MooseX::Bread::Board::BlockInjection;
-use MooseX::Bread::Board::ConstructorInjection;
-use MooseX::Bread::Board::Literal;
-
-has service => (
- is => 'ro',
- isa => 'Bool',
- default => 1,
-);
-
-has block => (
- is => 'ro',
- isa => 'CodeRef',
- predicate => 'has_block',
-);
-
-# has_value is already a method
-has literal_value => (
- is => 'ro',
- isa => 'Str|CodeRef',
- init_arg => 'value',
- predicate => 'has_literal_value',
-);
-
-has lifecycle => (
- is => 'ro',
- isa => 'Str',
- predicate => 'has_lifecycle',
-);
-
-has dependencies => (
- is => 'ro',
- isa => 'Bread::Board::Service::Dependencies',
- coerce => 1,
- predicate => 'has_dependencies',
-);
-
-has constructor_name => (
- is => 'ro',
- isa => 'Str',
- predicate => 'has_constructor_name',
-);
-
-has associated_service => (
- is => 'rw',
- isa => 'Bread::Board::Service',
- predicate => 'has_associated_service',
-);
-
-after attach_to_class => sub {
- my $self = shift;
-
- return unless $self->service;
-
- my %params = (
- associated_attribute => $self,
- name => $self->name,
- ($self->has_lifecycle
- ? (lifecycle => $self->lifecycle)
- : ()),
- ($self->has_dependencies
- ? (dependencies => $self->dependencies)
- : ()),
- ($self->has_constructor_name
- ? (constructor_name => $self->constructor_name)
- : ()),
- );
-
- my $service;
- if ($self->has_block) {
- $service = MooseX::Bread::Board::BlockInjection->new(
- %params,
- block => $self->block,
- );
- }
- elsif ($self->has_literal_value) {
- $service = MooseX::Bread::Board::Literal->new(
- %params,
- value => $self->literal_value,
- );
- }
- elsif ($self->has_type_constraint) {
- my $tc = $self->type_constraint;
- if ($tc->isa('Moose::Meta::TypeConstraint::Class')) {
- $service = MooseX::Bread::Board::ConstructorInjection->new(
- %params,
- class => $tc->class,
- );
- }
- }
-
- $self->associated_service($service) if $service;
-};
-
-after _process_options => sub {
- my $class = shift;
- my ($name, $opts) = @_;
-
- return unless exists $opts->{default}
- || exists $opts->{builder};
- return unless exists $opts->{class}
- || exists $opts->{block}
- || exists $opts->{value};
-
- # XXX: uggggh
- return if any { $_ eq 'Moose::Meta::Attribute::Native::Trait::String'
- || $_ eq 'Moose::Meta::Attribute::Native::Trait::Counter' }
- @{ $opts->{traits} };
-
- my $exists = exists($opts->{default}) ? 'default' : 'builder';
- die "$exists is not valid when Bread::Board service options are set";
-};
-
-around get_value => sub {
- my $orig = shift;
- my $self = shift;
- my ($instance) = @_;
-
- return $self->$orig($instance)
- if $self->has_value($instance);
-
- my $val = $instance->get_service($self->name)->get;
-
- $self->verify_against_type_constraint($val, instance => $instance)
- if $self->has_type_constraint;
-
- if ($self->should_auto_deref) {
- if (ref($val) eq 'ARRAY') {
- return wantarray ? @$val : $val;
- }
- elsif (ref($val) eq 'HASH') {
- return wantarray ? %$val : $val;
- }
- else {
- die 'XXX';
- }
- }
- else {
- return $val;
- }
-};
-
-if (Moose->VERSION > 1.9900) {
- around _inline_instance_get => sub {
- my $orig = shift;
- my $self = shift;
- my ($instance) = @_;
- return 'do {' . "\n"
- . 'my $val;' . "\n"
- . 'if (' . $self->_inline_instance_has($instance) . ') {' . "\n"
- . '$val = ' . $self->$orig($instance) . ';' . "\n"
- . '}' . "\n"
- . 'else {' . "\n"
- . '$val = ' . $instance . '->get_service(\'' . $self->name . '\')->get;' . "\n"
- . $self->_inline_check_constraint(
- '$val', '$type_constraint', '$type_constraint_obj'
- )
- . '}' . "\n"
- . '$val' . "\n"
- . '}';
- };
-}
-else {
- around accessor_metaclass => sub {
- my $orig = shift;
- my $self = shift;
-
- return Moose::Meta::Class->create_anon_class(
- superclasses => [ $self->$orig(@_) ],
- roles => [ 'MooseX::Bread::Board::Meta::Role::Accessor' ],
- cache => 1
- )->name;
- };
-}
-
-no Moose::Role;
-
-1;
diff --git a/lib/MooseX/Bread/Board/Meta/Role/Class.pm b/lib/MooseX/Bread/Board/Meta/Role/Class.pm
deleted file mode 100644
index 66c18ac..0000000
--- a/lib/MooseX/Bread/Board/Meta/Role/Class.pm
+++ /dev/null
@@ -1,32 +0,0 @@
-package MooseX::Bread::Board::Meta::Role::Class;
-use Moose::Role;
-
-use Bread::Board::Service;
-use List::MoreUtils qw(any);
-
-sub get_all_services {
- my $self = shift;
- return map { $_->associated_service }
- grep { $_->has_associated_service }
- grep { Moose::Util::does_role($_, 'MooseX::Bread::Board::Meta::Role::Attribute') }
- $self->get_all_attributes;
-}
-
-before superclasses => sub {
- my $self = shift;
-
- return unless @_;
-
- die "Multiple inheritance is not supported for MooseX::Bread::Board classes"
- if @_ > 1;
-
- return if $_[0]->isa('Bread::Board::Container');
-
- die "Cannot inherit from " . join(', ', @_)
- . " because MooseX::Bread::Board classes must inherit"
- . " from Bread::Board::Container";
-};
-
-no Moose::Role;
-
-1;
diff --git a/lib/MooseX/Bread/Board/Meta/Role/Instance.pm b/lib/MooseX/Bread/Board/Meta/Role/Instance.pm
deleted file mode 100644
index 93648e2..0000000
--- a/lib/MooseX/Bread/Board/Meta/Role/Instance.pm
+++ /dev/null
@@ -1,9 +0,0 @@
-package MooseX::Bread::Board::Meta::Role::Instance;
-use Moose::Role;
-
-# XXX: ugh, this should be settable at the attr level, fix this in moose
-sub inline_get_is_lvalue { 0 }
-
-no Moose::Role;
-
-1;
diff --git a/lib/MooseX/Bread/Board/Role/Object.pm b/lib/MooseX/Bread/Board/Role/Object.pm
deleted file mode 100644
index e99e5ed..0000000
--- a/lib/MooseX/Bread/Board/Role/Object.pm
+++ /dev/null
@@ -1,36 +0,0 @@
-package MooseX::Bread::Board::Role::Object;
-use Moose::Role;
-
-has name => (
- is => 'rw',
- isa => 'Str',
- lazy => 1,
- default => sub { shift->meta->name },
-);
-
-sub BUILD { }
-after BUILD => sub {
- my $self = shift;
-
- my $meta = Class::MOP::class_of($self);
-
- for my $service ($meta->get_all_services) {
- if ($service->isa('MooseX::Bread::Board::BlockInjection')) {
- my $block = $service->block;
- $self->add_service(
- $service->clone(
- block => sub {
- $block->(@_, $self)
- },
- )
- );
- }
- else {
- $self->add_service($service->clone);
- }
- }
-};
-
-no Moose::Role;
-
-1;
diff --git a/lib/MooseX/Bread/Board/Role/Service.pm b/lib/MooseX/Bread/Board/Role/Service.pm
deleted file mode 100644
index 5e06eee..0000000
--- a/lib/MooseX/Bread/Board/Role/Service.pm
+++ /dev/null
@@ -1,40 +0,0 @@
-package MooseX::Bread::Board::Role::Service;
-use Moose::Role;
-
-has associated_attribute => (
- is => 'ro',
- isa => 'Class::MOP::Attribute',
- required => 1,
- weak_ref => 1,
-);
-
-around get => sub {
- my $orig = shift;
- my $self = shift;
-
- my $container = $self->parent_container;
-
- if ($self->associated_attribute->has_value($container)) {
- return $self->associated_attribute->get_value($container);
- }
-
- return $self->$orig(@_);
-};
-
-sub parent_container {
- my $self = shift;
-
- my $container = $self;
- until (!defined($container)
- || ($container->isa('Bread::Board::Container')
- && $container->does('MooseX::Bread::Board::Role::Object'))) {
- $container = $container->parent;
- }
- die "Couldn't find associated object!" unless defined $container;
-
- return $container;
-}
-
-no Moose::Role;
-
-1;