1Catalyst::Utils(3)    User Contributed Perl Documentation   Catalyst::Utils(3)
2
3
4

NAME

6       Catalyst::Utils - The Catalyst Utils
7

SYNOPSIS

9       See Catalyst.
10

DESCRIPTION

12       Catalyst Utilities.
13

METHODS

15   appprefix($class)
16           MyApp::Foo becomes myapp_foo
17
18   class2appclass($class);
19           MyApp::Controller::Foo::Bar becomes MyApp
20           My::App::Controller::Foo::Bar becomes My::App
21
22   class2classprefix($class);
23           MyApp::Controller::Foo::Bar becomes MyApp::Controller
24           My::App::Controller::Foo::Bar becomes My::App::Controller
25
26   class2classsuffix($class);
27           MyApp::Controller::Foo::Bar becomes Controller::Foo::Bar
28
29   class2env($class);
30       Returns the environment name for class.
31
32           MyApp becomes MYAPP
33           My::App becomes MY_APP
34
35   class2prefix( $class, $case );
36       Returns the uri prefix for a class. If case is false the prefix is
37       converted to lowercase.
38
39           My::App::Controller::Foo::Bar becomes foo/bar
40
41   class2tempdir( $class [, $create ] );
42       Returns a tempdir for a class. If create is true it will try to create
43       the path.
44
45           My::App becomes /tmp/my/app
46           My::App::Controller::Foo::Bar becomes /tmp/my/app/c/foo/bar
47
48   home($class)
49       Returns home directory for given class.
50
51   dist_indicator_file_list
52       Returns a list of files which can be tested to check if you're inside a
53       CPAN distribution which is not yet installed.
54
55       These are:
56
57       Makefile.PL
58       Build.PL
59       dist.ini
60       cpanfile
61
62   prefix($class, $name);
63       Returns a prefixed action.
64
65           MyApp::Controller::Foo::Bar, yada becomes foo/bar/yada
66
67   request($uri)
68       Returns an HTTP::Request object for a uri.
69
70   ensure_class_loaded($class_name, \%opts)
71       Loads the class unless it already has been loaded.
72
73       If $opts{ignore_loaded} is true always tries the require whether the
74       package already exists or not. Only pass this if you're either (a) sure
75       you know the file exists on disk or (b) have code to catch the file not
76       found exception that will result if it doesn't.
77
78   merge_hashes($hashref, $hashref)
79       Base code to recursively merge two hashes together with right-hand
80       precedence.
81
82   env_value($class, $key)
83       Checks for and returns an environment value. For instance, if $key is
84       'home', then this method will check for and return the first value it
85       finds, looking at $ENV{MYAPP_HOME} and $ENV{CATALYST_HOME}.
86
87   term_width
88       Try to guess terminal width to use with formatting of debug output
89
90       All you need to get this work, is:
91
92       1) Install Term::Size::Any, or
93
94       2) Export $COLUMNS from your shell.
95
96       (Warning to bash users: 'echo $COLUMNS' may be showing you the bash
97       variable, not $ENV{COLUMNS}. 'export COLUMNS=$COLUMNS' and you should
98       see that 'env' now lists COLUMNS.)
99
100       As last resort, default value of 80 chars will be used.
101
102       Calling "term_width" with a true value will cause it to be
103       recalculated; you can use this to cause it to get recalculated when
104       your terminal is resized like this
105
106        $SIG{WINCH} = sub { Catalyst::Utils::term_width(1) };
107
108   resolve_namespace
109       Method which adds the namespace for plugins and actions.
110
111         __PACKAGE__->setup(qw(MyPlugin));
112
113         # will load Catalyst::Plugin::MyPlugin
114
115   build_middleware (@args)
116       Internal application that converts a single middleware definition (see
117       "psgi_middleware" in Catalyst) into an actual instance of middleware.
118
119   apply_registered_middleware ($psgi)
120       Given a $psgi reference, wrap all the "registered_middlewares" in
121       Catalyst around it and return the wrapped version.
122
123       This exists to deal with the fact Catalyst registered middleware can be
124       either an object with a wrap method or a coderef.
125
126   inject_component
127       Used to add components at runtime:
128
129           into        The Catalyst package to inject into (e.g. My::App)
130           component   The component package to inject
131           traits      (Optional) ArrayRef of L<Moose::Role>s that the component should consume.
132           as          An optional moniker to use as the package name for the derived component
133
134       For example:
135
136           Catalyst::Utils::inject_component( into => My::App, component => Other::App::Controller::Apple )
137
138               The above will create 'My::App::Controller::Other::App::Controller::Apple'
139
140           Catalyst::Utils::inject_component( into => My::App, component => Other::App::Controller::Apple, as => Apple )
141
142               The above will create 'My::App::Controller::Apple'
143
144           Catalyst::Utils::inject_component( into => $myapp, component => 'MyRootV', as => 'Controller::Root' );
145
146       Will inject Controller, Model, and View components into your Catalyst
147       application at setup (run)time. It does this by creating a new package
148       on-the-fly, having that package extend the given component, and then
149       having Catalyst setup the new component (via $app->setup_component).
150
151       NOTE: This is basically a core version of CatalystX::InjectComponent.
152       If you were using that you can now use this safely instead.  Going
153       forward changes required to make this work will be synchronized with
154       the core method.
155
156       NOTE: The 'traits' option is unique to the Catalyst::Utils version of
157       this feature.
158
159       NOTE: These injected components really need to be a Catalyst::Component
160       and a Moose based class.
161

PSGI Helpers

163       Utility functions to make it easier to work with PSGI applications
164       under Catalyst
165
166   env_at_path_prefix
167       Localize $env under the current controller path prefix:
168
169           package MyApp::Controller::User;
170
171           use Catalyst::Utils;
172
173           use base 'Catalyst::Controller';
174
175           sub name :Local {
176             my ($self, $c) = @_;
177             my $env = $c->Catalyst::Utils::env_at_path_prefix;
178           }
179
180       Assuming you have a request like GET /user/name:
181
182       In the example case $env will have PATH_INFO of '/name' instead of
183       '/user/name' and SCRIPT_NAME will now be '/user'.
184
185   env_at_action
186       Localize $env under the current action namespace.
187
188           package MyApp::Controller::User;
189
190           use Catalyst::Utils;
191
192           use base 'Catalyst::Controller';
193
194           sub name :Local {
195             my ($self, $c) = @_;
196             my $env = $c->Catalyst::Utils::env_at_action;
197           }
198
199       Assuming you have a request like GET /user/name:
200
201       In the example case $env will have PATH_INFO of '/' instead of
202       '/user/name' and SCRIPT_NAME will now be '/user/name'.
203
204       Alternatively, assuming you have a request like GET /user/name/foo:
205
206       In this example case $env will have PATH_INFO of '/foo' instead of
207       '/user/name/foo' and SCRIPT_NAME will now be '/user/name'.
208
209       This is probably a common case where you want to mount a PSGI
210       application under an action but let the Args fall through to the PSGI
211       app.
212
213   env_at_request_uri
214       Localize $env under the current request URI:
215
216           package MyApp::Controller::User;
217
218           use Catalyst::Utils;
219
220           use base 'Catalyst::Controller';
221
222           sub name :Local Args(1) {
223             my ($self, $c, $id) = @_;
224             my $env = $c->Catalyst::Utils::env_at_request_uri
225           }
226
227       Assuming you have a request like GET /user/name/hello:
228
229       In the example case $env will have PATH_INFO of '/' instead of
230       '/user/name' and SCRIPT_NAME will now be '/user/name/hello'.
231

AUTHORS

233       Catalyst Contributors, see Catalyst.pm
234
236       This library is free software. You can redistribute it and/or modify it
237       under the same terms as Perl itself.
238
239
240
241perl v5.38.0                      2023-07-24                Catalyst::Utils(3)
Impressum