Page MenuHomePhabricator

D21434.id.diff
No OneTemporary

D21434.id.diff

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
@@ -85,15 +85,8 @@
if ($utype === $vtype) {
switch ($utype) {
case 'markdown':
- $usource = idx($ucell, 'source');
- if (is_array($usource)) {
- $usource = implode('', $usource);
- }
-
- $vsource = idx($vcell, 'source');
- if (is_array($vsource)) {
- $vsource = implode('', $vsource);
- }
+ $usource = $this->readString($ucell, 'source');
+ $vsource = $this->readString($vcell, 'source');
$diff = id(new PhutilProseDifferenceEngine())
->getDiff($usource, $vsource);
@@ -117,8 +110,6 @@
$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,
@@ -142,15 +133,15 @@
$vdisplay,
$v_segments);
- $u_content = $this->newCodeLineCell($ucell, $usource);
- $v_content = $this->newCodeLineCell($vcell, $vsource);
+ list($u_label, $u_content) = $this->newCodeLineCell($ucell, $usource);
+ list($v_label, $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->newJupyterCell($u_label, $u_content, $classes);
+ $v_content = $this->newJupyterCell($v_label, $v_content, $classes);
$u_content = $this->newCellContainer($u_content);
$v_content = $this->newCellContainer($v_content);
@@ -259,10 +250,7 @@
$hash_input = $cell['raw'];
break;
case 'markdown':
- $hash_input = $cell['source'];
- if (is_array($hash_input)) {
- $hash_input = implode('', $cell['source']);
- }
+ $hash_input = $this->readString($cell, 'source');
break;
default:
$hash_input = serialize($cell);
@@ -334,7 +322,6 @@
'be rendered as a Jupyter notebook.'));
}
-
$nbformat = idx($data, 'nbformat');
if (!strlen($nbformat)) {
throw new Exception(
@@ -376,10 +363,7 @@
foreach ($cells as $cell) {
$cell_type = idx($cell, 'cell_type');
if ($cell_type === 'markdown') {
- $source = $cell['source'];
- if (is_array($source)) {
- $source = implode('', $source);
- }
+ $source = $this->readString($cell, 'source');
// Attempt to split contiguous blocks of markdown into smaller
// pieces.
@@ -404,11 +388,7 @@
$label = $this->newCellLabel($cell);
- $lines = idx($cell, 'source');
- if (!is_array($lines)) {
- $lines = array();
- }
-
+ $lines = $this->readStringList($cell, 'source');
$content = $this->highlightLines($lines);
$count = count($lines);
@@ -526,10 +506,7 @@
}
private function newMarkdownCell(array $cell) {
- $content = idx($cell, 'source');
- if (!is_array($content)) {
- $content = array();
- }
+ $content = $this->readStringList($cell, 'source');
// TODO: This should ideally highlight as Markdown, but the "md"
// highlighter in Pygments is painfully slow and not terribly useful.
@@ -549,11 +526,7 @@
private function newCodeCell(array $cell) {
$label = $this->newCellLabel($cell);
- $content = idx($cell, 'source');
- if (!is_array($content)) {
- $content = array();
- }
-
+ $content = $this->readStringList($cell, 'source');
$content = $this->highlightLines($content);
$outputs = array();
@@ -660,11 +633,7 @@
continue;
}
- $raw_data = $data[$image_format];
- if (!is_array($raw_data)) {
- $raw_data = array($raw_data);
- }
- $raw_data = implode('', $raw_data);
+ $raw_data = $this->readString($data, $image_format);
$content = phutil_tag(
'img',
@@ -695,11 +664,7 @@
break;
case 'stream':
default:
- $content = idx($output, 'text');
- if (!is_array($content)) {
- $content = array();
- }
- $content = implode('', $content);
+ $content = $this->readString($output, 'text');
break;
}
@@ -761,4 +726,23 @@
return true;
}
+ private function readString(array $src, $key) {
+ $list = $this->readStringList($src, $key);
+ return implode('', $list);
+ }
+
+ private function readStringList(array $src, $key) {
+ $list = idx($src, $key);
+
+ if (is_array($list)) {
+ $list = $list;
+ } else if (is_string($list)) {
+ $list = array($list);
+ } else {
+ $list = array();
+ }
+
+ return $list;
+ }
+
}

File Metadata

Mime Type
text/plain
Expires
Wed, Mar 5, 11:18 AM (2 w, 2 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7225307
Default Alt Text
D21434.id.diff (5 KB)

Event Timeline