Filename | /usr/lib/perl5/Template/Config.pm |
Statements | Executed 217 statements in 3.10ms |
Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
---|---|---|---|---|---|
19 | 8 | 1 | 16.6ms | 58.1ms | load | Template::Config::
12 | 7 | 4 | 242µs | 2.73ms | iterator | Template::Config::
19 | 1 | 1 | 182µs | 182µs | CORE:subst (opcode) | Template::Config::
1 | 1 | 1 | 64µs | 33.7ms | parser | Template::Config::
1 | 1 | 1 | 53µs | 23.3ms | context | Template::Config::
1 | 1 | 1 | 42µs | 4.14ms | filters | Template::Config::
1 | 1 | 1 | 40µs | 1.87ms | plugins | Template::Config::
1 | 1 | 1 | 32µs | 12.0ms | stash | Template::Config::
1 | 1 | 1 | 25µs | 124µs | provider | Template::Config::
1 | 1 | 1 | 25µs | 23.4ms | service | Template::Config::
1 | 1 | 1 | 23µs | 28µs | BEGIN@21 | Template::Config::
1 | 1 | 1 | 12µs | 258µs | BEGIN@24 | Template::Config::
1 | 1 | 1 | 11µs | 28µs | BEGIN@22 | Template::Config::
1 | 1 | 1 | 10µs | 70µs | BEGIN@23 | Template::Config::
0 | 0 | 0 | 0s | 0s | constants | Template::Config::
0 | 0 | 0 | 0s | 0s | instdir | Template::Config::
0 | 0 | 0 | 0s | 0s | preload | Template::Config::
0 | 0 | 0 | 0s | 0s | |
0 | 0 | 0 | 0s | 0s | TIEHANDLE | Template::TieString::
Line | State ments |
Time on line |
Calls | Time in subs |
Code |
---|---|---|---|---|---|
1 | #============================================================= -*-perl-*- | ||||
2 | # | ||||
3 | # Template::Config | ||||
4 | # | ||||
5 | # DESCRIPTION | ||||
6 | # Template Toolkit configuration module. | ||||
7 | # | ||||
8 | # AUTHOR | ||||
9 | # Andy Wardley <abw@wardley.org> | ||||
10 | # | ||||
11 | # COPYRIGHT | ||||
12 | # Copyright (C) 1996-2007 Andy Wardley. All Rights Reserved. | ||||
13 | # | ||||
14 | # This module is free software; you can redistribute it and/or | ||||
15 | # modify it under the same terms as Perl itself. | ||||
16 | # | ||||
17 | #======================================================================== | ||||
18 | |||||
19 | package Template::Config; | ||||
20 | |||||
21 | 3 | 29µs | 2 | 33µs | # spent 28µs (23+5) within Template::Config::BEGIN@21 which was called:
# once (23µs+5µs) by Template::BEGIN@27 at line 21 # spent 28µs making 1 call to Template::Config::BEGIN@21
# spent 5µs making 1 call to strict::import |
22 | 3 | 33µs | 2 | 45µs | # spent 28µs (11+17) within Template::Config::BEGIN@22 which was called:
# once (11µs+17µs) by Template::BEGIN@27 at line 22 # spent 28µs making 1 call to Template::Config::BEGIN@22
# spent 17µs making 1 call to warnings::import |
23 | 3 | 49µs | 2 | 130µs | # spent 70µs (10+60) within Template::Config::BEGIN@23 which was called:
# once (10µs+60µs) by Template::BEGIN@27 at line 23 # spent 70µs making 1 call to Template::Config::BEGIN@23
# spent 60µs making 1 call to base::import |
24 | 1 | 10µs | 1 | 247µs | # spent 258µs (12+247) within Template::Config::BEGIN@24 which was called:
# once (12µs+247µs) by Template::BEGIN@27 at line 27 # spent 247µs making 1 call to vars::import |
25 | $PARSER $PROVIDER $PLUGINS $FILTERS $ITERATOR | ||||
26 | $LATEX_PATH $PDFLATEX_PATH $DVIPS_PATH | ||||
27 | 2 | 1.03ms | 1 | 258µs | $STASH $SERVICE $CONTEXT $CONSTANTS @PRELOAD ); # spent 258µs making 1 call to Template::Config::BEGIN@24 |
28 | |||||
29 | 1 | 500ns | $VERSION = 2.75; | ||
30 | 1 | 600ns | $DEBUG = 0 unless defined $DEBUG; | ||
31 | 1 | 400ns | $ERROR = ''; | ||
32 | 1 | 300ns | $CONTEXT = 'Template::Context'; | ||
33 | 1 | 300ns | $FILTERS = 'Template::Filters'; | ||
34 | 1 | 300ns | $ITERATOR = 'Template::Iterator'; | ||
35 | 1 | 300ns | $PARSER = 'Template::Parser'; | ||
36 | 1 | 200ns | $PLUGINS = 'Template::Plugins'; | ||
37 | 1 | 300ns | $PROVIDER = 'Template::Provider'; | ||
38 | 1 | 300ns | $SERVICE = 'Template::Service'; | ||
39 | 1 | 400ns | $STASH = 'Template::Stash::XS'; | ||
40 | 1 | 300ns | $CONSTANTS = 'Template::Namespace::Constants'; | ||
41 | |||||
42 | 1 | 2µs | @PRELOAD = ( $CONTEXT, $FILTERS, $ITERATOR, $PARSER, | ||
43 | $PLUGINS, $PROVIDER, $SERVICE, $STASH ); | ||||
44 | |||||
45 | # the following is set at installation time by the Makefile.PL | ||||
46 | 1 | 400ns | $INSTDIR = ''; | ||
47 | |||||
48 | |||||
49 | #======================================================================== | ||||
50 | # --- CLASS METHODS --- | ||||
51 | #======================================================================== | ||||
52 | |||||
53 | #------------------------------------------------------------------------ | ||||
54 | # preload($module, $module, ...) | ||||
55 | # | ||||
56 | # Preloads all the standard TT modules that are likely to be used, along | ||||
57 | # with any other passed as arguments. | ||||
58 | #------------------------------------------------------------------------ | ||||
59 | |||||
60 | sub preload { | ||||
61 | my $class = shift; | ||||
62 | |||||
63 | foreach my $module (@PRELOAD, @_) { | ||||
64 | $class->load($module) || return; | ||||
65 | }; | ||||
66 | return 1; | ||||
67 | } | ||||
68 | |||||
69 | |||||
70 | #------------------------------------------------------------------------ | ||||
71 | # load($module) | ||||
72 | # | ||||
73 | # Load a module via require(). Any occurences of '::' in the module name | ||||
74 | # are be converted to '/' and '.pm' is appended. Returns 1 on success | ||||
75 | # or undef on error. Use $class->error() to examine the error string. | ||||
76 | #------------------------------------------------------------------------ | ||||
77 | |||||
78 | # spent 58.1ms (16.6+41.5) within Template::Config::load which was called 19 times, avg 3.06ms/call:
# 12 times (1.43ms+576µs) by Template::Config::iterator at line 176, avg 168µs/call
# once (5.46ms+28.0ms) by Template::Config::parser at line 102
# once (469µs+11.5ms) by Template::Config::stash at line 194
# once (4.18ms+703µs) by Template::Config::context at line 212
# once (3.55ms+488µs) by Template::Config::filters at line 158
# once (1.50ms+246µs) by Template::Config::plugins at line 139
# once (18µs+10µs) by Template::Config::service at line 230
# once (11µs+13µs) by Template::Config::provider at line 120 | ||||
79 | 19 | 30µs | my ($class, $module) = @_; | ||
80 | 19 | 267µs | 19 | 182µs | $module =~ s[::][/]g; # spent 182µs making 19 calls to Template::Config::CORE:subst, avg 10µs/call |
81 | 19 | 11µs | $module .= '.pm'; | ||
82 | 38 | 977µs | eval { require $module; }; | ||
83 | 19 | 190µs | return $@ ? $class->error("failed to load $module: $@") : 1; | ||
84 | } | ||||
85 | |||||
86 | |||||
87 | #------------------------------------------------------------------------ | ||||
88 | # parser(\%params) | ||||
89 | # | ||||
90 | # Instantiate a new parser object of the class whose name is denoted by | ||||
91 | # the package variable $PARSER (default: Template::Parser). Returns | ||||
92 | # a reference to a newly instantiated parser object or undef on error. | ||||
93 | # The class error() method can be called without arguments to examine | ||||
94 | # the error message generated by this failure. | ||||
95 | #------------------------------------------------------------------------ | ||||
96 | |||||
97 | # spent 33.7ms (64µs+33.7) within Template::Config::parser which was called:
# once (64µs+33.7ms) by Template::Provider::_compile at line 838 of Template/Provider.pm | ||||
98 | 1 | 800ns | my $class = shift; | ||
99 | 1 | 3µs | my $params = defined($_[0]) && ref($_[0]) eq 'HASH' | ||
100 | ? shift : { @_ }; | ||||
101 | |||||
102 | 1 | 4µs | 1 | 33.4ms | return undef unless $class->load($PARSER); # spent 33.4ms making 1 call to Template::Config::load |
103 | 1 | 18µs | 1 | 254µs | return $PARSER->new($params) # spent 254µs making 1 call to Template::Parser::new |
104 | || $class->error("failed to create parser: ", $PARSER->error); | ||||
105 | } | ||||
106 | |||||
107 | |||||
108 | #------------------------------------------------------------------------ | ||||
109 | # provider(\%params) | ||||
110 | # | ||||
111 | # Instantiate a new template provider object (default: Template::Provider). | ||||
112 | # Returns an object reference or undef on error, as above. | ||||
113 | #------------------------------------------------------------------------ | ||||
114 | |||||
115 | # spent 124µs (25+98) within Template::Config::provider which was called:
# once (25µs+98µs) by Template::Context::_init at line 837 of Template/Context.pm | ||||
116 | 1 | 800ns | my $class = shift; | ||
117 | 1 | 2µs | my $params = defined($_[0]) && ref($_[0]) eq 'HASH' | ||
118 | ? shift : { @_ }; | ||||
119 | |||||
120 | 1 | 3µs | 1 | 25µs | return undef unless $class->load($PROVIDER); # spent 25µs making 1 call to Template::Config::load |
121 | 1 | 16µs | 1 | 0s | return $PROVIDER->new($params) # spent 74µs making 1 call to Template::Base::new, recursion: max depth 3, sum of overlapping time 74µs |
122 | || $class->error("failed to create template provider: ", | ||||
123 | $PROVIDER->error); | ||||
124 | } | ||||
125 | |||||
126 | |||||
127 | #------------------------------------------------------------------------ | ||||
128 | # plugins(\%params) | ||||
129 | # | ||||
130 | # Instantiate a new plugins provider object (default: Template::Plugins). | ||||
131 | # Returns an object reference or undef on error, as above. | ||||
132 | #------------------------------------------------------------------------ | ||||
133 | |||||
134 | # spent 1.87ms (40µs+1.83) within Template::Config::plugins which was called:
# once (40µs+1.83ms) by Template::Context::_init at line 837 of Template/Context.pm | ||||
135 | 1 | 700ns | my $class = shift; | ||
136 | 1 | 2µs | my $params = defined($_[0]) && ref($_[0]) eq 'HASH' | ||
137 | ? shift : { @_ }; | ||||
138 | |||||
139 | 1 | 2µs | 1 | 1.75ms | return undef unless $class->load($PLUGINS); # spent 1.75ms making 1 call to Template::Config::load |
140 | 1 | 25µs | 1 | 0s | return $PLUGINS->new($params) # spent 77µs making 1 call to Template::Base::new, recursion: max depth 3, sum of overlapping time 77µs |
141 | || $class->error("failed to create plugin provider: ", | ||||
142 | $PLUGINS->error); | ||||
143 | } | ||||
144 | |||||
145 | |||||
146 | #------------------------------------------------------------------------ | ||||
147 | # filters(\%params) | ||||
148 | # | ||||
149 | # Instantiate a new filters provider object (default: Template::Filters). | ||||
150 | # Returns an object reference or undef on error, as above. | ||||
151 | #------------------------------------------------------------------------ | ||||
152 | |||||
153 | # spent 4.14ms (42µs+4.10) within Template::Config::filters which was called:
# once (42µs+4.10ms) by Template::Context::_init at line 837 of Template/Context.pm | ||||
154 | 1 | 1µs | my $class = shift; | ||
155 | 1 | 2µs | my $params = defined($_[0]) && ref($_[0]) eq 'HASH' | ||
156 | ? shift : { @_ }; | ||||
157 | |||||
158 | 1 | 3µs | 1 | 4.04ms | return undef unless $class->load($FILTERS); # spent 4.04ms making 1 call to Template::Config::load |
159 | 1 | 21µs | 1 | 0s | return $FILTERS->new($params) # spent 54µs making 1 call to Template::Base::new, recursion: max depth 3, sum of overlapping time 54µs |
160 | || $class->error("failed to create filter provider: ", | ||||
161 | $FILTERS->error); | ||||
162 | } | ||||
163 | |||||
164 | |||||
165 | #------------------------------------------------------------------------ | ||||
166 | # iterator(\@list) | ||||
167 | # | ||||
168 | # Instantiate a new Template::Iterator object (default: Template::Iterator). | ||||
169 | # Returns an object reference or undef on error, as above. | ||||
170 | #------------------------------------------------------------------------ | ||||
171 | |||||
172 | # spent 2.73ms (242µs+2.49) within Template::Config::iterator which was called 12 times, avg 228µs/call:
# 5 times (87µs+250µs) by Template::Document::__ANON__[/usr/share/koha/opac/htdocs/opac-tmpl/prog/en-NZ/includes/opac-facets.inc:32] at line 16 of /usr/share/koha/opac/htdocs/opac-tmpl/prog/en-NZ/includes/opac-facets.inc, avg 67µs/call
# 2 times (36µs+88µs) by Template::Document::__ANON__[/usr/share/koha/opac/htdocs/opac-tmpl/prog/en-NZ/includes/page-numbers.inc:31] at line 10 of /usr/share/koha/opac/htdocs/opac-tmpl/prog/en-NZ/includes/page-numbers.inc, avg 62µs/call
# once (50µs+1.78ms) by Template::Document::__ANON__[/usr/share/koha/opac/htdocs/opac-tmpl/prog/en-NZ/includes/masthead.inc:111] at line 76 of /usr/share/koha/opac/htdocs/opac-tmpl/prog/en-NZ/includes/masthead.inc
# once (31µs+229µs) by Template::Document::__ANON__[/usr/share/koha/opac/htdocs/opac-tmpl/prog/en-NZ/includes/opac-facets.inc:32] at line 18 of /usr/share/koha/opac/htdocs/opac-tmpl/prog/en-NZ/includes/opac-facets.inc
# once (10µs+77µs) by Template::Document::__ANON__[/usr/share/koha/opac/htdocs/opac-tmpl/prog/en-NZ/modules/opac-results.tt:541] at line 389 of /usr/share/koha/opac/htdocs/opac-tmpl/prog/en-NZ/modules/opac-results.tt
# once (19µs+45µs) by Template::Document::__ANON__[/usr/share/koha/opac/htdocs/opac-tmpl/prog/en-NZ/modules/opac-results.tt:541] at line 518 of /usr/share/koha/opac/htdocs/opac-tmpl/prog/en-NZ/modules/opac-results.tt
# once (8µs+21µs) by Template::Document::__ANON__[/usr/share/koha/opac/htdocs/opac-tmpl/prog/en-NZ/modules/opac-results.tt:541] at line 390 of /usr/share/koha/opac/htdocs/opac-tmpl/prog/en-NZ/modules/opac-results.tt | ||||
173 | 12 | 18µs | my $class = shift; | ||
174 | 12 | 37µs | my $list = shift; | ||
175 | |||||
176 | 12 | 54µs | 12 | 2.01ms | return undef unless $class->load($ITERATOR); # spent 2.01ms making 12 calls to Template::Config::load, avg 168µs/call |
177 | 12 | 161µs | 12 | 482µs | return $ITERATOR->new($list, @_) # spent 482µs making 12 calls to Template::Iterator::new, avg 40µs/call |
178 | || $class->error("failed to create iterator: ", $ITERATOR->error); | ||||
179 | } | ||||
180 | |||||
181 | |||||
182 | #------------------------------------------------------------------------ | ||||
183 | # stash(\%vars) | ||||
184 | # | ||||
185 | # Instantiate a new template variable stash object (default: | ||||
186 | # Template::Stash). Returns object or undef, as above. | ||||
187 | #------------------------------------------------------------------------ | ||||
188 | |||||
189 | # spent 12.0ms (32µs+12.0) within Template::Config::stash which was called:
# once (32µs+12.0ms) by Template::Context::_init at line 863 of Template/Context.pm | ||||
190 | 1 | 900ns | my $class = shift; | ||
191 | 1 | 2µs | my $params = defined($_[0]) && ref($_[0]) eq 'HASH' | ||
192 | ? shift : { @_ }; | ||||
193 | |||||
194 | 1 | 3µs | 1 | 12.0ms | return undef unless $class->load($STASH); # spent 12.0ms making 1 call to Template::Config::load |
195 | 1 | 19µs | 1 | 23µs | return $STASH->new($params) # spent 23µs making 1 call to Template::Stash::new |
196 | || $class->error("failed to create stash: ", $STASH->error); | ||||
197 | } | ||||
198 | |||||
199 | |||||
200 | #------------------------------------------------------------------------ | ||||
201 | # context(\%params) | ||||
202 | # | ||||
203 | # Instantiate a new template context object (default: Template::Context). | ||||
204 | # Returns object or undef, as above. | ||||
205 | #------------------------------------------------------------------------ | ||||
206 | |||||
207 | # spent 23.3ms (53µs+23.2) within Template::Config::context which was called:
# once (53µs+23.2ms) by Template::Service::_init at line 177 of Template/Service.pm | ||||
208 | 1 | 1µs | my $class = shift; | ||
209 | 1 | 2µs | my $params = defined($_[0]) && ref($_[0]) eq 'HASH' | ||
210 | ? shift : { @_ }; | ||||
211 | |||||
212 | 1 | 3µs | 1 | 4.88ms | return undef unless $class->load($CONTEXT); # spent 4.88ms making 1 call to Template::Config::load |
213 | 1 | 34µs | 1 | 0s | return $CONTEXT->new($params) # spent 18.3ms making 1 call to Template::Base::new, recursion: max depth 2, sum of overlapping time 18.3ms |
214 | || $class->error("failed to create context: ", $CONTEXT->error); | ||||
215 | } | ||||
216 | |||||
217 | |||||
218 | #------------------------------------------------------------------------ | ||||
219 | # service(\%params) | ||||
220 | # | ||||
221 | # Instantiate a new template context object (default: Template::Service). | ||||
222 | # Returns object or undef, as above. | ||||
223 | #------------------------------------------------------------------------ | ||||
224 | |||||
225 | # spent 23.4ms (25µs+23.4) within Template::Config::service which was called:
# once (25µs+23.4ms) by Template::_init at line 138 of Template.pm | ||||
226 | 1 | 700ns | my $class = shift; | ||
227 | 1 | 2µs | my $params = defined($_[0]) && ref($_[0]) eq 'HASH' | ||
228 | ? shift : { @_ }; | ||||
229 | |||||
230 | 1 | 4µs | 1 | 29µs | return undef unless $class->load($SERVICE); # spent 29µs making 1 call to Template::Config::load |
231 | 1 | 19µs | 1 | 0s | return $SERVICE->new($params) # spent 23.4ms making 1 call to Template::Base::new, recursion: max depth 1, sum of overlapping time 23.4ms |
232 | || $class->error("failed to create context: ", $SERVICE->error); | ||||
233 | } | ||||
234 | |||||
235 | |||||
236 | #------------------------------------------------------------------------ | ||||
237 | # constants(\%params) | ||||
238 | # | ||||
239 | # Instantiate a new namespace handler for compile time constant folding | ||||
240 | # (default: Template::Namespace::Constants). | ||||
241 | # Returns object or undef, as above. | ||||
242 | #------------------------------------------------------------------------ | ||||
243 | |||||
244 | sub constants { | ||||
245 | my $class = shift; | ||||
246 | my $params = defined($_[0]) && ref($_[0]) eq 'HASH' | ||||
247 | ? shift : { @_ }; | ||||
248 | |||||
249 | return undef unless $class->load($CONSTANTS); | ||||
250 | return $CONSTANTS->new($params) | ||||
251 | || $class->error("failed to create constants namespace: ", | ||||
252 | $CONSTANTS->error); | ||||
253 | } | ||||
254 | |||||
255 | |||||
256 | #------------------------------------------------------------------------ | ||||
257 | # instdir($dir) | ||||
258 | # | ||||
259 | # Returns the root installation directory appended with any local | ||||
260 | # component directory passed as an argument. | ||||
261 | #------------------------------------------------------------------------ | ||||
262 | |||||
263 | sub instdir { | ||||
264 | my ($class, $dir) = @_; | ||||
265 | my $inst = $INSTDIR | ||||
266 | || return $class->error("no installation directory"); | ||||
267 | $inst =~ s[/$][]g; | ||||
268 | $inst .= "/$dir" if $dir; | ||||
269 | return $inst; | ||||
270 | } | ||||
271 | |||||
272 | |||||
273 | #======================================================================== | ||||
274 | # This should probably be moved somewhere else in the long term, but for | ||||
275 | # now it ensures that Template::TieString is available even if the | ||||
276 | # Template::Directive module hasn't been loaded, as is the case when | ||||
277 | # using compiled templates and Template::Parser hasn't yet been loaded | ||||
278 | # on demand. | ||||
279 | #======================================================================== | ||||
280 | |||||
281 | #------------------------------------------------------------------------ | ||||
282 | # simple package for tying $output variable to STDOUT, used by perl() | ||||
283 | #------------------------------------------------------------------------ | ||||
284 | |||||
285 | package Template::TieString; | ||||
286 | |||||
287 | sub TIEHANDLE { | ||||
288 | my ($class, $textref) = @_; | ||||
289 | bless $textref, $class; | ||||
290 | } | ||||
291 | sub PRINT { | ||||
292 | my $self = shift; | ||||
293 | $$self .= join('', @_); | ||||
294 | } | ||||
295 | |||||
- - | |||||
298 | 1 | 8µs | 1; | ||
299 | |||||
300 | __END__ | ||||
# spent 182µs within Template::Config::CORE:subst which was called 19 times, avg 10µs/call:
# 19 times (182µs+0s) by Template::Config::load at line 80, avg 10µs/call |