File Coverage

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: \n" if defined $cite;
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;