← Index
NYTProf Performance Profile   « line view »
For ./view
  Run on Fri Jul 31 18:42:36 2015
Reported on Fri Jul 31 18:48:14 2015

Filename/var/www/foswikidev/core/lib/Foswiki/Plugins/JQueryPlugin/Plugin.pm
StatementsExecuted 365 statements in 1.48ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
1433352µs2.55msFoswiki::Plugins::JQueryPlugin::Plugin::::initFoswiki::Plugins::JQueryPlugin::Plugin::init (recurses: max depth 2, inclusive time 1.17ms)
111111251µs251µsFoswiki::Plugins::JQueryPlugin::Plugin::::newFoswiki::Plugins::JQueryPlugin::Plugin::new
121146µs46µsFoswiki::Plugins::JQueryPlugin::Plugin::::renderJSFoswiki::Plugins::JQueryPlugin::Plugin::renderJS
11113µs46µsFoswiki::Plugins::JQueryPlugin::Plugin::::BEGIN@9Foswiki::Plugins::JQueryPlugin::Plugin::BEGIN@9
11111µs11µsFoswiki::Plugins::JQueryPlugin::Plugin::::BEGIN@4Foswiki::Plugins::JQueryPlugin::Plugin::BEGIN@4
1119µs14µsFoswiki::Plugins::JQueryPlugin::Plugin::::BEGIN@8Foswiki::Plugins::JQueryPlugin::Plugin::BEGIN@8
1118µs21µsFoswiki::Plugins::JQueryPlugin::Plugin::::BEGIN@7Foswiki::Plugins::JQueryPlugin::Plugin::BEGIN@7
1117µs7µsFoswiki::Plugins::JQueryPlugin::Plugin::::renderCSSFoswiki::Plugins::JQueryPlugin::Plugin::renderCSS
1113µs3µsFoswiki::Plugins::JQueryPlugin::Plugin::::BEGIN@5Foswiki::Plugins::JQueryPlugin::Plugin::BEGIN@5
0000s0sFoswiki::Plugins::JQueryPlugin::Plugin::::getSummaryFoswiki::Plugins::JQueryPlugin::Plugin::getSummary
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1# See bottom of file for license and copyright information
2package Foswiki::Plugins::JQueryPlugin::Plugin;
3
4225µs111µs
# spent 11µs within Foswiki::Plugins::JQueryPlugin::Plugin::BEGIN@4 which was called: # once (11µs+0s) by Foswiki::Contrib::JEditableContrib::JEDITABLE::BEGIN@10 at line 4
use Foswiki::Plugins::JQueryPlugin::Plugins ();
# spent 11µs making 1 call to Foswiki::Plugins::JQueryPlugin::Plugin::BEGIN@4
5226µs13µs
# spent 3µs within Foswiki::Plugins::JQueryPlugin::Plugin::BEGIN@5 which was called: # once (3µs+0s) by Foswiki::Contrib::JEditableContrib::JEDITABLE::BEGIN@10 at line 5
use Foswiki::Func ();
# spent 3µs making 1 call to Foswiki::Plugins::JQueryPlugin::Plugin::BEGIN@5
6
7225µs234µs
# spent 21µs (8+13) within Foswiki::Plugins::JQueryPlugin::Plugin::BEGIN@7 which was called: # once (8µs+13µs) by Foswiki::Contrib::JEditableContrib::JEDITABLE::BEGIN@10 at line 7
use strict;
# spent 21µs making 1 call to Foswiki::Plugins::JQueryPlugin::Plugin::BEGIN@7 # spent 13µs making 1 call to strict::import
8226µs218µs
# spent 14µs (9+4) within Foswiki::Plugins::JQueryPlugin::Plugin::BEGIN@8 which was called: # once (9µs+4µs) by Foswiki::Contrib::JEditableContrib::JEDITABLE::BEGIN@10 at line 8
use warnings;
# spent 14µs making 1 call to Foswiki::Plugins::JQueryPlugin::Plugin::BEGIN@8 # spent 4µs making 1 call to warnings::import
92705µs280µs
# spent 46µs (13+33) within Foswiki::Plugins::JQueryPlugin::Plugin::BEGIN@9 which was called: # once (13µs+33µs) by Foswiki::Contrib::JEditableContrib::JEDITABLE::BEGIN@10 at line 9
use constant TRACE => 0;
# spent 46µs making 1 call to Foswiki::Plugins::JQueryPlugin::Plugin::BEGIN@9 # spent 33µs making 1 call to constant::import
10
11=begin TML
12
13---+ package Foswiki::Plugins::JQueryPlugin::Plugin
14
15abstract class for a jQuery plugin
16
17=cut
18
19=begin TML
20
21---++ ClassMethod new( $class, ... )
22
23 * =$class=: Plugin class
24 * =...=: additional properties to be added to the object. i.e.
25 * =author => 'pluginAuthor'= (default unknown)
26 * =debug => 0 or 1= (default =$Foswiki::cfg{JQueryPlugin}{Debug}=)
27 * =dependencies => []=
28 * =documentation => 'pluginDocumentation'= (default JQuery<Name>)
29 * =homepage => 'pluginHomepage'= (default unknown)
30 * =javascript => []
31 * =name => 'pluginName'= (default unknown)
32 * =puburl= => 'pubUrl'= (default =%PUBURLPATH%/%SYSTEMWEB%/JQueryPlugin/plugins/pluginname=)
33 * =summary => 'pluginSummary'= (default undefined)
34 * =tags= => []
35 * =version => 'pluginVersion'= (default unknown)
36
37=cut
38
39
# spent 251µs within Foswiki::Plugins::JQueryPlugin::Plugin::new which was called 11 times, avg 23µs/call: # once (35µs+0s) by Foswiki::Plugins::SubscribePlugin::JQuery::new at line 14 of /var/www/foswikidev/core/lib/Foswiki/Plugins/SubscribePlugin/JQuery.pm # once (31µs+0s) by Foswiki::Plugins::CommentPlugin::JQuery::new at line 15 of /var/www/foswikidev/core/lib/Foswiki/Plugins/CommentPlugin/JQuery.pm # once (26µs+0s) by Foswiki::Contrib::JEditableContrib::JEDITABLE::new at line 18 of /var/www/foswikidev/core/lib/Foswiki/Contrib/JEditableContrib/JEDITABLE.pm # once (25µs+0s) by Foswiki::Plugins::JQueryPlugin::RENDER::new at line 14 of /var/www/foswikidev/core/lib/Foswiki/Plugins/JQueryPlugin/RENDER.pm # once (22µs+0s) by Foswiki::Plugins::JQueryPlugin::FOSWIKI::new at line 29 of /var/www/foswikidev/core/lib/Foswiki/Plugins/JQueryPlugin/FOSWIKI.pm # once (20µs+0s) by Foswiki::Plugins::JQueryPlugin::COOKIE::new at line 28 of /var/www/foswikidev/core/lib/Foswiki/Plugins/JQueryPlugin/COOKIE.pm # once (20µs+0s) by Foswiki::Plugins::JQueryPlugin::LIVEQUERY::new at line 28 of /var/www/foswikidev/core/lib/Foswiki/Plugins/JQueryPlugin/LIVEQUERY.pm # once (19µs+0s) by Foswiki::Plugins::JQueryPlugin::UI::new at line 29 of /var/www/foswikidev/core/lib/Foswiki/Plugins/JQueryPlugin/UI.pm # once (18µs+0s) by Foswiki::Plugins::JQueryPlugin::METADATA::new at line 28 of /var/www/foswikidev/core/lib/Foswiki/Plugins/JQueryPlugin/METADATA.pm # once (18µs+0s) by Foswiki::Plugins::JQueryPlugin::EASING::new at line 28 of /var/www/foswikidev/core/lib/Foswiki/Plugins/JQueryPlugin/EASING.pm # once (17µs+0s) by Foswiki::Plugins::JQueryPlugin::MIGRATE::new at line 28 of /var/www/foswikidev/core/lib/Foswiki/Plugins/JQueryPlugin/MIGRATE.pm
sub new {
40115µs my $class = shift;
41
42 # backwards compatibility: the session param is deprecated now
431115µs if ( ref( $_[0] ) =~ /^Foswiki/ ) {
44419µs my ( $package, $file, $line ) = caller;
45
46 # emit a deprecation warning
47 print STDERR
48"$package constructor called with deprecated session object in $file:$line\n"
49 if TRACE;
5043µs shift; # ... it off the args
51 }
52
5311154µs my $this = bless(
54 {
55 author => 'unknown',
56 css => [],
57 debug => $Foswiki::cfg{JQueryPlugin}{Debug} || 0,
58 dependencies => [],
59 documentation => undef,
60 homepage => 'unknown',
61 javascript => [],
62 name => $class,
63 puburl => '',
64 summary => undef,
65 tags => [],
66 version => 'unknown',
67 idPrefix => 'JQUERYPLUGIN',
68 @_
69 },
70 $class
71 );
72
731118µs $this->{documentation} =
74 $Foswiki::cfg{SystemWebName} . '.JQuery' . ucfirst( $this->{name} )
75 unless defined $this->{documentation};
76
77119µs $this->{documentation} =~ s/:://g;
78
79119µs unless ( $this->{puburl} ) {
80 $this->{puburl} = '%PUBURLPATH%/%SYSTEMWEB%/JQueryPlugin/plugins/'
81 . lc( $this->{name} );
82 }
83
841156µs return $this;
85}
86
87=begin TML
88
89---++ ClassMethod init( )
90
91add jQuery plugin to web and make sure all its dependencies
92are fulfilled.
93
94=cut
95
96
# spent 2.55ms (352µs+2.20) within Foswiki::Plugins::JQueryPlugin::Plugin::init which was called 14 times, avg 182µs/call: # 11 times (255µs+1.75ms) by Foswiki::Plugins::JQueryPlugin::Plugins::createPlugin at line 151 of /var/www/foswikidev/core/lib/Foswiki/Plugins/JQueryPlugin/Plugins.pm, avg 182µs/call # 2 times (59µs+492µs) by Foswiki::Plugins::JQueryPlugin::FOSWIKI::init at line 57 of /var/www/foswikidev/core/lib/Foswiki/Plugins/JQueryPlugin/FOSWIKI.pm, avg 276µs/call # once (38µs+-38µs) by Foswiki::Plugins::JQueryPlugin::UI::init at line 56 of /var/www/foswikidev/core/lib/Foswiki/Plugins/JQueryPlugin/UI.pm
sub init {
97144µs my $this = shift;
98
991418µs return 0 if $this->{isInit};
100116µs $this->{isInit} = 1;
101
102113µs my $header = '';
103112µs my $footer = '';
104
105 # load all css
1061113µs foreach my $css ( @{ $this->{css} } ) {
10715µs17µs $header .= $this->renderCSS($css);
# spent 7µs making 1 call to Foswiki::Plugins::JQueryPlugin::Plugin::renderCSS
108 }
109
110 # load all javascript
111118µs foreach my $js ( @{ $this->{javascript} } ) {
1121247µs1246µs $footer .= $this->renderJS($js);
# spent 46µs making 12 calls to Foswiki::Plugins::JQueryPlugin::Plugin::renderJS, avg 4µs/call
113 }
114
115 # gather dependencies
1161110µs my @dependencies =
117 ('JQUERYPLUGIN::FOSWIKI'); # jquery.foswiki is in there by default
118119µs foreach my $dep ( @{ $this->{dependencies} } ) {
119838µs if ( $dep =~ /^($this->{idPrefix}|JQUERYPLUGIN|JavascriptFiles)/ )
120 { # SMELL: there are some jquery modules that depend on non-jquery code
121 push @dependencies, $dep;
122 }
123 else {
124610µs60s my $plugin =
# spent 2.85ms making 6 calls to Foswiki::Plugins::JQueryPlugin::Plugins::createPlugin, avg 475µs/call, recursion: max depth 2, sum of overlapping time 2.85ms
125 Foswiki::Plugins::JQueryPlugin::Plugins::createPlugin($dep);
126611µs if ($plugin) {
127 push @dependencies,
128 $plugin->{idPrefix} . '::' . uc( $plugin->{name} );
129 }
130 else {
131 my $trace = '';
132
133 # require Devel::StackTrace;
134 # $trace = Devel::StackTrace->new()->as_string()."\n";
135
136 print STDERR "ERROR: can't load plugin for $dep\n" . $trace;
137 }
138 }
139 }
140
1411128µs11204µs Foswiki::Func::addToZone( 'head',
# spent 204µs making 11 calls to Foswiki::Func::addToZone, avg 19µs/call
142 $this->{idPrefix} . '::' . uc( $this->{name} ),
143 $header, join( ', ', @dependencies ) );
1441125µs11252µs Foswiki::Func::addToZone( 'script',
# spent 252µs making 11 calls to Foswiki::Func::addToZone, avg 23µs/call
145 $this->{idPrefix} . '::' . uc( $this->{name} ),
146 $footer, join( ', ', @dependencies ) );
147
148118µs my $contextID = $this->{name} . 'Enabled';
149116µs $contextID =~ s/\W//g;
1501124µs1115µs Foswiki::Func::getContext()->{$contextID} = 1;
# spent 15µs making 11 calls to Foswiki::Func::getContext, avg 1µs/call
151
1521133µs return 1;
153}
154
155
# spent 7µs within Foswiki::Plugins::JQueryPlugin::Plugin::renderCSS which was called: # once (7µs+0s) by Foswiki::Plugins::JQueryPlugin::Plugin::init at line 107
sub renderCSS {
15611µs my ( $this, $text ) = @_;
157
1581900ns $text =~ s/\.css$/.uncompressed.css/
159 if $this->{debug} && $text !~ /(\.uncompressed|_src)\./;
16011µs $text .= '?version=' . $this->{version};
16112µs $text =
162"<link rel='stylesheet' href='$this->{puburl}/$text' type='text/css' media='all' />\n";
163
16414µs return $text;
165}
166
167
# spent 46µs within Foswiki::Plugins::JQueryPlugin::Plugin::renderJS which was called 12 times, avg 4µs/call: # 12 times (46µs+0s) by Foswiki::Plugins::JQueryPlugin::Plugin::init at line 112, avg 4µs/call
sub renderJS {
168128µs my ( $this, $text ) = @_;
169
170124µs $text =~ s/\.js$/.uncompressed.js/
171 if $this->{debug} && $text !~ /(\.uncompressed|_src)\./;
172127µs $text .= '?version=' . $this->{version};
1731211µs $text =
174 "<script type='text/javascript' src='$this->{puburl}/$text'></script>\n";
175
1761233µs return $text;
177}
178
179=begin TML
180
181---++ ClassMethod getSummary()
182
183returns the summary text for this plugin. this is either the =summary= property of the class or the
184=summary= section of the plugin's documentation topic.
185
186=cut
187
188sub getSummary {
189 my $this = shift;
190
191 my $summary = $this->{summary};
192
193 unless ( defined $summary ) {
194 $summary = 'n/a';
195 if ( $this->{'documentation'} ) {
196 $summary =
197 Foswiki::Func::expandCommonVariables( '%INCLUDE{"'
198 . $this->{documentation}
199 . '" section="summary" warn="off"}%' );
200 }
201
202 $this->{summary} = $summary;
203 }
204
205 return $summary;
206}
207
20812µs1;
209__END__