Skip to content

Commit 884b95b

Browse files
authored
Merge pull request #307 from rtfpessoa/fix-selection-empty-lines-side
fix: Skip selection of structural lines in side diff
2 parents 90d3760 + 05c7741 commit 884b95b

File tree

4 files changed

+132
-128
lines changed

4 files changed

+132
-128
lines changed

src/__tests__/side-by-side-printer-tests.ts

Lines changed: 125 additions & 125 deletions
Original file line numberDiff line numberDiff line change
@@ -78,81 +78,81 @@ describe('SideBySideRenderer', () => {
7878
const fileHtml = sideBySideRenderer.generateFileHtml(file);
7979

8080
expect(fileHtml).toMatchInlineSnapshot(`
81-
Object {
82-
"left": "<tr>
83-
<td class=\\"d2h-code-side-linenumber d2h-info\\"></td>
84-
<td class=\\"d2h-info\\">
85-
<div class=\\"d2h-code-side-line d2h-info\\">@@ -19,7 +19,7 @@</div>
86-
</td>
87-
</tr><tr>
88-
<td class=\\"d2h-code-side-linenumber d2h-cntx\\">
89-
19
90-
</td>
91-
<td class=\\"d2h-cntx\\">
92-
<div class=\\"d2h-code-side-line d2h-cntx\\">
93-
<span class=\\"d2h-code-line-prefix\\">&nbsp;</span>
94-
<span class=\\"d2h-code-line-ctn\\">context</span>
95-
</div>
96-
</td>
97-
</tr><tr>
98-
<td class=\\"d2h-code-side-linenumber d2h-del d2h-change\\">
99-
20
100-
</td>
101-
<td class=\\"d2h-del d2h-change\\">
102-
<div class=\\"d2h-code-side-line d2h-del d2h-change\\">
103-
<span class=\\"d2h-code-line-prefix\\">-</span>
104-
<span class=\\"d2h-code-line-ctn\\"><del>removed</del></span>
105-
</div>
106-
</td>
107-
</tr><tr>
108-
<td class=\\"d2h-code-side-linenumber d2h-code-side-emptyplaceholder d2h-cntx d2h-emptyplaceholder\\">
109-
110-
</td>
111-
<td class=\\"d2h-cntx d2h-emptyplaceholder\\">
112-
<div class=\\"d2h-code-side-line d2h-code-side-emptyplaceholder d2h-cntx d2h-emptyplaceholder\\">
113-
<span class=\\"d2h-code-line-prefix\\">&nbsp;</span>
114-
<span class=\\"d2h-code-line-ctn\\">&nbsp;</span>
115-
</div>
116-
</td>
117-
</tr>",
118-
"right": "<tr>
119-
<td class=\\"d2h-code-side-linenumber d2h-info\\"></td>
120-
<td class=\\"d2h-info\\">
121-
<div class=\\"d2h-code-side-line d2h-info\\"></div>
122-
</td>
123-
</tr><tr>
124-
<td class=\\"d2h-code-side-linenumber d2h-cntx\\">
125-
19
126-
</td>
127-
<td class=\\"d2h-cntx\\">
128-
<div class=\\"d2h-code-side-line d2h-cntx\\">
129-
<span class=\\"d2h-code-line-prefix\\">&nbsp;</span>
130-
<span class=\\"d2h-code-line-ctn\\">context</span>
131-
</div>
132-
</td>
133-
</tr><tr>
134-
<td class=\\"d2h-code-side-linenumber d2h-ins d2h-change\\">
135-
20
136-
</td>
137-
<td class=\\"d2h-ins d2h-change\\">
138-
<div class=\\"d2h-code-side-line d2h-ins d2h-change\\">
139-
<span class=\\"d2h-code-line-prefix\\">+</span>
140-
<span class=\\"d2h-code-line-ctn\\"><ins>added</ins></span>
141-
</div>
142-
</td>
143-
</tr><tr>
144-
<td class=\\"d2h-code-side-linenumber d2h-ins\\">
145-
21
146-
</td>
147-
<td class=\\"d2h-ins\\">
148-
<div class=\\"d2h-code-side-line d2h-ins\\">
149-
<span class=\\"d2h-code-line-prefix\\">+</span>
150-
<span class=\\"d2h-code-line-ctn\\">another added</span>
151-
</div>
152-
</td>
153-
</tr>",
154-
}
155-
`);
81+
Object {
82+
"left": "<tr>
83+
<td class=\\"d2h-code-side-linenumber d2h-info\\"></td>
84+
<td class=\\"d2h-info\\">
85+
<div class=\\"d2h-code-side-line d2h-info\\">@@ -19,7 +19,7 @@</div>
86+
</td>
87+
</tr><tr>
88+
<td class=\\"d2h-code-side-linenumber d2h-cntx\\">
89+
19
90+
</td>
91+
<td class=\\"d2h-cntx\\">
92+
<div class=\\"d2h-code-side-line d2h-cntx\\">
93+
<span class=\\"d2h-code-line-prefix\\">&nbsp;</span>
94+
<span class=\\"d2h-code-line-ctn\\">context</span>
95+
</div>
96+
</td>
97+
</tr><tr>
98+
<td class=\\"d2h-code-side-linenumber d2h-del d2h-change\\">
99+
20
100+
</td>
101+
<td class=\\"d2h-del d2h-change\\">
102+
<div class=\\"d2h-code-side-line d2h-del d2h-change\\">
103+
<span class=\\"d2h-code-line-prefix\\">-</span>
104+
<span class=\\"d2h-code-line-ctn\\"><del>removed</del></span>
105+
</div>
106+
</td>
107+
</tr><tr>
108+
<td class=\\"d2h-code-side-linenumber d2h-code-side-emptyplaceholder d2h-cntx d2h-emptyplaceholder\\">
109+
110+
</td>
111+
<td class=\\"d2h-cntx d2h-emptyplaceholder\\">
112+
<div class=\\"d2h-code-side-line d2h-code-side-emptyplaceholder d2h-cntx d2h-emptyplaceholder\\">
113+
<span class=\\"d2h-code-line-prefix\\">&nbsp;</span>
114+
<span class=\\"d2h-code-line-ctn\\"><br></span>
115+
</div>
116+
</td>
117+
</tr>",
118+
"right": "<tr>
119+
<td class=\\"d2h-code-side-linenumber d2h-info\\"></td>
120+
<td class=\\"d2h-info\\">
121+
<div class=\\"d2h-code-side-line d2h-info\\"></div>
122+
</td>
123+
</tr><tr>
124+
<td class=\\"d2h-code-side-linenumber d2h-cntx\\">
125+
19
126+
</td>
127+
<td class=\\"d2h-cntx\\">
128+
<div class=\\"d2h-code-side-line d2h-cntx\\">
129+
<span class=\\"d2h-code-line-prefix\\">&nbsp;</span>
130+
<span class=\\"d2h-code-line-ctn\\">context</span>
131+
</div>
132+
</td>
133+
</tr><tr>
134+
<td class=\\"d2h-code-side-linenumber d2h-ins d2h-change\\">
135+
20
136+
</td>
137+
<td class=\\"d2h-ins d2h-change\\">
138+
<div class=\\"d2h-code-side-line d2h-ins d2h-change\\">
139+
<span class=\\"d2h-code-line-prefix\\">+</span>
140+
<span class=\\"d2h-code-line-ctn\\"><ins>added</ins></span>
141+
</div>
142+
</td>
143+
</tr><tr>
144+
<td class=\\"d2h-code-side-linenumber d2h-ins\\">
145+
21
146+
</td>
147+
<td class=\\"d2h-ins\\">
148+
<div class=\\"d2h-code-side-line d2h-ins\\">
149+
<span class=\\"d2h-code-line-prefix\\">+</span>
150+
<span class=\\"d2h-code-line-ctn\\">another added</span>
151+
</div>
152+
</td>
153+
</tr>",
154+
}
155+
`);
156156
});
157157
});
158158

@@ -168,31 +168,31 @@ describe('SideBySideRenderer', () => {
168168
});
169169

170170
expect(fileHtml).toMatchInlineSnapshot(`
171-
Object {
172-
"left": "<tr>
173-
<td class=\\"d2h-code-side-linenumber d2h-code-side-emptyplaceholder d2h-cntx d2h-emptyplaceholder\\">
174-
175-
</td>
176-
<td class=\\"d2h-cntx d2h-emptyplaceholder\\">
177-
<div class=\\"d2h-code-side-line d2h-code-side-emptyplaceholder d2h-cntx d2h-emptyplaceholder\\">
178-
<span class=\\"d2h-code-line-prefix\\">&nbsp;</span>
179-
<span class=\\"d2h-code-line-ctn\\">&nbsp;</span>
180-
</div>
181-
</td>
182-
</tr>",
183-
"right": "<tr>
184-
<td class=\\"d2h-code-side-linenumber d2h-ins\\">
185-
30
186-
</td>
187-
<td class=\\"d2h-ins\\">
188-
<div class=\\"d2h-code-side-line d2h-ins\\">
189-
<span class=\\"d2h-code-line-prefix\\">+</span>
190-
<span class=\\"d2h-code-line-ctn\\">test</span>
191-
</div>
192-
</td>
193-
</tr>",
194-
}
195-
`);
171+
Object {
172+
"left": "<tr>
173+
<td class=\\"d2h-code-side-linenumber d2h-code-side-emptyplaceholder d2h-cntx d2h-emptyplaceholder\\">
174+
175+
</td>
176+
<td class=\\"d2h-cntx d2h-emptyplaceholder\\">
177+
<div class=\\"d2h-code-side-line d2h-code-side-emptyplaceholder d2h-cntx d2h-emptyplaceholder\\">
178+
<span class=\\"d2h-code-line-prefix\\">&nbsp;</span>
179+
<span class=\\"d2h-code-line-ctn\\"><br></span>
180+
</div>
181+
</td>
182+
</tr>",
183+
"right": "<tr>
184+
<td class=\\"d2h-code-side-linenumber d2h-ins\\">
185+
30
186+
</td>
187+
<td class=\\"d2h-ins\\">
188+
<div class=\\"d2h-code-side-line d2h-ins\\">
189+
<span class=\\"d2h-code-line-prefix\\">+</span>
190+
<span class=\\"d2h-code-line-ctn\\">test</span>
191+
</div>
192+
</td>
193+
</tr>",
194+
}
195+
`);
196196
});
197197
it('should work for deletions', () => {
198198
const hoganUtils = new HoganJsUtils({});
@@ -208,31 +208,31 @@ describe('SideBySideRenderer', () => {
208208
);
209209

210210
expect(fileHtml).toMatchInlineSnapshot(`
211-
Object {
212-
"left": "<tr>
213-
<td class=\\"d2h-code-side-linenumber d2h-del\\">
214-
30
215-
</td>
216-
<td class=\\"d2h-del\\">
217-
<div class=\\"d2h-code-side-line d2h-del\\">
218-
<span class=\\"d2h-code-line-prefix\\">-</span>
219-
<span class=\\"d2h-code-line-ctn\\">test</span>
220-
</div>
221-
</td>
222-
</tr>",
223-
"right": "<tr>
224-
<td class=\\"d2h-code-side-linenumber d2h-code-side-emptyplaceholder d2h-cntx d2h-emptyplaceholder\\">
225-
226-
</td>
227-
<td class=\\"d2h-cntx d2h-emptyplaceholder\\">
228-
<div class=\\"d2h-code-side-line d2h-code-side-emptyplaceholder d2h-cntx d2h-emptyplaceholder\\">
229-
<span class=\\"d2h-code-line-prefix\\">&nbsp;</span>
230-
<span class=\\"d2h-code-line-ctn\\">&nbsp;</span>
231-
</div>
232-
</td>
233-
</tr>",
234-
}
235-
`);
211+
Object {
212+
"left": "<tr>
213+
<td class=\\"d2h-code-side-linenumber d2h-del\\">
214+
30
215+
</td>
216+
<td class=\\"d2h-del\\">
217+
<div class=\\"d2h-code-side-line d2h-del\\">
218+
<span class=\\"d2h-code-line-prefix\\">-</span>
219+
<span class=\\"d2h-code-line-ctn\\">test</span>
220+
</div>
221+
</td>
222+
</tr>",
223+
"right": "<tr>
224+
<td class=\\"d2h-code-side-linenumber d2h-code-side-emptyplaceholder d2h-cntx d2h-emptyplaceholder\\">
225+
226+
</td>
227+
<td class=\\"d2h-cntx d2h-emptyplaceholder\\">
228+
<div class=\\"d2h-code-side-line d2h-code-side-emptyplaceholder d2h-cntx d2h-emptyplaceholder\\">
229+
<span class=\\"d2h-code-line-prefix\\">&nbsp;</span>
230+
<span class=\\"d2h-code-line-ctn\\"><br></span>
231+
</div>
232+
</td>
233+
</tr>",
234+
}
235+
`);
236236
});
237237
});
238238

src/side-by-side-renderer.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -285,8 +285,8 @@ export default class SideBySideRenderer {
285285
type: line?.type || `${renderUtils.CSSLineClass.CONTEXT} d2h-emptyplaceholder`,
286286
lineClass: line !== undefined ? lineClass : `${lineClass} d2h-code-side-emptyplaceholder`,
287287
contentClass: line !== undefined ? contentClass : `${contentClass} d2h-code-side-emptyplaceholder`,
288-
prefix: line?.prefix === ' ' ? '&nbsp;' : line?.prefix || '&nbsp;',
289-
content: line?.content || '&nbsp;',
288+
prefix: line?.prefix === ' ' ? '&nbsp;' : line?.prefix,
289+
content: line?.content,
290290
lineNumber: line?.number,
291291
});
292292
}

src/templates/generic-line.mustache

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
{{#prefix}}
88
<span class="d2h-code-line-prefix">{{{prefix}}}</span>
99
{{/prefix}}
10+
{{^prefix}}
11+
<span class="d2h-code-line-prefix">&nbsp;</span>
12+
{{/prefix}}
1013
{{#content}}
1114
<span class="d2h-code-line-ctn">{{{content}}}</span>
1215
{{/content}}

src/ui/css/diff2html.css

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,8 @@
207207

208208
.d2h-code-linenumber,
209209
.d2h-code-side-linenumber,
210-
.d2h-code-line-prefix {
210+
.d2h-code-line-prefix,
211+
.d2h-emptyplaceholder {
211212
user-select: none;
212213
}
213214

0 commit comments

Comments
 (0)