1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
dff32a Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
4ccb6e Tucker McKnight
<div class="container-lg">
<div class="row">
<div class="col-auto">
<h1>{{patchInfo.patch.name}}</h2>
<p>{{patchInfo.patch.date | date }}</p>
<p>{{patchInfo.patch.author }}</p>
<pre>{{patchInfo.patch.description}}</pre>
</div>
</div>
<div class="row">
<div class="col-auto">
<p class="font-monospace fw-bold text-secondary">{{patchInfo.patch.hash}}</p>
</div>
</div>
</div>
<div class="container-fluid border-top">
<div class="row my-2">
<div class="col-auto d-flex align-items-center fs-4">
<i class="bi bi-layout-split"></i><span class="fs-6 mx-1">Side-by-side</span>
<div class="form-check form-switch mb-1 px-2">
<input class="form-check-input mx-0" type="checkbox" id="unifiedModeSwitch" value="unified" onchange="toggleUnifiedMode(this)" aria-label="Toggle switch for stacked or side by side diff view">
</div>
<i class="bi bi-hr"></i><span class="fs-6 mx-1">Stacked</span>
</div>
</div>
<div class="row" id="diffs">
{% set patchHunks = patchInfo.patch.diffs %}
{% for hunk in patchHunks %}
<div class=hunk>
<span class="font-monospace fw-bold"><a href="{{reposPath}}/{{patchInfo.repoName | slugify}}/branches/{{patchInfo.branchName | slugify}}/files/{{ hunk.file | slugify}}.html">{{ hunk.file }}:{{ hunk.lineNumber }}</a></span>
<div class="diff d-flex">
<div class="flex-grow-1 diff-left pe-2">
<span class='font-monospace text-secondary'>Before</span>
<div class="row">
<div class="col-auto border-end">
<code>
{%- for lineNumber in hunk.previousText | lineNumbers -%}
{{ lineNumber + hunk.lineNumber - 1}}
{% endfor -%}
</code>
</div>
<div class="col overflow-scroll">
<pre data-start="{{hunk.lineNumber}}"><code data-type="before" class="line-numbers language-{{hunk.file | languageExtension(patchInfo.repoName)}}">{{hunk.previousText | safe}}</code></pre>
</div>
</div>
</div>
<div class="diff-right flex-grow-1 ps-2 border-start">
<span class='font-monospace text-secondary'>After</span>
<div class="row">
<div class="col-auto border-end">
<code>
{%- for lineNumber in hunk.afterText | lineNumbers -%}
{{ lineNumber + hunk.lineNumber - 1}}
{% endfor -%}
</code>
</div>
<div class="col overflow-scroll">
<pre data-start="{{hunk.lineNumber}}"><code data-type="after" class="line-numbers language-{{hunk.file | languageExtension(patchInfo.repoName)}}">{{ hunk.afterText | safe}}</code></pre>
</div>
</div>
</div>
</div>
</div>
{% endfor %}
</div>
</div>
<script>
const copyCommand = () => {
const text = document.getElementById("clone-command").innerText
const button = document.getElementById("clone-button")
navigator.clipboard.writeText(text).then(() => {
button.innerText = "Copied"
})
}
</script>