CatalystX-I18N
view release on metacpan or search on metacpan
lib/CatalystX/I18N/Role/All.pm view on Meta::CPAN
# ============================================================================
package CatalystX::I18N::Role::All;
# ============================================================================
use namespace::autoclean;
use Moose::Role;
requires qw(response_class request_class);
with qw(
CatalystX::I18N::Role::Base
CatalystX::I18N::Role::DateTime
CatalystX::I18N::Role::Maketext
CatalystX::I18N::Role::GetLocale
CatalystX::I18N::Role::NumberFormat
CatalystX::I18N::Role::Collate
);
# CatalystX::I18N::Role::PosixLocale
before 'setup' => sub {
my ($class) = @_;
for my $type (qw(Response Request)) {
my $accessor_method = lc($type).'_class';
my $super_class = $class->$accessor_method();
# Get role
my $role_class = 'CatalystX::I18N::TraitFor::'.$type;
Class::Load::load_class($role_class);
# Check if role has already been applied
next
if grep { $_->meta->does_role($role_class) } $super_class->meta->linearized_isa;
# Build anon class with our roles
my $meta = Moose::Meta::Class->create_anon_class(
superclasses => [$super_class],
roles => [$role_class],
cache => 1,
);
$class->$accessor_method($meta->name);
}
};
around 'setup_component' => sub {
my $orig = shift;
my ($class,$component) = @_;
Class::Load::load_class($component);
# Load View::TT role
if ($component->isa('Catalyst::View::TT')
&& $component->can('meta')) {
my $component_meta = $component->meta;
unless ($component_meta->does_role('CatalystX::I18N::TraitFor::ViewTT')) {
if ($component_meta->is_mutable) {
Moose::Util::apply_all_roles($component_meta, 'CatalystX::I18N::TraitFor::ViewTT')
}
}
}
return $class->$orig($component);
};
no Moose::Role;
1;
=encoding utf8
=head1 NAME
CatalystX::I18N::Role::All - Load all available roles
=head1 SYNOPSIS
package MyApp::Catalyst;
use Catalyst qw/MyPlugins
CatalystX::I18N::Role::All/;
=head1 DESCRIPTION
This role is just a shortcut for loading every I18N role and trait (except POSIX)
individually.
use Catalyst qw/CatalystX::I18N::Role::All/;
Is same as
use Catalyst qw/
+CatalystX::I18N::Role::Base
+CatalystX::I18N::Role::GetLocale
+CatalystX::I18N::Role::DateTime
+CatalystX::I18N::Role::Maketext
+CatalystX::I18N::Role::Collate
+CatalystX::I18N::Role::NumberFormat
/;
use CatalystX::RoleApplicator;
__PACKAGE__->apply_request_class_roles(qw/CatalystX::I18N::TraitFor::Request/);
__PACKAGE__->apply_response_class_roles(qw/CatalystX::I18N::TraitFor::Response/);
=head1 AUTHOR
Maroš Kollár
CPAN ID: MAROS
maros [at] k-1.com
L<http://www.k-1.com>
( run in 1.709 second using v1.01-cache-2.11-cpan-fe3c2283af0 )