blib/lib/Text/Livedoor/Wiki/CatalogKeeper.pm | |||
---|---|---|---|
Criterion | Covered | Total | % |
statement | 56 | 56 | 100.0 |
branch | 19 | 20 | 95.0 |
condition | 3 | 3 | 100.0 |
subroutine | 6 | 6 | 100.0 |
pod | 3 | 3 | 100.0 |
total | 87 | 88 | 98.8 |
line | stmt | bran | cond | sub | pod | time | code |
---|---|---|---|---|---|---|---|
1 | package Text::Livedoor::Wiki::CatalogKeeper; | ||||||
2 | |||||||
3 | 10 | 10 | 58 | use strict; | |||
10 | 97 | ||||||
10 | 351 | ||||||
4 | 10 | 10 | 52 | use warnings; | |||
10 | 16 | ||||||
10 | 272 | ||||||
5 | 10 | 10 | 3447 | use Data::Dumper; | |||
10 | 29271 | ||||||
10 | 6093 | ||||||
6 | |||||||
7 | my $NO_SETTING = " "; | ||||||
8 | |||||||
9 | sub new { | ||||||
10 | 92 | 92 | 1 | 156 | my $class =shift; | ||
11 | 92 | 347 | my $self = bless {} ,$class; | ||||
12 | 92 | 326 | $self->{data} = []; | ||||
13 | 92 | 327 | return $self; | ||||
14 | } | ||||||
15 | sub append { | ||||||
16 | 58 | 58 | 1 | 100 | my $self = shift; | ||
17 | 58 | 92 | my $args = shift; | ||||
18 | 58 | 86 | push @{$self->{data}} , $args; | ||||
58 | 302 | ||||||
19 | } | ||||||
20 | |||||||
21 | sub contents { | ||||||
22 | 76 | 76 | 1 | 136 | my $self = shift; | ||
23 | |||||||
24 | # divでこのうえを囲わない | ||||||
25 | 76 | 142 | my $prev = 0; | ||||
26 | 76 | 136 | my $contents = qq| \n \n
|
||||
27 | 76 | 164 | for ( my $i = 0 ; $i < scalar @{ $self->{data} } ; $i++ ) { | ||||
116 | 438 | ||||||
28 | 40 | 53 | my $flg = 1; | ||||
29 | 40 | 81 | my $item = $self->{data}[$i]; | ||||
30 | 40 | 100 | 54 | my $next = scalar @{$self->{data}} != $i+1 ? $self->{data}[$i+1]{level} : 0; | |||
40 | 229 | ||||||
31 | 40 | 195 | while( $flg ) { | ||||
32 | 46 | 100 | 127 | if( $item->{level} > $prev + 1 ) { | |||
33 | 6 | 11 | $prev++; | ||||
34 | #my $n = $prev == $item->{level} ? $next : $prev+1; | ||||||
35 | 6 | 12 | my $n = $next ; | ||||
36 | 6 | 29 | $contents .= sprintf( qq| |
||||
37 | |||||||
38 | 6 | 100 | 34 | if( $prev == $n ) { | |||
100 | |||||||
50 | |||||||
39 | 2 | 8 | $contents .= "\n"; | ||||
40 | } | ||||||
41 | elsif( $prev > $n ) { | ||||||
42 | 1 | 3 | my $diff= $item->{level} - $n; | ||||
43 | 1 | 3 | $contents .= "\n"; | ||||
44 | 1 | 3 | for(1..$diff) { | ||||
45 | 3 | 6 | $contents .= "\n\n"; | ||||
46 | } | ||||||
47 | } | ||||||
48 | elsif( $prev < $n ) { | ||||||
49 | 3 | 8 | $contents .= "\n
|
||||
50 | } | ||||||
51 | |||||||
52 | 6 | 15 | next; | ||||
53 | } | ||||||
54 | 40 | 100 | 107 | $prev= 1 if $prev== 0; | |||
55 | 40 | 99 | $flg = 0; | ||||
56 | } | ||||||
57 | 40 | 277 | $contents .= sprintf( qq| |
||||
58 | |||||||
59 | 40 | 100 | 100 | 254 | if( $item->{level} == $next ) { | ||
100 | |||||||
100 | |||||||
60 | 5 | 8 | $contents .= "\n"; | ||||
61 | } | ||||||
62 | elsif( $next != 0 && $item->{level} > $next ) { | ||||||
63 | 7 | 19 | my $diff= $item->{level} - $next; | ||||
64 | 7 | 10 | $contents .= "\n"; | ||||
65 | 7 | 21 | for(1..$diff) { | ||||
66 | 10 | 22 | $contents .= "\n\n"; | ||||
67 | } | ||||||
68 | } | ||||||
69 | elsif( $item->{level} < $next ) { | ||||||
70 | 14 | 25 | $contents .= "\n
|
||||
71 | } | ||||||
72 | |||||||
73 | 40 | 100 | 94 | if( $next == 0 ) { | |||
74 | 14 | 34 | $contents .= "\n"; | ||||
75 | 14 | 69 | for(1..($item->{level}-1)) { | ||||
76 | 10 | 23 | $contents .= "\n"; | ||||
77 | } | ||||||
78 | } | ||||||
79 | |||||||
80 | 40 | 96 | $prev = $item->{level}; | ||||
81 | } | ||||||
82 | |||||||
83 | 76 | 257 | $contents .= "\n\n\n"; | ||||
84 | |||||||
85 | 76 | 270 | return $contents; | ||||
86 | } | ||||||
87 | |||||||
88 | 1; | ||||||
89 | |||||||
90 | =head1 NAME | ||||||
91 | |||||||
92 | Text::Livedoor::Wiki::CatalogKeeper - Catalog Keeper | ||||||
93 | |||||||
94 | =head1 DESCRIPTION | ||||||
95 | |||||||
96 | keep h3,h4,h5 catalog | ||||||
97 | |||||||
98 | =head1 METHOD | ||||||
99 | |||||||
100 | =head2 append | ||||||
101 | |||||||
102 | =head2 contents | ||||||
103 | |||||||
104 | =head2 new | ||||||
105 | |||||||
106 | =head1 AUTHOR | ||||||
107 | |||||||
108 | polocky | ||||||
109 | |||||||
110 | =cut |