4415c520de060b056d63b88fb17d289e0d82b032
[yaffs-website] / vendor / phpunit / php-code-coverage / src / CodeCoverage / Report / HTML / Renderer / Directory.php
1 <?php
2 /*
3  * This file is part of the PHP_CodeCoverage package.
4  *
5  * (c) Sebastian Bergmann <sebastian@phpunit.de>
6  *
7  * For the full copyright and license information, please view the LICENSE
8  * file that was distributed with this source code.
9  */
10
11 /**
12  * Renders a PHP_CodeCoverage_Report_Node_Directory node.
13  *
14  * @since Class available since Release 1.1.0
15  */
16 class PHP_CodeCoverage_Report_HTML_Renderer_Directory extends PHP_CodeCoverage_Report_HTML_Renderer
17 {
18     /**
19      * @param PHP_CodeCoverage_Report_Node_Directory $node
20      * @param string                                 $file
21      */
22     public function render(PHP_CodeCoverage_Report_Node_Directory $node, $file)
23     {
24         $template = new Text_Template($this->templatePath . 'directory.html', '{{', '}}');
25
26         $this->setCommonTemplateVariables($template, $node);
27
28         $items = $this->renderItem($node, true);
29
30         foreach ($node->getDirectories() as $item) {
31             $items .= $this->renderItem($item);
32         }
33
34         foreach ($node->getFiles() as $item) {
35             $items .= $this->renderItem($item);
36         }
37
38         $template->setVar(
39             array(
40                 'id'    => $node->getId(),
41                 'items' => $items
42             )
43         );
44
45         $template->renderTo($file);
46     }
47
48     /**
49      * @param  PHP_CodeCoverage_Report_Node $item
50      * @param  bool                         $total
51      * @return string
52      */
53     protected function renderItem(PHP_CodeCoverage_Report_Node $item, $total = false)
54     {
55         $data = array(
56             'numClasses'                   => $item->getNumClassesAndTraits(),
57             'numTestedClasses'             => $item->getNumTestedClassesAndTraits(),
58             'numMethods'                   => $item->getNumMethods(),
59             'numTestedMethods'             => $item->getNumTestedMethods(),
60             'linesExecutedPercent'         => $item->getLineExecutedPercent(false),
61             'linesExecutedPercentAsString' => $item->getLineExecutedPercent(),
62             'numExecutedLines'             => $item->getNumExecutedLines(),
63             'numExecutableLines'           => $item->getNumExecutableLines(),
64             'testedMethodsPercent'         => $item->getTestedMethodsPercent(false),
65             'testedMethodsPercentAsString' => $item->getTestedMethodsPercent(),
66             'testedClassesPercent'         => $item->getTestedClassesAndTraitsPercent(false),
67             'testedClassesPercentAsString' => $item->getTestedClassesAndTraitsPercent()
68         );
69
70         if ($total) {
71             $data['name'] = 'Total';
72         } else {
73             if ($item instanceof PHP_CodeCoverage_Report_Node_Directory) {
74                 $data['name'] = sprintf(
75                     '<a href="%s/index.html">%s</a>',
76                     $item->getName(),
77                     $item->getName()
78                 );
79
80                 $data['icon'] = '<span class="glyphicon glyphicon-folder-open"></span> ';
81             } else {
82                 $data['name'] = sprintf(
83                     '<a href="%s.html">%s</a>',
84                     $item->getName(),
85                     $item->getName()
86                 );
87
88                 $data['icon'] = '<span class="glyphicon glyphicon-file"></span> ';
89             }
90         }
91
92         return $this->renderItemTemplate(
93             new Text_Template($this->templatePath . 'directory_item.html', '{{', '}}'),
94             $data
95         );
96     }
97 }