| 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; |