Filename | /Users/edenc/perl5/lib/perl5/PPI/Token/Quote/Single.pm |
Statements | Executed 12 statements in 425µs |
Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
---|---|---|---|---|---|
1 | 1 | 1 | 309µs | 1.29ms | BEGIN@39 | PPI::Token::Quote::Single::
1 | 1 | 1 | 207µs | 276µs | BEGIN@38 | PPI::Token::Quote::Single::
1 | 1 | 1 | 14µs | 18µs | BEGIN@37 | PPI::Token::Quote::Single::
1 | 1 | 1 | 12µs | 12µs | BEGIN@42 | PPI::Token::Quote::Single::
1 | 1 | 1 | 7µs | 39µs | BEGIN@41 | PPI::Token::Quote::Single::
0 | 0 | 0 | 0s | 0s | literal | PPI::Token::Quote::Single::
0 | 0 | 0 | 0s | 0s | string | PPI::Token::Quote::Single::
Line | State ments |
Time on line |
Calls | Time in subs |
Code |
---|---|---|---|---|---|
1 | package PPI::Token::Quote::Single; | ||||
2 | |||||
3 | =pod | ||||
4 | |||||
5 | =head1 NAME | ||||
6 | |||||
7 | PPI::Token::Quote::Single - A 'single quote' token | ||||
8 | |||||
9 | =head1 INHERITANCE | ||||
10 | |||||
11 | PPI::Token::Quote::Single | ||||
12 | isa PPI::Token::Quote | ||||
13 | isa PPI::Token | ||||
14 | isa PPI::Element | ||||
15 | |||||
16 | =head1 SYNOPSIS | ||||
17 | |||||
18 | 'This is a single quote' | ||||
19 | |||||
20 | q{This is a literal, but NOT a single quote} | ||||
21 | |||||
22 | =head1 DESCRIPTION | ||||
23 | |||||
24 | A C<PPI::Token::Quote::Single> object represents a single quoted string | ||||
25 | literal. | ||||
26 | |||||
27 | =head1 METHODS | ||||
28 | |||||
29 | There are no methods available for C<PPI::Token::Quote::Single> beyond | ||||
30 | those provided by the parent L<PPI::Token::Quote>, L<PPI::Token> and | ||||
31 | L<PPI::Element> classes. | ||||
32 | |||||
33 | Got any ideas for methods? Submit a report to rt.cpan.org! | ||||
34 | |||||
35 | =cut | ||||
36 | |||||
37 | 2 | 24µs | 2 | 21µs | # spent 18µs (14+3) within PPI::Token::Quote::Single::BEGIN@37 which was called:
# once (14µs+3µs) by PPI::Token::BEGIN@54 at line 37 # spent 18µs making 1 call to PPI::Token::Quote::Single::BEGIN@37
# spent 3µs making 1 call to strict::import |
38 | 2 | 109µs | 1 | 276µs | # spent 276µs (207+69) within PPI::Token::Quote::Single::BEGIN@38 which was called:
# once (207µs+69µs) by PPI::Token::BEGIN@54 at line 38 # spent 276µs making 1 call to PPI::Token::Quote::Single::BEGIN@38 |
39 | 2 | 96µs | 1 | 1.29ms | # spent 1.29ms (309µs+980µs) within PPI::Token::Quote::Single::BEGIN@39 which was called:
# once (309µs+980µs) by PPI::Token::BEGIN@54 at line 39 # spent 1.29ms making 1 call to PPI::Token::Quote::Single::BEGIN@39 |
40 | |||||
41 | 2 | 38µs | 2 | 71µs | # spent 39µs (7+32) within PPI::Token::Quote::Single::BEGIN@41 which was called:
# once (7µs+32µs) by PPI::Token::BEGIN@54 at line 41 # spent 39µs making 1 call to PPI::Token::Quote::Single::BEGIN@41
# spent 32µs making 1 call to vars::import |
42 | # spent 12µs within PPI::Token::Quote::Single::BEGIN@42 which was called:
# once (12µs+0s) by PPI::Token::BEGIN@54 at line 48 | ||||
43 | 2 | 12µs | $VERSION = '1.215'; | ||
44 | @ISA = qw{ | ||||
45 | PPI::Token::_QuoteEngine::Simple | ||||
46 | PPI::Token::Quote | ||||
47 | }; | ||||
48 | 1 | 139µs | 1 | 12µs | } # spent 12µs making 1 call to PPI::Token::Quote::Single::BEGIN@42 |
49 | |||||
- - | |||||
54 | ##################################################################### | ||||
55 | # PPI::Token::Quote Methods | ||||
56 | |||||
57 | =pod | ||||
58 | |||||
59 | =begin testing string 3 | ||||
60 | |||||
61 | my $Document = PPI::Document->new( \"print 'foo';" ); | ||||
62 | isa_ok( $Document, 'PPI::Document' ); | ||||
63 | my $Single = $Document->find_first('Token::Quote::Single'); | ||||
64 | isa_ok( $Single, 'PPI::Token::Quote::Single' ); | ||||
65 | is( $Single->string, 'foo', '->string returns as expected' ); | ||||
66 | |||||
67 | =end testing | ||||
68 | |||||
69 | =cut | ||||
70 | |||||
71 | sub string { | ||||
72 | my $str = $_[0]->{content}; | ||||
73 | substr( $str, 1, length($str) - 2 ); | ||||
74 | } | ||||
75 | |||||
76 | =pod | ||||
77 | |||||
78 | =begin testing literal 21 | ||||
79 | |||||
80 | my @pairs = ( | ||||
81 | "''", '', | ||||
82 | "'f'", 'f', | ||||
83 | "'f\\'b'", "f\'b", | ||||
84 | "'f\\nb'", "f\\nb", | ||||
85 | "'f\\\\b'", "f\\b", | ||||
86 | "'f\\\\\\b'", "f\\\\b", | ||||
87 | "'f\\\\\\\''", "f\\'", | ||||
88 | ); | ||||
89 | while ( @pairs ) { | ||||
90 | my $from = shift @pairs; | ||||
91 | my $to = shift @pairs; | ||||
92 | my $doc = PPI::Document->new( \"print $from;" ); | ||||
93 | isa_ok( $doc, 'PPI::Document' ); | ||||
94 | my $quote = $doc->find_first('Token::Quote::Single'); | ||||
95 | isa_ok( $quote, 'PPI::Token::Quote::Single' ); | ||||
96 | is( $quote->literal, $to, "The source $from becomes $to ok" ); | ||||
97 | } | ||||
98 | |||||
99 | =end testing | ||||
100 | |||||
101 | =cut | ||||
102 | |||||
103 | 1 | 2µs | my %UNESCAPE = ( | ||
104 | "\\'" => "'", | ||||
105 | "\\\\" => "\\", | ||||
106 | ); | ||||
107 | |||||
108 | sub literal { | ||||
109 | # Unescape \\ and \' ONLY | ||||
110 | my $str = $_[0]->string; | ||||
111 | $str =~ s/(\\.)/$UNESCAPE{$1} || $1/ge; | ||||
112 | return $str; | ||||
113 | } | ||||
114 | |||||
115 | 1 | 5µs | 1; | ||
116 | |||||
117 | =pod | ||||
118 | |||||
119 | =head1 SUPPORT | ||||
120 | |||||
121 | See the L<support section|PPI/SUPPORT> in the main module. | ||||
122 | |||||
123 | =head1 AUTHOR | ||||
124 | |||||
125 | Adam Kennedy E<lt>adamk@cpan.orgE<gt> | ||||
126 | |||||
127 | =head1 COPYRIGHT | ||||
128 | |||||
129 | Copyright 2001 - 2011 Adam Kennedy. | ||||
130 | |||||
131 | This program is free software; you can redistribute | ||||
132 | it and/or modify it under the same terms as Perl itself. | ||||
133 | |||||
134 | The full text of the license can be found in the | ||||
135 | LICENSE file included with this module. | ||||
136 | |||||
137 | =cut |