diff --git a/resources/celerity/map.php b/resources/celerity/map.php --- a/resources/celerity/map.php +++ b/resources/celerity/map.php @@ -9,7 +9,7 @@ 'names' => array( 'conpherence.pkg.css' => '3c8a0668', 'conpherence.pkg.js' => '020aebcf', - 'core.pkg.css' => '7ce5a944', + 'core.pkg.css' => '88366522', 'core.pkg.js' => '6e5c894f', 'differential.pkg.css' => '607c84be', 'differential.pkg.js' => 'a0212a0b', @@ -169,7 +169,7 @@ 'rsrc/css/phui/phui-pager.css' => 'd022c7ad', 'rsrc/css/phui/phui-pinboard-view.css' => '1f08f5d8', 'rsrc/css/phui/phui-policy-section-view.css' => '139fdc64', - 'rsrc/css/phui/phui-property-list-view.css' => '807b1632', + 'rsrc/css/phui/phui-property-list-view.css' => '9c477af1', 'rsrc/css/phui/phui-remarkup-preview.css' => '91767007', 'rsrc/css/phui/phui-segment-bar-view.css' => '5166b370', 'rsrc/css/phui/phui-spacing.css' => 'b05cadc3', @@ -865,7 +865,7 @@ 'phui-pager-css' => 'd022c7ad', 'phui-pinboard-view-css' => '1f08f5d8', 'phui-policy-section-view-css' => '139fdc64', - 'phui-property-list-view-css' => '807b1632', + 'phui-property-list-view-css' => '9c477af1', 'phui-remarkup-preview-css' => '91767007', 'phui-segment-bar-view-css' => '5166b370', 'phui-spacing-css' => 'b05cadc3', diff --git a/src/applications/files/document/PhabricatorJupyterDocumentEngine.php b/src/applications/files/document/PhabricatorJupyterDocumentEngine.php --- a/src/applications/files/document/PhabricatorJupyterDocumentEngine.php +++ b/src/applications/files/document/PhabricatorJupyterDocumentEngine.php @@ -93,6 +93,54 @@ $u_content = $this->newCellContainer($u_content); $v_content = $this->newCellContainer($v_content); + return id(new PhabricatorDocumentEngineBlockDiff()) + ->setOldContent($u_content) + ->addOldClass('old') + ->setNewContent($v_content) + ->addNewClass('new'); + case 'code/line': + $usource = idx($ucell, 'raw'); + $vsource = idx($vcell, 'raw'); + $udisplay = idx($ucell, 'display'); + $vdisplay = idx($vcell, 'display'); + $ulabel = idx($ucell, 'label'); + $vlabel = idx($vcell, 'label'); + + $intraline_segments = ArcanistDiffUtils::generateIntralineDiff( + $usource, + $vsource); + + $u_segments = array(); + foreach ($intraline_segments[0] as $u_segment) { + $u_segments[] = $u_segment; + } + + $v_segments = array(); + foreach ($intraline_segments[1] as $v_segment) { + $v_segments[] = $v_segment; + } + + $usource = ArcanistDiffUtils::applyIntralineDiff( + $udisplay, + $u_segments); + + $vsource = ArcanistDiffUtils::applyIntralineDiff( + $vdisplay, + $v_segments); + + $u_content = $this->newCodeLineCell($ucell, $usource); + $v_content = $this->newCodeLineCell($vcell, $vsource); + + $classes = array( + 'jupyter-cell-flush', + ); + + $u_content = $this->newJupyterCell($ulabel, $u_content, $classes); + $v_content = $this->newJupyterCell($vlabel, $v_content, $classes); + + $u_content = $this->newCellContainer($u_content); + $v_content = $this->newCellContainer($v_content); + return id(new PhabricatorDocumentEngineBlockDiff()) ->setOldContent($u_content) ->addOldClass('old') @@ -441,8 +489,10 @@ return $this->newCodeOutputCell($cell); } - return $this->newRawCell(id(new PhutilJSON()) - ->encodeFormatted($cell)); + $json_content = id(new PhutilJSON()) + ->encodeFormatted($cell); + + return $this->newRawCell($json_content); } private function newRawCell($content) { @@ -514,7 +564,7 @@ ); } - private function newCodeLineCell(array $cell) { + private function newCodeLineCell(array $cell, $content = null) { $classes = array(); $classes[] = 'PhabricatorMonospaced'; $classes[] = 'remarkup-code'; @@ -531,6 +581,10 @@ $classes = implode(' ', $classes); + if ($content === null) { + $content = $cell['display']; + } + return array( $cell['label'], array( @@ -540,7 +594,7 @@ 'class' => $classes, ), array( - $cell['display'], + $content, )), ), ); diff --git a/webroot/rsrc/css/phui/phui-property-list-view.css b/webroot/rsrc/css/phui/phui-property-list-view.css --- a/webroot/rsrc/css/phui/phui-property-list-view.css +++ b/webroot/rsrc/css/phui/phui-property-list-view.css @@ -316,12 +316,12 @@ } td.new .jupyter-cell-code-line { - background: {$new-background}; + background: rgba(255, 255, 255, 0.5); border-color: {$new-bright}; } td.old .jupyter-cell-code-line { - background: {$old-background}; + background: rgba(255, 255, 255, 0.5); border-color: {$old-bright}; }