Ecg\Magniffer\Inspector\Php::prepareIssue PHP Method

prepareIssue() protected method

protected prepareIssue ( $xpath, SimpleXMLElement $node, array $pattern ) : array
$xpath
$node SimpleXMLElement
$pattern array
return array
    protected function prepareIssue($xpath, SimpleXMLElement $node, array $pattern)
    {
        $issue = array('message' => $pattern['message'], 'inspector' => get_class($this));
        if ($node->xpath('./attribute:startLine/scalar:int/text()')) {
            $issue['start'] = (int) current($node->xpath('./attribute:startLine/scalar:int/text()'));
            $issue['end'] = (int) current($node->xpath('./attribute:endLine/scalar:int/text()'));
        } else {
            $issue['start'] = (int) $node->xpath('preceding::attribute:startLine[1]/scalar:int/text()')[0];
            $issue['end'] = (int) $node->xpath('preceding::attribute:endLine[1]/scalar:int/text()')[0];
        }
        $issue['line'] = $issue['start'] == $issue['end'] ? $issue['start'] : $issue['start'] . '-' . $issue['end'];
        if ($issue['start'] == $issue['end']) {
            $issue['source'] = array(trim($this->contentArray[$issue['start'] - 1]));
        } else {
            $issue['source'] = array_slice($this->contentArray, $issue['start'], $issue['end'] - $issue['start']);
            $issue['source'] = array_map('trim', $issue['source']);
        }
        $numParents = array_filter(explode('//', $xpath));
        if (count($numParents) > 1) {
            $path = str_repeat('../', count($numParents) + 1);
            $issue['parent_start'] = (int) current($node->xpath("{$path}/attribute:startLine/scalar:int/text()"));
            $issue['parent_end'] = (int) current($node->xpath("{$path}/attribute:endLine/scalar:int/text()"));
        }
        if (isset($issue['parent_start']) && isset($issue['parent_end']) && $issue['parent_start'] != $issue['start'] && $issue['parent_end'] != $issue['end']) {
            $issue['source'] = array_merge(array(trim($this->contentArray[$issue['parent_start'] - 1]), '...'), $issue['source'], array('...', trim($this->contentArray[$issue['parent_end'] - 1])));
        }
        return $issue;
    }