• Модуль: wiki
  • Путь к файлу: ~/bitrix/modules/wiki/lib/diff.php
  • Класс: BitrixWikiDiff
  • Вызов: Diff::createDiff
protected function createDiff(array $a, array $b)
{
	$indexA = 0;
	$indexB = 0;
	$result = array();
	while ($indexA < count($a) || $indexB < count($b))
	{
		if (($indexA < count($a)) && (!$this->modifiedA[$indexA]) && ($indexB < count($b)) && (!$this->modifiedB[$indexB]))
		{
			// equal lines
			$indexA++;
			$indexB++;
		}
		else
		{
			// maybe deleted and/or inserted lines
			$startA = $indexA;
			$startB = $indexB;

			while ($indexA < count($a) && ($indexB >= count($b) || $this->modifiedA[$indexA]))
			{
				$indexA++;
			}

			while ($indexB < count($b) && ($indexA >= count($a) || $this->modifiedB[$indexB]))
			{
				$indexB++;
			}

			if (($startA < $indexA) || ($startB < $indexB))
			{
				// store a new difference-item
				$result[] = array("startA" => $startA, "startB" => $startB, "deletedA" => $indexA - $startA, "insertedB" => $indexB - $startB);
			}
		}
	}
	return $result;
}