Filename | /usr/local/src/github.com/foswiki/core/lib/Foswiki/I18N/Fallback.pm |
Statements | Executed 366 statements in 2.42ms |
Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
---|---|---|---|---|---|
58 | 2 | 2 | 1.34ms | 1.68ms | maketext | Foswiki::I18N::Fallback::
174 | 3 | 1 | 322µs | 322µs | CORE:subst (opcode) | Foswiki::I18N::Fallback::
1 | 1 | 1 | 43µs | 57µs | finish | Foswiki::I18N::Fallback::
1 | 1 | 1 | 31µs | 41µs | BEGIN@7 | Foswiki::I18N::Fallback::
1 | 1 | 1 | 27µs | 50µs | BEGIN@8 | Foswiki::I18N::Fallback::
1 | 1 | 1 | 19µs | 19µs | new | Foswiki::I18N::Fallback::
8 | 1 | 1 | 19µs | 19µs | CORE:substcont (opcode) | Foswiki::I18N::Fallback::
1 | 1 | 1 | 10µs | 10µs | BEGIN@10 | Foswiki::I18N::Fallback::
1 | 1 | 1 | 9µs | 9µs | language | Foswiki::I18N::Fallback::
0 | 0 | 0 | 0s | 0s | _handlePlurals | Foswiki::I18N::Fallback::
0 | 0 | 0 | 0s | 0s | enabled_languages | Foswiki::I18N::Fallback::
0 | 0 | 0 | 0s | 0s | fromSiteCharSet | Foswiki::I18N::Fallback::
0 | 0 | 0 | 0s | 0s | toSiteCharSet | Foswiki::I18N::Fallback::
Line | State ments |
Time on line |
Calls | Time in subs |
Code |
---|---|---|---|---|---|
1 | # See bottom of file for license and copyright information | ||||
2 | # Foswiki::I18N::Fallback - a fallback class for when | ||||
3 | # Locale::Maketext isn't available. | ||||
4 | |||||
5 | package Foswiki::I18N::Fallback; | ||||
6 | |||||
7 | 2 | 52µs | 2 | 51µs | # spent 41µs (31+10) within Foswiki::I18N::Fallback::BEGIN@7 which was called:
# once (31µs+10µs) by Foswiki::I18N::new at line 7 # spent 41µs making 1 call to Foswiki::I18N::Fallback::BEGIN@7
# spent 10µs making 1 call to strict::import |
8 | 2 | 50µs | 2 | 73µs | # spent 50µs (27+23) within Foswiki::I18N::Fallback::BEGIN@8 which was called:
# once (27µs+23µs) by Foswiki::I18N::new at line 8 # spent 50µs making 1 call to Foswiki::I18N::Fallback::BEGIN@8
# spent 23µs making 1 call to warnings::import |
9 | |||||
10 | 2 | 545µs | 1 | 10µs | # spent 10µs within Foswiki::I18N::Fallback::BEGIN@10 which was called:
# once (10µs+0s) by Foswiki::I18N::new at line 10 # spent 10µs making 1 call to Foswiki::I18N::Fallback::BEGIN@10 |
11 | 1 | 15µs | our @ISA = ('Foswiki::I18N'); | ||
12 | |||||
13 | # spent 19µs within Foswiki::I18N::Fallback::new which was called:
# once (19µs+0s) by Foswiki::I18N::new at line 176 of /usr/local/src/github.com/foswiki/core/lib/Foswiki/I18N.pm | ||||
14 | 3 | 23µs | my $class = shift; | ||
15 | my $this = bless( {}, $class ); | ||||
16 | return $this; | ||||
17 | } | ||||
18 | |||||
19 | # spent 57µs (43+14) within Foswiki::I18N::Fallback::finish which was called:
# once (43µs+14µs) by Foswiki::finish at line 2100 of /usr/local/src/github.com/foswiki/core/lib/Foswiki.pm | ||||
20 | |||||
21 | # No data, nothing to do. | ||||
22 | # Must call SUPER finish to avoid memory leaks | ||||
23 | 2 | 41µs | my $this = shift; | ||
24 | 1 | 14µs | $this->SUPER::finish(@_); # spent 14µs making 1 call to Foswiki::I18N::finish | ||
25 | } | ||||
26 | |||||
27 | # spent 1.68ms (1.34+340µs) within Foswiki::I18N::Fallback::maketext which was called 58 times, avg 29µs/call:
# 52 times (1.18ms+302µs) by Foswiki::MAKETEXT at line 38 of /usr/local/src/github.com/foswiki/core/lib/Foswiki/Macros/MAKETEXT.pm, avg 28µs/call
# 6 times (159µs+39µs) by Foswiki::Search::formatResult at line 1200 of /usr/local/src/github.com/foswiki/core/lib/Foswiki/Search.pm, avg 33µs/call | ||||
28 | 348 | 1.66ms | my ( $this, $text, @args ) = @_; | ||
29 | |||||
30 | return '' unless $text; | ||||
31 | |||||
32 | # substitute parameters: | ||||
33 | 4 | 22µs | 66 | 157µs | $text =~ s/\[\_(\d+)\]/$args[$1-1]/ge; # spent 138µs making 58 calls to Foswiki::I18N::Fallback::CORE:subst, avg 2µs/call
# spent 19µs making 8 calls to Foswiki::I18N::Fallback::CORE:substcont, avg 2µs/call |
34 | |||||
35 | # unescape escaped square brackets: | ||||
36 | 58 | 94µs | $text =~ s/~(\[|\])/$1/g; # spent 94µs making 58 calls to Foswiki::I18N::Fallback::CORE:subst, avg 2µs/call | ||
37 | |||||
38 | #plurals: | ||||
39 | $text =~ | ||||
40 | 58 | 90µs | s/\[\*,\_(\d+),([^,]+)(,([^,]+))?\]/_handlePlurals($args[$1-1],$2,$4)/ge; # spent 90µs making 58 calls to Foswiki::I18N::Fallback::CORE:subst, avg 2µs/call | ||
41 | |||||
42 | return $text; | ||||
43 | } | ||||
44 | |||||
45 | sub _handlePlurals { | ||||
46 | my ( $number, $singular, $plural ) = @_; | ||||
47 | |||||
48 | # bad hack, but Locale::Maketext does it the same way ;) | ||||
49 | return | ||||
50 | $number . ' ' | ||||
51 | . ( | ||||
52 | ( $number == 1 ) | ||||
53 | ? $singular | ||||
54 | : ( $plural ? ($plural) : ( $singular . 's' ) ) | ||||
55 | ); | ||||
56 | } | ||||
57 | |||||
58 | # spent 9µs within Foswiki::I18N::Fallback::language which was called:
# once (9µs+0s) by Foswiki::Plugins::JQueryPlugin::UI::init at line 63 of /usr/local/src/github.com/foswiki/core/lib/Foswiki/Plugins/JQueryPlugin/UI.pm | ||||
59 | 1 | 11µs | return 'en'; | ||
60 | } | ||||
61 | |||||
62 | sub enabled_languages { | ||||
63 | my $this = shift; | ||||
64 | return $this->{enabled_languages}; | ||||
65 | } | ||||
66 | |||||
67 | sub fromSiteCharSet { | ||||
68 | my ( $this, $text ) = @_; | ||||
69 | return $text; | ||||
70 | } | ||||
71 | |||||
72 | sub toSiteCharSet { | ||||
73 | my ( $this, $text ) = @_; | ||||
74 | return $text; | ||||
75 | } | ||||
76 | |||||
77 | 1 | 6µs | 1; | ||
78 | __END__ | ||||
# spent 322µs within Foswiki::I18N::Fallback::CORE:subst which was called 174 times, avg 2µs/call:
# 58 times (138µs+0s) by Foswiki::I18N::Fallback::maketext at line 33, avg 2µs/call
# 58 times (94µs+0s) by Foswiki::I18N::Fallback::maketext at line 36, avg 2µs/call
# 58 times (90µs+0s) by Foswiki::I18N::Fallback::maketext at line 40, avg 2µs/call | |||||
# spent 19µs within Foswiki::I18N::Fallback::CORE:substcont which was called 8 times, avg 2µs/call:
# 8 times (19µs+0s) by Foswiki::I18N::Fallback::maketext at line 33, avg 2µs/call |