Filename | /var/www/foswiki11/lib/Foswiki/Plugins/SmiliesPlugin.pm |
Statements | Executed 287 statements in 5.10ms |
Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
---|---|---|---|---|---|
5 | 1 | 1 | 4.05ms | 4.05ms | preRenderingHandler | Foswiki::Plugins::SmiliesPlugin::
1 | 1 | 1 | 333µs | 9.13ms | initPlugin | Foswiki::Plugins::SmiliesPlugin::
13 | 1 | 1 | 112µs | 112µs | commonTagsHandler | Foswiki::Plugins::SmiliesPlugin::
1 | 1 | 1 | 14µs | 32µs | BEGIN@7 | Foswiki::Plugins::SmiliesPlugin::
1 | 1 | 1 | 10µs | 29µs | BEGIN@16 | Foswiki::Plugins::SmiliesPlugin::
1 | 1 | 1 | 10µs | 51µs | BEGIN@12 | Foswiki::Plugins::SmiliesPlugin::
1 | 1 | 1 | 10µs | 15µs | BEGIN@8 | Foswiki::Plugins::SmiliesPlugin::
1 | 1 | 1 | 4µs | 4µ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 | 28µs | 2 | 51µs | # spent 32µs (14+19) within Foswiki::Plugins::SmiliesPlugin::BEGIN@7 which was called:
# once (14µs+19µs) by Foswiki::Plugin::BEGIN@2.32 at line 7 # spent 32µs making 1 call to Foswiki::Plugins::SmiliesPlugin::BEGIN@7
# spent 19µs making 1 call to strict::import |
8 | 2 | 24µs | 2 | 20µs | # spent 15µs (10+5) within Foswiki::Plugins::SmiliesPlugin::BEGIN@8 which was called:
# once (10µs+5µs) by Foswiki::Plugin::BEGIN@2.32 at line 8 # spent 15µs making 1 call to Foswiki::Plugins::SmiliesPlugin::BEGIN@8
# spent 5µs making 1 call to warnings::import |
9 | |||||
10 | 2 | 28µs | 1 | 4µs | # spent 4µs within Foswiki::Plugins::SmiliesPlugin::BEGIN@10 which was called:
# once (4µs+0s) by Foswiki::Plugin::BEGIN@2.32 at line 10 # spent 4µs making 1 call to Foswiki::Plugins::SmiliesPlugin::BEGIN@10 |
11 | |||||
12 | 1 | 8µs | 1 | 41µs | # spent 51µs (10+41) within Foswiki::Plugins::SmiliesPlugin::BEGIN@12 which was called:
# once (10µs+41µs) by Foswiki::Plugin::BEGIN@2.32 at line 14 # spent 41µs making 1 call to vars::import |
13 | %smiliesUrls %smiliesEmotions | ||||
14 | 1 | 23µs | 1 | 51µs | $smiliesPubUrl $allPattern $smiliesFormat ); # spent 51µs making 1 call to Foswiki::Plugins::SmiliesPlugin::BEGIN@12 |
15 | |||||
16 | 3 | 512µs | 3 | 53µs | # spent 29µs (10+19) within Foswiki::Plugins::SmiliesPlugin::BEGIN@16 which was called:
# once (10µs+19µs) by Foswiki::Plugin::BEGIN@2.32 at line 16 # spent 29µs making 1 call to Foswiki::Plugins::SmiliesPlugin::BEGIN@16
# spent 19µs making 1 call to version::import
# spent 5µs making 1 call to version::vxs::declare |
17 | 1 | 300ns | our $RELEASE = '28 Nov 2012'; | ||
18 | 1 | 200ns | our $NO_PREFS_IN_TOPIC = 1; | ||
19 | 1 | 200ns | our $SHORTDESCRIPTION = 'Render smilies like :-) as icons'; | ||
20 | |||||
21 | # spent 9.13ms (333µs+8.79) within Foswiki::Plugins::SmiliesPlugin::initPlugin which was called:
# once (333µs+8.79ms) by Foswiki::Plugin::__ANON__[/var/www/foswiki11/lib/Foswiki/Plugin.pm:241] at line 234 of /var/www/foswiki11/lib/Foswiki/Plugin.pm | ||||
22 | 1 | 2µs | my ( $topic, $web, $user, $installWeb ) = @_; | ||
23 | |||||
24 | # Get plugin preferences | ||||
25 | 1 | 3µs | 1 | 31µs | $smiliesFormat = Foswiki::Func::getPreferencesValue('SMILIESPLUGIN_FORMAT') # spent 31µs making 1 call to Foswiki::Func::getPreferencesValue |
26 | || '<img src="$url" alt="$tooltip" title="$tooltip" border="0" />'; | ||||
27 | |||||
28 | 1 | 2µs | 1 | 48µs | $topic = Foswiki::Func::getPreferencesValue('SMILIESPLUGIN_TOPIC') # spent 48µs making 1 call to Foswiki::Func::getPreferencesValue |
29 | || "$installWeb.SmiliesPlugin"; | ||||
30 | |||||
31 | 1 | 800ns | $web = $installWeb; | ||
32 | 1 | 7µs | if ( $topic =~ /(.+)\.(.+)/ ) { | ||
33 | 1 | 2µs | $web = $1; | ||
34 | 1 | 800ns | $topic = $2; | ||
35 | } | ||||
36 | |||||
37 | 1 | 900ns | $allPattern = "("; | ||
38 | 1 | 33µs | 1 | 8.71ms | foreach ( # spent 8.71ms making 1 call to Foswiki::Func::readTopicText |
39 | split( /\n/, Foswiki::Func::readTopicText( $web, $topic, undef, 1 ) ) ) | ||||
40 | { | ||||
41 | |||||
42 | # smilie url emotion | ||||
43 | 100 | 136µs | if ( | ||
44 | m/^\s*\|\s*<nop>(?:\ \;)?([^\s|]+)\s*\|\s*%ATTACHURL%\/([^\s]+)\s*\|\s*"([^"|]+)"\s*\|\s*$/o | ||||
45 | ) | ||||
46 | { | ||||
47 | 47 | 31µs | $allPattern .= "\Q$1\E|"; | ||
48 | 47 | 53µs | $smiliesUrls{$1} = $2; | ||
49 | 47 | 34µs | $smiliesEmotions{$1} = $3; | ||
50 | } | ||||
51 | } | ||||
52 | 1 | 4µs | $allPattern =~ s/\|$//o; | ||
53 | 1 | 900ns | $allPattern .= ")"; | ||
54 | 1 | 4µs | 1 | 2µs | $smiliesPubUrl = Foswiki::Func::getPubUrlPath() . "/$web/$topic"; # spent 2µs making 1 call to Foswiki::Func::getPubUrlPath |
55 | |||||
56 | # Initialization OK | ||||
57 | 1 | 6µs | return 1; | ||
58 | } | ||||
59 | |||||
60 | # spent 112µs within Foswiki::Plugins::SmiliesPlugin::commonTagsHandler which was called 13 times, avg 9µs/call:
# 13 times (112µs+0s) by Foswiki::Plugin::invoke at line 294 of /var/www/foswiki11/lib/Foswiki/Plugin.pm, avg 9µs/call | ||||
61 | |||||
62 | # my ( $text, $topic, $web ) = @_; | ||||
63 | 13 | 96µs | $_[0] =~ s/%SMILIES%/_allSmiliesTable()/geo; | ||
64 | } | ||||
65 | |||||
66 | # spent 4.05ms within Foswiki::Plugins::SmiliesPlugin::preRenderingHandler which was called 5 times, avg 810µs/call:
# 5 times (4.05ms+0s) by Foswiki::Plugin::invoke at line 294 of /var/www/foswiki11/lib/Foswiki/Plugin.pm, avg 810µs/call | ||||
67 | |||||
68 | # my ( $text, \%removed ) = @_; | ||||
69 | |||||
70 | 5 | 4.05ms | $_[0] =~ s/(\s|^)$allPattern(?=\s|$)/_renderSmily($1,$2)/geo; | ||
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 | 4µs | 1; | ||
100 | __END__ |