File Coverage

blib/lib/Text/Livedoor/Wiki/Plugin/Block/H3.pm
Criterion Covered Total %
statement 52 52 100.0
branch 8 8 100.0
condition 14 15 93.3
subroutine 5 5 100.0
pod 2 2 100.0
total 81 82 98.7


line stmt bran cond sub pod time code
1             package Text::Livedoor::Wiki::Plugin::Block::H3;
2              
3 5     5   31 use warnings;
  5         11  
  5         149  
4 5     5   25 use strict;
  5         12  
  5         149  
5 5     5   26 use base qw(Text::Livedoor::Wiki::Plugin::Block);
  5         9  
  5         1553  
6              
7             sub check {
8 301     301 1 452 my $class = shift;
9 301         397 my $line = shift;
10 301         413 my $args = shift;
11 301         486 my $id = $args->{id};
12 301         498 my $inline = $args->{inline};
13 301         512 my $on_next = $args->{on_next};
14 301         428 my $scratchpad = $Text::Livedoor::Wiki::scratchpad;
15              
16              
17 301         3490 my $catalog_keeper = $Text::Livedoor::Wiki::opts->{catalog_keeper};
18 301         438 my $id_keeper = $Text::Livedoor::Wiki::opts->{id_keeper};
19 301         580 my $skip_catalog = $Text::Livedoor::Wiki::opts->{skip_catalog};
20              
21 301         744 my $key = 'h3_is_active_' . $id;
22             #if ( $line =~ /^\*[^\*]./ && !$on_next && !$class->get_child($id) ){
23 301 100 100     2696 if ( $line =~ /^\*[^\*]+/ && !$on_next && !$class->get_child($id) ){
    100 100        
    100 100        
      100        
      66        
24 32         99 $scratchpad->{$key} = 1 ;
25 32         147 $line =~ s/^\*//;
26 32         142 my $title = $inline->parse($line);
27 32         67 my $header = '';
28 32         68 my $header_meta = {};
29              
30             #XXX
31 32         95 $Text::Livedoor::Wiki::scratchpad->{skip_ajust_block_break} = '1';
32            
33 32 100       112 if( $skip_catalog ) {
34 2         9 $header = sprintf( qq|

%s

\n| , $title ) ;
35             }
36             else {
37 30         173 $id_keeper->up(1);
38 30         212 $Text::Livedoor::Wiki::scratchpad->{core}{h3pos}{$id_keeper->id(1)} = $Text::Livedoor::Wiki::scratchpad->{core}{current_pos};
39 30         133 $catalog_keeper->append( {level=>1 , id => $id_keeper->id(1) , label => $title } );
40 30         110 $header
41             = sprintf( qq|

%s

\n| , $id_keeper->id(1) , $title ) ;
42 30         142 $header_meta = {
43             id => $id_keeper->id(1),
44             title => $title,
45             };
46             }
47 32         293 return { id => $id , header => $header , header_meta => $header_meta };
48             }
49             elsif( $on_next && $class->trigger_check($id,$line) && $line =~ /^\*/ && $scratchpad->{$key} ) {
50 20         43 $scratchpad->{$key} = 0 ;
51 20         95 return ;
52             }
53             elsif( $scratchpad->{$key} ) {
54 76         495 return { line => $line };
55             }
56 173         915 return;
57              
58             }
59              
60             sub get {
61 32     32 1 67 my $class = shift;
62 32         57 my $block = shift;
63 32         48 my $inline = shift;
64 32         54 my $items = shift;
65 32         49 my $meta = shift @{$items};
  32         70  
66 32         66 my $header = $meta->{header} ;
67 32         64 my $id = $meta->{id};
68 32         51 my $html = '';
69 32         138 $html .= $_->{line} . "\n" for @$items;
70 32         114 $html =~ s/\n$//;
71             # block in block
72 32         144 $html = $block->parse( $html , 1 ) ;
73 32         279 return qq|
\n$header
\n$html
\n
\n|;
74             }
75              
76             1;
77              
78             =head1 NAME
79              
80             Text::Livedoor::Wiki::Plugin::Block::H3 - H3 Block Plugin
81              
82             =head1 DESCRIPTION
83              
84             H3 is top level header.
85              
86             =head2 SYNOPSIS
87              
88             * Title
89            
90             contents
91            
92            
93             * Title2
94            
95             Content
96              
97             =head1 FUNCTION
98              
99             =head2 check
100              
101             =head2 get
102              
103             =head1 AUTHOR
104              
105             polocky
106              
107             =cut