File Coverage

blib/lib/Text/Livedoor/Wiki/Plugin/Function/Fukidashi.pm
Criterion Covered Total %
statement 48 48 100.0
branch 14 14 100.0
condition n/a
subroutine 8 8 100.0
pod 4 4 100.0
total 74 74 100.0


line stmt bran cond sub pod time code
1             package Text::Livedoor::Wiki::Plugin::Function::Fukidashi;
2 11     11   60 use warnings;
  11         20  
  11         345  
3 11     11   58 use strict;
  11         21  
  11         326  
4 11     11   52 use base qw(Text::Livedoor::Wiki::Plugin::Function);
  11         24  
  11         588  
5 11     11   669 use Text::Livedoor::Wiki::Utils;
  11         23  
  11         88  
6              
7             __PACKAGE__->function_name('fukidashi');
8              
9             sub prepare_args {
10 16     16 1 35 my $class= shift;
11 16         34 my $args = shift;
12 16         27 my $image_url = '';
13 16         30 my $location = 'left';
14              
15 16 100       60 my $icon = scalar @$args ? $args->[0] : '' ;
16 16         25 my $type = '';
17             # livedoor icon
18 16 100       89 if( $icon =~ /^[a-zA-Z0-9_]+$/ ) {
    100          
19 8         17 $type = 'livedoor_id';
20             # image
21             }elsif( Text::Livedoor::Wiki::Utils::is_image_url( $icon ) ){
22 3         7 $type = 'image';
23             # default
24             }else {
25 5         11 $type = 'image';
26 5         21 $icon = $class->default_icon;
27             }
28              
29             # potision
30 16 100       63 if( scalar @$args == 2 ) {
31 5         12 my $loc = $args->[1] ;
32 5 100       20 $location = $loc if $loc eq 'right';
33             }
34              
35             # return result
36 16         123 return { type => $type, icon => $icon , location => $location }
37              
38             }
39              
40             sub process {
41 13     13 1 34 my ( $class, $inline , $data ) = @_;
42 13         67 my $value = $inline->parse($data->{value} );
43 13         45 my $icon = $data->{args}{icon};
44 13         32 my $location = $data->{args}{location};
45 13         85 my $type = $data->{args}{type};
46              
47 13 100       49 if( $type eq 'livedoor_id' ) {
48 7         29 $icon = qq||;
49             }else {
50 6         19 $icon = qq||;
51             }
52              
53 13         129 return qq|
\n
$icon
$value
\n
\n
\n
\n|;
54             }
55              
56             sub default_icon {
57 5     5 1 11 my $class = shift;
58 5         53 my $default_icon_url = $class->opts->{storage} . '/images/function/fukidashi/icon_guest.gif';
59 5         16 return $default_icon_url;
60             }
61              
62             sub process_mobile {
63 3     3 1 5 my ( $class, $inline , $data ) = @_;
64 3         10 my $value = $inline->parse($data->{value} );
65 3         8 my $icon = $data->{args}{icon};
66 3         7 my $location = $data->{args}{location};
67 3         5 my $type = $data->{args}{type};
68              
69 3 100       10 if( $type eq 'livedoor_id' ) {
70 1         5 $icon = qq||;
71             }
72             else {
73 2         5 $icon = qq||;
74             }
75              
76 3         23 return $icon . $value ;
77             }
78              
79             1;
80              
81             =head1 NAME
82              
83             Text::Livedoor::Wiki::Plugin::Function::Fukidashi - Fukidashi Function Plugin
84              
85             =head1 DESCRIPTION
86              
87             Everybody likes a good looking Fukidashi.
88              
89             =head1 SYNOPSIS
90              
91             &fukidashi(polocky){i am polocky}
92             &fukidashi(polocky,right){i am polocky}
93             &fukidashi(polocky,left){i am polocky}
94             &fukidashi(,right){i am polocky}
95             &fukidashi(){i am polocky}
96             &fukidashi(http://image.livedoor.com/img/top/10/logo.gif){i am polocky}
97              
98             =head1 CSS
99              
100             DOCUMENT ME
101              
102             =head1 FUNCTION
103              
104             =head2 prepare_args
105              
106             =head2 process
107              
108             =head2 default_icon
109              
110             =head2 process_mobile
111              
112             =head1 AUTHOR
113              
114             polocky
115              
116             =cut