File Coverage

blib/lib/Text/HikiDoc/Plugin/syntaxhighlighter.pm
Criterion Covered Total %
statement 33 39 84.6
branch 1 2 50.0
condition 1 2 50.0
subroutine 5 6 83.3
pod n/a
total 40 49 81.6


line stmt bran cond sub pod time code
1             package Text::HikiDoc::Plugin::syntaxhighlighter;
2              
3 1     1   5 use strict;
  1         2  
  1         45  
4 1     1   5 use warnings;
  1         2  
  1         36  
5 1     1   5 no warnings 'redefine';
  1         2  
  1         597  
6              
7             *Text::HikiDoc::_parse_pre = sub {
8 5     5   11 my $self = shift;
9 5   50     17 my $string = shift || '';
10              
11 5 50       11 return '' unless $string;
12              
13 5         6 my $MULTI_PRE_OPEN_RE = '<<<';
14 5         9 my $MULTI_PRE_CLOSE_RE = '>>>';
15 5         8 my $PRE_RE = "^[ \t]";
16              
17             # pre
18 5         63 $string =~ s|^$MULTI_PRE_OPEN_RE$(.*?)^$MULTI_PRE_CLOSE_RE$|"\n".$self->_store_block('
'.$self->_restore_pre($1).'
')."\n\n"|esgm;
  1         6  
19              
20             # aa
21 5         72 $string =~ s|^$MULTI_PRE_OPEN_RE[ \t]*[aA]{2}$(.*?)^$MULTI_PRE_CLOSE_RE$|"\n".$self->_store_block('
'.$1.'
')."\n\n"|esgm;
  1         11  
22              
23             # raw
24             my $c = sub {
25 1     1   5 my $str = shift;
26 1         5 $str =~ s/</
27 1         4 $str =~ s/>/>/g;
28 1         4 $str =~ s/&/&/g;
29 1         5 return $str;
30 5         26 };
31 5         53 $string =~ s|^$MULTI_PRE_OPEN_RE[ \t]*[rR][aA][wW]$(.*?)^$MULTI_PRE_CLOSE_RE$|"\n".$c->($1)."\n\n"|esgm;
  1         4  
32              
33             # syntaxhighlight
34 5         66 $string =~ s|^$MULTI_PRE_OPEN_RE[ \t]*(\w*)$(.*?)^$MULTI_PRE_CLOSE_RE$|"\n".$self->_store_block('
'.$2.'
')."\n\n"|esgm;
  2         19  
35              
36             $c = sub {
37 0     0   0 my $string = shift;
38 0         0 my $regexp = shift;
39              
40 0         0 chomp $string;
41 0         0 $string =~ s|$regexp||gm;
42              
43 0         0 return $string;
44 5         21 };
45 5         59 $string =~ s|((?:$PRE_RE.*\n?)+)|"\n".$self->_store_block("
\n".$self->_restore_pre($c->($1,$PRE_RE))."\n
")."\n\n"|egm;
  0         0  
46 5         8 $c = undef;
47              
48 5         34 return $string;
49             };
50              
51             1;