Filename | /usr/local/src/github.com/foswiki/core/lib/Foswiki/Plugins/SmiliesPlugin.pm |
Statements | Executed 1381 statements in 21.3ms |
Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
---|---|---|---|---|---|
1151 | 1 | 1 | 11.7ms | 14.1ms | commonTagsHandler | Foswiki::Plugins::SmiliesPlugin::
1157 | 3 | 1 | 8.02ms | 8.02ms | CORE:subst (opcode) | Foswiki::Plugins::SmiliesPlugin::
1 | 1 | 1 | 1.11ms | 20.3s | initPlugin | Foswiki::Plugins::SmiliesPlugin::
116 | 2 | 1 | 300µs | 300µs | CORE:match (opcode) | Foswiki::Plugins::SmiliesPlugin::
5 | 1 | 1 | 125µs | 5.79ms | preRenderingHandler | Foswiki::Plugins::SmiliesPlugin::
5 | 1 | 1 | 84µs | 84µs | CORE:regcomp (opcode) | Foswiki::Plugins::SmiliesPlugin::
1 | 1 | 1 | 25µs | 33µs | BEGIN@7 | Foswiki::Plugins::SmiliesPlugin::
1 | 1 | 1 | 17µs | 245µs | BEGIN@12 | Foswiki::Plugins::SmiliesPlugin::
1 | 1 | 1 | 17µs | 34µs | BEGIN@8 | Foswiki::Plugins::SmiliesPlugin::
1 | 1 | 1 | 9µs | 9µs | BEGIN@10 | Foswiki::Plugins::SmiliesPlugin::
0 | 0 | 0 | 0s | 0s | _allSmiliesTable | Foswiki::Plugins::SmiliesPlugin::
0 | 0 | 0 | 0s | 0s | _renderSmily | Foswiki::Plugins::SmiliesPlugin::
Line | State ments |
Time on line |
Calls | Time in subs |
Code |
---|---|---|---|---|---|
1 | # See bottom of file for license and copyright information | ||||
2 | # | ||||
3 | # This plugin replaces smilies with small smilies bitmaps | ||||
4 | |||||
5 | package Foswiki::Plugins::SmiliesPlugin; | ||||
6 | |||||
7 | 2 | 46µs | 2 | 40µs | # spent 33µs (25+8) within Foswiki::Plugins::SmiliesPlugin::BEGIN@7 which was called:
# once (25µs+8µs) by Foswiki::Plugin::BEGIN@2.15 at line 7 # spent 33µs making 1 call to Foswiki::Plugins::SmiliesPlugin::BEGIN@7
# spent 8µs making 1 call to strict::import |
8 | 2 | 46µs | 2 | 52µs | # spent 34µs (17+18) within Foswiki::Plugins::SmiliesPlugin::BEGIN@8 which was called:
# once (17µs+18µs) by Foswiki::Plugin::BEGIN@2.15 at line 8 # spent 34µs making 1 call to Foswiki::Plugins::SmiliesPlugin::BEGIN@8
# spent 18µs making 1 call to warnings::import |
9 | |||||
10 | 2 | 268µs | 1 | 9µs | # spent 9µs within Foswiki::Plugins::SmiliesPlugin::BEGIN@10 which was called:
# once (9µs+0s) by Foswiki::Plugin::BEGIN@2.15 at line 10 # spent 9µs making 1 call to Foswiki::Plugins::SmiliesPlugin::BEGIN@10 |
11 | |||||
12 | 1 | 228µs | # spent 245µs (17+228) within Foswiki::Plugins::SmiliesPlugin::BEGIN@12 which was called:
# once (17µs+228µs) by Foswiki::Plugin::BEGIN@2.15 at line 14 # spent 228µs making 1 call to vars::import | ||
13 | %smiliesUrls %smiliesEmotions | ||||
14 | 2 | 885µs | 1 | 245µs | $smiliesPubUrl $allPattern $smiliesFormat ); # spent 245µs making 1 call to Foswiki::Plugins::SmiliesPlugin::BEGIN@12 |
15 | |||||
16 | 1 | 2µs | our $VERSION = '$Rev$'; | ||
17 | 1 | 1µs | our $RELEASE = '20 Sep 2009'; | ||
18 | 1 | 1µs | our $NO_PREFS_IN_TOPIC = 1; | ||
19 | 1 | 1µs | our $SHORTDESCRIPTION = 'Render smilies like :-) as icons'; | ||
20 | |||||
21 | # spent 20.3s (1.11ms+20.3) within Foswiki::Plugins::SmiliesPlugin::initPlugin which was called:
# once (1.11ms+20.3s) by Foswiki::Plugin::__ANON__[/usr/local/src/github.com/foswiki/core/lib/Foswiki/Plugin.pm:235] at line 228 of /usr/local/src/github.com/foswiki/core/lib/Foswiki/Plugin.pm | ||||
22 | 212 | 1.41ms | my ( $topic, $web, $user, $installWeb ) = @_; | ||
23 | |||||
24 | # Get plugin preferences | ||||
25 | 1 | 82µs | $smiliesFormat = Foswiki::Func::getPreferencesValue('SMILIESPLUGIN_FORMAT') # spent 82µs making 1 call to Foswiki::Func::getPreferencesValue | ||
26 | || '<img src="$url" alt="$tooltip" title="$tooltip" border="0" />'; | ||||
27 | |||||
28 | 1 | 80µs | $topic = Foswiki::Func::getPreferencesValue('SMILIESPLUGIN_TOPIC') # spent 80µs making 1 call to Foswiki::Func::getPreferencesValue | ||
29 | || "$installWeb.SmiliesPlugin"; | ||||
30 | |||||
31 | $web = $installWeb; | ||||
32 | 1 | 10µs | if ( $topic =~ /(.+)\.(.+)/ ) { # spent 10µs making 1 call to Foswiki::Plugins::SmiliesPlugin::CORE:match | ||
33 | $web = $1; | ||||
34 | $topic = $2; | ||||
35 | } | ||||
36 | |||||
37 | $allPattern = "("; | ||||
38 | 1 | 20.3s | foreach ( # spent 20.3s making 1 call to Foswiki::Func::readTopicText | ||
39 | split( /\n/, Foswiki::Func::readTopicText( $web, $topic, undef, 1 ) ) ) | ||||
40 | { | ||||
41 | |||||
42 | # smilie url emotion | ||||
43 | 115 | 291µs | if ( # spent 291µs making 115 calls to Foswiki::Plugins::SmiliesPlugin::CORE:match, avg 3µs/call | ||
44 | m/^\s*\|\s*<nop>(?:\ \;)?([^\s|]+)\s*\|\s*%ATTACHURL%\/([^\s]+)\s*\|\s*"([^"|]+)"\s*\|\s*$/o | ||||
45 | ) | ||||
46 | { | ||||
47 | $allPattern .= "\Q$1\E|"; | ||||
48 | $smiliesUrls{$1} = $2; | ||||
49 | $smiliesEmotions{$1} = $3; | ||||
50 | } | ||||
51 | } | ||||
52 | 1 | 6µs | $allPattern =~ s/\|$//o; # spent 6µs making 1 call to Foswiki::Plugins::SmiliesPlugin::CORE:subst | ||
53 | $allPattern .= ")"; | ||||
54 | 1 | 12µs | $smiliesPubUrl = Foswiki::Func::getPubUrlPath() . "/$web/$topic"; # spent 12µs making 1 call to Foswiki::Func::getPubUrlPath | ||
55 | |||||
56 | # Initialization OK | ||||
57 | return 1; | ||||
58 | } | ||||
59 | |||||
60 | # spent 14.1ms (11.7+2.43) within Foswiki::Plugins::SmiliesPlugin::commonTagsHandler which was called 1151 times, avg 12µs/call:
# 1151 times (11.7ms+2.43ms) by Foswiki::Plugin::invoke at line 287 of /usr/local/src/github.com/foswiki/core/lib/Foswiki/Plugin.pm, avg 12µs/call | ||||
61 | |||||
62 | # my ( $text, $topic, $web ) = @_; | ||||
63 | 1151 | 12.8ms | 1151 | 2.43ms | $_[0] =~ s/%SMILIES%/_allSmiliesTable()/geo; # spent 2.43ms making 1151 calls to Foswiki::Plugins::SmiliesPlugin::CORE:subst, avg 2µs/call |
64 | } | ||||
65 | |||||
66 | # spent 5.79ms (125µs+5.67) within Foswiki::Plugins::SmiliesPlugin::preRenderingHandler which was called 5 times, avg 1.16ms/call:
# 5 times (125µs+5.67ms) by Foswiki::Plugin::invoke at line 287 of /usr/local/src/github.com/foswiki/core/lib/Foswiki/Plugin.pm, avg 1.16ms/call | ||||
67 | |||||
68 | # my ( $text, \%removed ) = @_; | ||||
69 | |||||
70 | 5 | 5.77ms | 10 | 5.67ms | $_[0] =~ s/(\s|^)$allPattern(?=\s|$)/_renderSmily($1,$2)/geo; # spent 5.58ms making 5 calls to Foswiki::Plugins::SmiliesPlugin::CORE:subst, avg 1.12ms/call
# spent 84µs making 5 calls to Foswiki::Plugins::SmiliesPlugin::CORE:regcomp, avg 17µs/call |
71 | } | ||||
72 | |||||
73 | sub _renderSmily { | ||||
74 | my ( $thePre, $theSmily ) = @_; | ||||
75 | |||||
76 | return $thePre unless $theSmily; | ||||
77 | |||||
78 | my $text = $thePre . $smiliesFormat; | ||||
79 | $text =~ s/\$emoticon/$theSmily/go; | ||||
80 | $text =~ s/\$tooltip/$smiliesEmotions{$theSmily}/go; | ||||
81 | $text =~ s/\$url/$smiliesPubUrl\/$smiliesUrls{$theSmily}/go; | ||||
82 | |||||
83 | return $text; | ||||
84 | } | ||||
85 | |||||
86 | sub _allSmiliesTable { | ||||
87 | my $text = "| *What to Type* | *Graphic That Will Appear* | *Emotion* |\n"; | ||||
88 | |||||
89 | foreach my $k ( | ||||
90 | sort { $smiliesEmotions{$b} cmp $smiliesEmotions{$a} } | ||||
91 | keys %smiliesEmotions | ||||
92 | ) | ||||
93 | { | ||||
94 | $text .= "| <nop>$k | $k | " . $smiliesEmotions{$k} . " |\n"; | ||||
95 | } | ||||
96 | return $text; | ||||
97 | } | ||||
98 | |||||
99 | 1 | 6µs | 1; | ||
100 | __END__ | ||||
sub Foswiki::Plugins::SmiliesPlugin::CORE:match; # opcode | |||||
# spent 84µs within Foswiki::Plugins::SmiliesPlugin::CORE:regcomp which was called 5 times, avg 17µs/call:
# 5 times (84µs+0s) by Foswiki::Plugins::SmiliesPlugin::preRenderingHandler at line 70, avg 17µs/call | |||||
# spent 8.02ms within Foswiki::Plugins::SmiliesPlugin::CORE:subst which was called 1157 times, avg 7µs/call:
# 1151 times (2.43ms+0s) by Foswiki::Plugins::SmiliesPlugin::commonTagsHandler at line 63, avg 2µs/call
# 5 times (5.58ms+0s) by Foswiki::Plugins::SmiliesPlugin::preRenderingHandler at line 70, avg 1.12ms/call
# once (6µs+0s) by Foswiki::Plugins::SmiliesPlugin::initPlugin at line 52 |