File Coverage

blib/lib/Text/MicroMason/ServerPages.pm
Criterion Covered Total %
statement 10 10 100.0
branch 5 8 62.5
condition 2 2 100.0
subroutine 4 4 100.0
pod 1 1 100.0
total 22 25 88.0


line stmt bran cond sub pod time code
1             package Text::MicroMason::ServerPages;
2              
3 1     1   431 use strict;
  1         2  
  1         22  
4 1     1   4 use Carp;
  1         12  
  1         95  
5              
6 1     1   375 use Safe;
  1         27295  
  1         162  
7              
8             ######################################################################
9              
10             my %block_types = (
11             '' => 'perl', # <% perl statements %>
12             '=' => 'expr', # <%= perl expression %>
13             '--' => 'doc', # <%-- this text will not appear in the output --%>
14             '&' => 'file', # <%& filename argument %>
15             );
16              
17             my $re_eol = "(?:\\r\\n|\\r|\\n|\\z)";
18             my $re_tag = "perl|args|once|init|cleanup|doc|text|expr|file";
19              
20             sub lex_token {
21             # Blocks in <%word> ... <%word> tags.
22             /\G \<\%($re_tag)\> (.*?) \<\/\%\1\> $re_eol? /xcogs ? ( $1 => $2 ) :
23            
24             # Blocks in <% ... %> tags.
25 51 50 100 51 1 375 /\G \<\% (\=|\&)? ( .*? ) \%\> /gcxs ? ( $block_types{$1 || ''} => $2 ) :
    50          
    100          
    50          
26            
27             # Blocks in <%-- ... --%> tags.
28             /\G \<\% \-\- ( .*? ) \-\- \%\> /gcxs ? ( 'doc' => $1 ) :
29            
30             # Things that don't match the above
31             /\G ( (?: [^\<]+ | \<(?!\%) )? ) /gcxs ? ( 'text' => $1 ) :
32              
33             # Lexer error
34             ()
35             }
36              
37             ######################################################################
38              
39             1;
40              
41             __END__