File Coverage

lib/Plack/App/APISchema/Document.pm
Criterion Covered Total %
statement 35 35 100.0
branch n/a
condition 2 2 100.0
subroutine 10 10 100.0
pod 1 1 100.0
total 48 48 100.0


line stmt bran cond sub pod time code
1             package Plack::App::APISchema::Document;
2 1     1   979 use strict;
  1         1  
  1         23  
3 1     1   4 use warnings;
  1         1  
  1         22  
4 1     1   4 use parent qw(Plack::Component);
  1         2  
  1         5  
5 1     1   4230 use Plack::Util::Accessor qw(schema);
  1         271  
  1         5  
6 1     1   420 use Text::Markdown::Hoedown qw(markdown);
  1         839  
  1         56  
7 1     1   399 use Text::MicroTemplate qw(encoded_string);
  1         2710  
  1         49  
8 1     1   382 use Text::MicroTemplate::DataSection qw(render_mt);
  1         11642  
  1         56  
9 1     1   7 use Encode qw(encode_utf8);
  1         2  
  1         49  
10              
11 1     1   360 use APISchema::Generator::Markdown;
  1         3  
  1         146  
12              
13             sub call {
14 3     3 1 18524 my ($self, $env) = @_;
15              
16 3         23 my $generator = APISchema::Generator::Markdown->new;
17 3         2623 my $markdown = $generator->format_schema($self->schema);
18              
19 3         515 my $body = markdown(
20             $markdown,
21             extensions => int(
22             0
23             | Text::Markdown::Hoedown::HOEDOWN_EXT_TABLES
24             | Text::Markdown::Hoedown::HOEDOWN_EXT_AUTOLINK
25             | Text::Markdown::Hoedown::HOEDOWN_EXT_FENCED_CODE
26             | Text::Markdown::Hoedown::HOEDOWN_EXT_NO_INTRA_EMPHASIS
27             )
28             );
29              
30 3         399 my $renderer = Text::MicroTemplate::DataSection->new(package => ref $self);
31 3   100     247 my $title = $self->schema->title || '';
32 3         36 my $html = $renderer->render_mt('template.mt', $title, $body);
33              
34 3         3616 return [200, ['Content-Type' => 'text/html; charset=utf-8'], [encode_utf8 $html]];
35             }
36              
37             1;
38             __DATA__