Changeset View
Changeset View
Standalone View
Standalone View
src/applications/differential/parser/DifferentialChangesetParser.php
Show First 20 Lines • Show All 1,712 Lines • ▼ Show 20 Lines | private function newDocumentEngine() { | ||||
$old_engines = PhabricatorDocumentEngine::getEnginesForRef( | $old_engines = PhabricatorDocumentEngine::getEnginesForRef( | ||||
$viewer, | $viewer, | ||||
$old_ref); | $old_ref); | ||||
$new_engines = PhabricatorDocumentEngine::getEnginesForRef( | $new_engines = PhabricatorDocumentEngine::getEnginesForRef( | ||||
$viewer, | $viewer, | ||||
$new_ref); | $new_ref); | ||||
$shared_engines = array_intersect_key($old_engines, $new_engines); | $shared_engines = array_intersect_key($new_engines, $old_engines); | ||||
$default_engine = head_key($new_engines); | |||||
foreach ($shared_engines as $key => $shared_engine) { | foreach ($shared_engines as $key => $shared_engine) { | ||||
if (!$shared_engine->canDiffDocuments($old_ref, $new_ref)) { | if (!$shared_engine->canDiffDocuments($old_ref, $new_ref)) { | ||||
unset($shared_engines[$key]); | unset($shared_engines[$key]); | ||||
} | } | ||||
} | } | ||||
$engine_key = $this->getDocumentEngineKey(); | $engine_key = $this->getDocumentEngineKey(); | ||||
if (strlen($engine_key)) { | if (strlen($engine_key)) { | ||||
if (isset($shared_engines[$engine_key])) { | if (isset($shared_engines[$engine_key])) { | ||||
$document_engine = $shared_engines[$engine_key]; | $document_engine = $shared_engines[$engine_key]; | ||||
} else { | } else { | ||||
$document_engine = null; | $document_engine = null; | ||||
} | } | ||||
} else { | } else { | ||||
$document_engine = head($shared_engines); | // If we aren't rendering with a specific engine, only use a default | ||||
// engine if the best engine for the new file is a shared engine which | |||||
// can diff files. If we're less picky (for example, by accepting any | |||||
// shared engine) we can end up with silly behavior (like ".json" files | |||||
// rendering as Jupyter documents). | |||||
if (isset($shared_engines[$default_engine])) { | |||||
$document_engine = $shared_engines[$default_engine]; | |||||
} else { | |||||
$document_engine = null; | |||||
} | |||||
} | } | ||||
if ($document_engine) { | if ($document_engine) { | ||||
return array( | return array( | ||||
$document_engine, | $document_engine, | ||||
$old_ref, | $old_ref, | ||||
$new_ref); | $new_ref); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 75 Lines • Show Last 20 Lines |