static function examineCell($x, $y, $view, $raw, $vcol, $vrow, $vcorner, $cell, $offset = null) { if ($offset === null) { $offset = 0; } $nested = $view->isHash($raw); $cell->category = ""; $cell->category_given_tr = ""; $cell->separator = ""; $cell->pretty_separator = ""; $cell->conflicted = false; $cell->updated = false; $cell->meta = $cell->pvalue = $cell->lvalue = $cell->rvalue = null; $cell->value = $raw; $cell->pretty_value = $cell->value; if ($vrow === null) { $vrow = ""; } if ($vcol === null) { $vcol = ""; } if (strlen($vrow) >= 3 && _hx_char_at($vrow, 0) === "@" && _hx_char_at($vrow, 1) !== "@") { $idx = _hx_index_of($vrow, "@", 1); if ($idx >= 0) { $cell->meta = _hx_substr($vrow, 1, $idx - 1); $vrow = _hx_substr($vrow, $idx + 1, strlen($vrow)); $cell->category = "meta"; } } $removed_column = false; if ($vrow === ":") { $cell->category = "move"; } if ($vrow === "" && $offset === 1 && $y === 0) { $cell->category = "index"; } if (_hx_index_of($vcol, "+++", null) >= 0) { $cell->category_given_tr = $cell->category = "add"; } else { if (_hx_index_of($vcol, "---", null) >= 0) { $cell->category_given_tr = $cell->category = "remove"; $removed_column = true; } } if ($vrow === "!") { $cell->category = "spec"; } else { if ($vrow === "@@") { $cell->category = "header"; } else { if ($vrow === "...") { $cell->category = "gap"; } else { if ($vrow === "+++") { if (!$removed_column) { $cell->category = "add"; } } else { if ($vrow === "---") { $cell->category = "remove"; } else { if (_hx_index_of($vrow, "->", null) >= 0) { if (!$removed_column) { $tokens = _hx_explode("!", $vrow); $full = $vrow; $part = $tokens[1]; if ($part === null) { $part = $full; } $str = $view->toString($cell->value); if ($str === null) { $str = ""; } if ($nested || _hx_index_of($str, $part, null) >= 0) { $cat = "modify"; $div = $part; if ($part !== $full) { if ($nested) { $cell->conflicted = $view->hashExists($raw, "theirs"); } else { $cell->conflicted = _hx_index_of($str, $full, null) >= 0; } if ($cell->conflicted) { $div = $full; $cat = "conflict"; } } $cell->updated = true; $cell->separator = $div; $cell->pretty_separator = $div; if ($nested) { if ($cell->conflicted) { $tokens = new _hx_array(array($view->hashGet($raw, "before"), $view->hashGet($raw, "ours"), $view->hashGet($raw, "theirs"))); } else { $tokens = new _hx_array(array($view->hashGet($raw, "before"), $view->hashGet($raw, "after"))); } } else { $cell->pretty_value = $view->toString($cell->pretty_value); if ($cell->pretty_value === null) { $cell->pretty_value = ""; } if ($cell->pretty_value === $div) { $tokens = new _hx_array(array("", "")); } else { $tokens = _hx_explode($div, $cell->pretty_value); } } $pretty_tokens = $tokens; if ($tokens->length >= 2) { $pretty_tokens[0] = coopy_DiffRender::markSpaces($tokens[0], $tokens[1]); $pretty_tokens[1] = coopy_DiffRender::markSpaces($tokens[1], $tokens[0]); } if ($tokens->length >= 3) { $ref = $pretty_tokens[0]; $pretty_tokens[0] = coopy_DiffRender::markSpaces($ref, $tokens[2]); $pretty_tokens[2] = coopy_DiffRender::markSpaces($tokens[2], $ref); } $cell->pretty_separator = chr(8594); $cell->pretty_value = $pretty_tokens->join($cell->pretty_separator); $cell->category_given_tr = $cell->category = $cat; $offset1 = null; if ($cell->conflicted) { $offset1 = 1; } else { $offset1 = 0; } $cell->lvalue = $tokens[$offset1]; $cell->rvalue = $tokens[$offset1 + 1]; if ($cell->conflicted) { $cell->pvalue = $tokens[0]; } } } } } } } } } if ($x === 0 && $offset > 0) { $cell->category_given_tr = $cell->category = "index"; } }