protected static function _export($path, $tree, $coverage)
{
$s = [];
$statementMap = [];
$statementIndex = 1;
$f = [];
$fnMap = [];
$fnIndex = 1;
$fnCurr = null;
$fnCurrIndex = null;
foreach ($tree->lines['content'] as $num => $content) {
$coverable = null;
foreach ($content['nodes'] as $node) {
if ($node->type === 'function' && $node->lines['start'] === $num) {
if ($node->isMethod || !$node->isClosure) {
$f[$fnIndex] = 0;
$fnMap[$fnIndex] = ['name' => $node->name, 'line' => $num + 1, 'loc' => ['start' => ['line' => $num + 1, 'column' => 0], 'end' => ['line' => $node->lines['stop'] + 1, 'column' => strpos($node->body, '}')]]];
$fnCurr = $node;
$fnCurrIndex = $fnIndex;
$fnIndex++;
}
}
if ($node->coverable && $node->lines['stop'] === $num) {
$coverable = $node;
break;
}
}
if (!$coverable) {
continue;
}
$s[$statementIndex] = isset($coverage[$num]) ? $coverage[$num] : 0;
$statementMap[$statementIndex] = ['start' => ['line' => $num + 1, 'column' => 0], 'end' => ['line' => $coverable->lines['stop'] + 1, 'column' => strlen($node->body)]];
if ($fnCurr) {
if ($fnCurr->lines['stop'] >= $coverable->lines['stop']) {
$f[$fnCurrIndex] = max($f[$fnCurrIndex], $s[$statementIndex]);
}
}
$statementIndex++;
}
$b = [];
$branchMap = [];
return compact('path', 's', 'f', 'b', 'statementMap', 'fnMap', 'branchMap');
}