Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/differential/render/DifferentialChangesetTestRenderer.php
12256 views
1
<?php
2
3
abstract class DifferentialChangesetTestRenderer
4
extends DifferentialChangesetRenderer {
5
6
protected function renderChangeTypeHeader($force) {
7
$changeset = $this->getChangeset();
8
9
$old = nonempty($changeset->getOldFile(), '-');
10
$current = nonempty($changeset->getFilename(), '-');
11
$away = nonempty(implode(', ', $changeset->getAwayPaths()), '-');
12
13
$ctype = $changeset->getChangeType();
14
$ftype = $changeset->getFileType();
15
$force = ($force ? '(forced)' : '(unforced)');
16
17
return "CTYPE {$ctype} {$ftype} {$force}\n".
18
"{$old}\n".
19
"{$current}\n".
20
"{$away}\n";
21
}
22
23
protected function renderUndershieldHeader() {
24
return null;
25
}
26
27
public function renderShield($message, $force = 'default') {
28
return "SHIELD ({$force}) {$message}\n";
29
}
30
31
protected function renderPropertyChangeHeader() {
32
$changeset = $this->getChangeset();
33
list($old, $new) = $this->getChangesetProperties($changeset);
34
35
foreach (array_keys($old) as $key) {
36
if ($old[$key] === idx($new, $key)) {
37
unset($old[$key]);
38
unset($new[$key]);
39
}
40
}
41
42
if (!$old && !$new) {
43
return null;
44
}
45
46
$props = '';
47
foreach ($old as $key => $value) {
48
$props .= "P - {$key} {$value}~\n";
49
}
50
foreach ($new as $key => $value) {
51
$props .= "P + {$key} {$value}~\n";
52
}
53
54
return "PROPERTIES\n".$props;
55
}
56
57
public function renderTextChange(
58
$range_start,
59
$range_len,
60
$rows) {
61
62
$out = array();
63
64
$any_old = false;
65
$any_new = false;
66
$primitives = $this->buildPrimitives($range_start, $range_len);
67
foreach ($primitives as $p) {
68
$type = $p['type'];
69
switch ($type) {
70
case 'old':
71
case 'new':
72
if ($type == 'old') {
73
$any_old = true;
74
}
75
if ($type == 'new') {
76
$any_new = true;
77
}
78
$num = nonempty($p['line'], '-');
79
$render = (string)$p['render'];
80
$htype = nonempty($p['htype'], '.');
81
82
// TODO: This should probably happen earlier, whenever we deal with
83
// \r and \t normalization?
84
$render = str_replace(
85
array(
86
"\r",
87
"\n",
88
),
89
array(
90
'\\r',
91
'\\n',
92
),
93
$render);
94
95
$render = str_replace(
96
array(
97
'<span class="bright">',
98
'</span>',
99
'<span class="depth-out">',
100
'<span class="depth-in">',
101
),
102
array(
103
'{(',
104
')}',
105
'{<',
106
'{>',
107
),
108
$render);
109
110
$render = html_entity_decode($render, ENT_QUOTES);
111
112
$t = ($type == 'old') ? 'O' : 'N';
113
114
$out[] = "{$t} {$num} {$htype} {$render}~";
115
break;
116
case 'no-context':
117
$out[] = 'X <MISSING-CONTEXT>';
118
break;
119
default:
120
$out[] = $type;
121
break;
122
}
123
}
124
125
if (!$any_old) {
126
$out[] = 'O X <EMPTY>';
127
}
128
129
if (!$any_new) {
130
$out[] = 'N X <EMPTY>';
131
}
132
133
$out = implode("\n", $out)."\n";
134
return phutil_safe_html($out);
135
}
136
137
}
138
139