<?php namespace Gitonomy\Git\Diff; use Gitonomy\Git\Parser\DiffParser; use Gitonomy\Git\Repository; class Diff { protected $files; protected $rawDiff; public function __construct(array $files, $rawDiff) { $this->files = $files; $this->rawDiff = $rawDiff; } public static function parse($rawDiff) { $parser = new DiffParser(); $parser->parse($rawDiff); return new self($parser->files, $rawDiff); } public function setRepository(Repository $repository) { foreach ($this->files as $file) { $file->setRepository($repository); } } public function getFiles() { return $this->files; } public function getRawDiff() { return $this->rawDiff; } public function toArray() { return [ 'rawDiff' => $this->rawDiff, 'files' => array_map( function (File $file) { return $file->toArray(); }, $this->files ), ]; } public static function fromArray(array $array) { return new static( array_map( function ($array) { return File::fromArray($array); }, $array['files'] ), $array['rawDiff'] ); } }