public static function collectLines($result)
{
$aggregate = array('covered' => 0, 'executable' => 0);
foreach ($result as $class => $coverage) {
$out = array();
$file = Libraries::path($class);
$aggregate['covered'] += count($coverage['covered']);
$aggregate['executable'] += count($coverage['executable']);
$uncovered = array_flip($coverage['uncovered']);
$contents = explode("\n", file_get_contents($file));
array_unshift($contents, ' ');
$count = count($contents);
for ($i = 1; $i <= $count; $i++) {
if (isset($uncovered[$i])) {
if (!isset($out[$i - 2])) {
$out[$i - 2] = array('class' => 'ignored', 'data' => '...');
}
if (!isset($out[$i - 1])) {
$out[$i - 1] = array('class' => 'covered', 'data' => $contents[$i - 1]);
}
$out[$i] = array('class' => 'uncovered', 'data' => $contents[$i]);
if (!isset($uncovered[$i + 1])) {
$out[$i + 1] = array('class' => 'covered', 'data' => $contents[$i + 1]);
}
} elseif (isset($out[$i - 1]) && $out[$i - 1]['data'] !== '...' && !isset($out[$i]) && !isset($out[$i + 1])) {
$out[$i] = array('class' => 'ignored', 'data' => '...');
}
}
$result[$class]['output'][$file] = $out;
}
return $result;
}