• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

lib/CatalystX/Component/H03-May-2022-26892

t/H13-Jan-2014-381279

ChangesH A D13-Jan-20141.6 KiB6242

LICENSEH A D13-Jan-201417.9 KiB380292

MANIFESTH A D13-Jan-2014387 2120

META.jsonH A D13-Jan-20142.1 KiB8179

META.ymlH A D13-Jan-20141.1 KiB4645

Makefile.PLH A D13-Jan-20141.8 KiB8870

READMEH A D13-Jan-20143.1 KiB11478

dist.iniH A D13-Jan-2014486 2319

README

1NAME
2    CatalystX::Component::Traits - Automatic Trait Loading and Resolution
3    for Catalyst Components
4
5SYNOPSIS
6        package Catalyst::Model::SomeModel;
7        with 'CatalystX::Component::Traits';
8
9        package MyApp::Model::MyModel;
10        use parent 'Catalyst::Model::SomeModel';
11
12        package MyApp;
13
14        __PACKAGE__->config('Model::MyModel' => {
15            traits => ['SearchedForTrait', '+Fully::Qualified::Trait']
16        });
17
18DESCRIPTION
19    Adds a "COMPONENT" in Catalyst::Component method to your Catalyst
20    component base class that reads the optional "traits" parameter from app
21    and component config and instantiates the component subclass with those
22    traits using "new_with_traits" in MooseX::Traits from
23    MooseX::Traits::Pluggable.
24
25TRAIT SEARCH
26    Trait names qualified with a "+" are taken to be full package names.
27
28    Unqualified names are searched for, using the algorithm described below.
29
30  EXAMPLE
31    Suppose your inheritance hierarchy is:
32
33        MyApp::Model::MyModel
34        Catalyst::Model::CatModel
35        Catalyst::Model
36        Catalyst::Component
37        Moose::Object
38
39    The configuration is:
40
41        traits => ['Foo']
42
43    The package search order for "Foo" will be:
44
45        MyApp::TraitFor::Model::CatModel::Foo
46        Catalyst::TraitFor::Model::CatModel::Foo
47
48  A MORE PATHOLOGICAL EXAMPLE
49    For:
50
51        My::App::Controller::AController
52        CatalystX::Something::ControllerBase::SomeController
53        Catalyst::Controller
54        Catalyst::Model
55        Catalyst::Component
56        Moose::Object
57
58    With:
59
60        traits => ['Foo']
61
62    Search order for "Foo" will be:
63
64        My::App::TraitFor::Controller::SomeController::Foo
65        CatalystX::Something::TraitFor::Controller::SomeController::Foo
66
67    The "Base" after (M|V|C) is automatically removed.
68
69TRAIT MERGING
70    Traits from component class config and app config are automatically
71    merged if you set the "_trait_merge" attribute default, e.g.:
72
73        has '+_trait_merge' => (default => 1);
74
75    You can remove component class config traits by prefixing their names
76    with a "-" in the app config traits.
77
78    For example:
79
80        package Catalyst::Model::Foo;
81        has '+_trait_merge' => (default => 1);
82        __PACKAGE__->config->{traits} = [qw/Foo Bar/];
83
84        package MyApp;
85        __PACKAGE__->config->{'Model::Foo'}{traits} = [qw/-Foo Baz/];
86
87    Will load the traits:
88
89        Bar Baz
90
91AUTHOR
92    Rafael Kitover, "<rkitover@cpan.org>"
93
94CONTRIBUTORS
95    Tomas Doran, "<bobtfish@bobtfish.net>"
96
97BUGS
98    Please report any bugs or feature requests to
99    "bug-catalystx-component-traits at rt.cpan.org", or through the web
100    interface at
101    <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=CatalystX-Component-Trai
102    ts>. I will be notified, and then you'll automatically be notified of
103    progress on your bug as I make changes.
104
105ACKNOWLEDGEMENTS
106    Matt S. Trout and Tomas Doran helped me with the current design.
107
108COPYRIGHT & LICENSE
109    Copyright (c) 2014, Rafael Kitover
110
111    This program is free software; you can redistribute it and/or modify it
112    under the same terms as Perl itself.
113
114