blib/lib/BBCode/Tag/QUOTE.pm | |||
---|---|---|---|
Criterion | Covered | Total | % |
statement | 40 | 53 | 75.4 |
branch | 13 | 20 | 65.0 |
condition | n/a | ||
subroutine | 10 | 12 | 83.3 |
pod | 8 | 8 | 100.0 |
total | 71 | 93 | 76.3 |
line | stmt | bran | cond | sub | pod | time | code |
---|---|---|---|---|---|---|---|
1 | # $Id: QUOTE.pm 284 2006-12-01 07:51:49Z chronos $ | ||||||
2 | package BBCode::Tag::QUOTE; | ||||||
3 | 3 | 3 | 35 | use base qw(BBCode::Tag::Block); | |||
3 | 6 | ||||||
3 | 293 | ||||||
4 | 3 | 3 | 20 | use BBCode::Util qw(:parse encodeHTML multilineText); | |||
3 | 6 | ||||||
3 | 746 | ||||||
5 | 3 | 3 | 20 | use strict; | |||
3 | 6 | ||||||
3 | 225 | ||||||
6 | 3 | 3 | 19 | use warnings; | |||
3 | 5 | ||||||
3 | 3349 | ||||||
7 | our $VERSION = '0.34'; | ||||||
8 | |||||||
9 | sub BodyPermitted($):method { | ||||||
10 | 12 | 12 | 1 | 51 | return 1; | ||
11 | } | ||||||
12 | |||||||
13 | sub NamedParams($):method { | ||||||
14 | 6 | 6 | 1 | 26 | return qw(SRC CITE FOLLOW); | ||
15 | } | ||||||
16 | |||||||
17 | sub RequiredParams($):method { | ||||||
18 | 0 | 0 | 1 | 0 | return (); | ||
19 | } | ||||||
20 | |||||||
21 | sub DefaultParam($):method { | ||||||
22 | 3 | 3 | 1 | 10 | return 'SRC'; | ||
23 | } | ||||||
24 | |||||||
25 | sub validateParam($):method { | ||||||
26 | 5 | 5 | 1 | 13 | my($this,$param,$val) = @_; | ||
27 | 5 | 100 | 22 | if($param eq 'CITE') { | |||
28 | 3 | 17 | my $url = parseURL($val); | ||||
29 | 3 | 100 | 15 | if(defined $url) { | |||
30 | 2 | 9 | return $url->as_string; | ||||
31 | } else { | ||||||
32 | 1 | 27 | die qq(Invalid value "$val" for [QUOTE CITE]); | ||||
33 | } | ||||||
34 | } | ||||||
35 | 2 | 25 | return $this->SUPER::validateParam($param,$val); | ||||
36 | } | ||||||
37 | |||||||
38 | sub toHTML($):method { | ||||||
39 | 2 | 2 | 1 | 41 | my $this = shift; | ||
40 | 2 | 14 | my $pfx = $this->parser->css_prefix; | ||||
41 | |||||||
42 | 2 | 11 | my $who = $this->param('SRC'); | ||||
43 | 2 | 9 | my $cite = $this->param('CITE'); | ||||
44 | 2 | 12 | my $body = $this->bodyHTML; | ||||
45 | |||||||
46 | 2 | 100 | 11 | $who = (defined $who ? encodeHTML($who).' wrote' : 'Quote'); | |||
47 | 2 | 100 | 8 | if(defined $cite) { | |||
48 | 1 | 50 | 5 | $who = | |||
49 | ' | ||||||
50 | ($this->isFollowed ? '' : ' rel="nofollow"'). | ||||||
51 | '>'. | ||||||
52 | $who. | ||||||
53 | ''; | ||||||
54 | } | ||||||
55 | 2 | 5 | $who .= ':'; | ||||
56 | |||||||
57 | 2 | 100 | 22 | return multilineText | |||
58 | qq( \n), |
||||||
59 | qq( $who \n), |
||||||
60 | qq(\n), |
||||||
61 | qq( \n$body\n \n), |
||||||
62 | qq(\n), | ||||||
63 | qq(\n); | ||||||
64 | } | ||||||
65 | |||||||
66 | sub toText($):method { | ||||||
67 | 0 | 0 | 1 | 0 | my $this = shift; | ||
68 | |||||||
69 | 0 | 0 | my $who = $this->param('SRC'); | ||||
70 | 0 | 0 | my $cite = $this->param('CITE'); | ||||
71 | 0 | 0 | my $body = $this->bodyText; | ||||
72 | 0 | 0 | $body =~ s/^/\t/m; | ||||
73 | 0 | 0 | $body =~ s/^\t$//m; | ||||
74 | |||||||
75 | 0 | 0 | my $ret = ''; | ||||
76 | 0 | 0 | 0 | $ret .= (defined $who ? "$who wrote" : 'Quote').":\n"; | |||
77 | 0 | 0 | 0 | $ret .= "Source: |
|||
78 | 0 | 0 | $ret .= $body; | ||||
79 | 0 | 0 | $ret .= "\n"; | ||||
80 | 0 | 0 | return multilineText $ret; | ||||
81 | } | ||||||
82 | |||||||
83 | sub toLinkList($;$):method { | ||||||
84 | 1 | 1 | 1 | 2 | my $this = shift; | ||
85 | 1 | 9 | my $ret = shift; | ||||
86 | 1 | 50 | 4 | $ret = [] if not defined $ret; | |||
87 | |||||||
88 | 1 | 5 | my $src = $this->param('SRC'); | ||||
89 | 1 | 4 | my $cite = $this->param('CITE'); | ||||
90 | 1 | 50 | 5 | if(defined $cite) { | |||
91 | 1 | 8 | push @$ret, [ $this->isFollowed, $this->Tag, $cite, $src ]; | ||||
92 | } | ||||||
93 | 1 | 7 | return $this->SUPER::toLinkList($ret); | ||||
94 | } | ||||||
95 | |||||||
96 | 1; |