fix: Skip selection of structural lines in side diff

This commit is contained in:
Rodrigo Fernandes 2020-02-09 19:01:30 +00:00
parent 90d37608c8
commit 05c774139a
No known key found for this signature in database
GPG key ID: 67157D2E3D4258B4
4 changed files with 132 additions and 128 deletions

View file

@ -78,13 +78,13 @@ describe('SideBySideRenderer', () => {
const fileHtml = sideBySideRenderer.generateFileHtml(file); const fileHtml = sideBySideRenderer.generateFileHtml(file);
expect(fileHtml).toMatchInlineSnapshot(` expect(fileHtml).toMatchInlineSnapshot(`
Object { Object {
"left": "<tr> "left": "<tr>
<td class=\\"d2h-code-side-linenumber d2h-info\\"></td> <td class=\\"d2h-code-side-linenumber d2h-info\\"></td>
<td class=\\"d2h-info\\"> <td class=\\"d2h-info\\">
<div class=\\"d2h-code-side-line d2h-info\\">@@ -19,7 +19,7 @@</div> <div class=\\"d2h-code-side-line d2h-info\\">@@ -19,7 +19,7 @@</div>
</td> </td>
</tr><tr> </tr><tr>
<td class=\\"d2h-code-side-linenumber d2h-cntx\\"> <td class=\\"d2h-code-side-linenumber d2h-cntx\\">
19 19
</td> </td>
@ -94,7 +94,7 @@ describe('SideBySideRenderer', () => {
<span class=\\"d2h-code-line-ctn\\">context</span> <span class=\\"d2h-code-line-ctn\\">context</span>
</div> </div>
</td> </td>
</tr><tr> </tr><tr>
<td class=\\"d2h-code-side-linenumber d2h-del d2h-change\\"> <td class=\\"d2h-code-side-linenumber d2h-del d2h-change\\">
20 20
</td> </td>
@ -104,23 +104,23 @@ describe('SideBySideRenderer', () => {
<span class=\\"d2h-code-line-ctn\\"><del>removed</del></span> <span class=\\"d2h-code-line-ctn\\"><del>removed</del></span>
</div> </div>
</td> </td>
</tr><tr> </tr><tr>
<td class=\\"d2h-code-side-linenumber d2h-code-side-emptyplaceholder d2h-cntx d2h-emptyplaceholder\\"> <td class=\\"d2h-code-side-linenumber d2h-code-side-emptyplaceholder d2h-cntx d2h-emptyplaceholder\\">
</td> </td>
<td class=\\"d2h-cntx d2h-emptyplaceholder\\"> <td class=\\"d2h-cntx d2h-emptyplaceholder\\">
<div class=\\"d2h-code-side-line d2h-code-side-emptyplaceholder d2h-cntx d2h-emptyplaceholder\\"> <div class=\\"d2h-code-side-line d2h-code-side-emptyplaceholder d2h-cntx d2h-emptyplaceholder\\">
<span class=\\"d2h-code-line-prefix\\">&nbsp;</span> <span class=\\"d2h-code-line-prefix\\">&nbsp;</span>
<span class=\\"d2h-code-line-ctn\\">&nbsp;</span> <span class=\\"d2h-code-line-ctn\\"><br></span>
</div> </div>
</td> </td>
</tr>", </tr>",
"right": "<tr> "right": "<tr>
<td class=\\"d2h-code-side-linenumber d2h-info\\"></td> <td class=\\"d2h-code-side-linenumber d2h-info\\"></td>
<td class=\\"d2h-info\\"> <td class=\\"d2h-info\\">
<div class=\\"d2h-code-side-line d2h-info\\"></div> <div class=\\"d2h-code-side-line d2h-info\\"></div>
</td> </td>
</tr><tr> </tr><tr>
<td class=\\"d2h-code-side-linenumber d2h-cntx\\"> <td class=\\"d2h-code-side-linenumber d2h-cntx\\">
19 19
</td> </td>
@ -130,7 +130,7 @@ describe('SideBySideRenderer', () => {
<span class=\\"d2h-code-line-ctn\\">context</span> <span class=\\"d2h-code-line-ctn\\">context</span>
</div> </div>
</td> </td>
</tr><tr> </tr><tr>
<td class=\\"d2h-code-side-linenumber d2h-ins d2h-change\\"> <td class=\\"d2h-code-side-linenumber d2h-ins d2h-change\\">
20 20
</td> </td>
@ -140,7 +140,7 @@ describe('SideBySideRenderer', () => {
<span class=\\"d2h-code-line-ctn\\"><ins>added</ins></span> <span class=\\"d2h-code-line-ctn\\"><ins>added</ins></span>
</div> </div>
</td> </td>
</tr><tr> </tr><tr>
<td class=\\"d2h-code-side-linenumber d2h-ins\\"> <td class=\\"d2h-code-side-linenumber d2h-ins\\">
21 21
</td> </td>
@ -150,9 +150,9 @@ describe('SideBySideRenderer', () => {
<span class=\\"d2h-code-line-ctn\\">another added</span> <span class=\\"d2h-code-line-ctn\\">another added</span>
</div> </div>
</td> </td>
</tr>", </tr>",
} }
`); `);
}); });
}); });
@ -168,7 +168,7 @@ describe('SideBySideRenderer', () => {
}); });
expect(fileHtml).toMatchInlineSnapshot(` expect(fileHtml).toMatchInlineSnapshot(`
Object { Object {
"left": "<tr> "left": "<tr>
<td class=\\"d2h-code-side-linenumber d2h-code-side-emptyplaceholder d2h-cntx d2h-emptyplaceholder\\"> <td class=\\"d2h-code-side-linenumber d2h-code-side-emptyplaceholder d2h-cntx d2h-emptyplaceholder\\">
@ -176,10 +176,10 @@ describe('SideBySideRenderer', () => {
<td class=\\"d2h-cntx d2h-emptyplaceholder\\"> <td class=\\"d2h-cntx d2h-emptyplaceholder\\">
<div class=\\"d2h-code-side-line d2h-code-side-emptyplaceholder d2h-cntx d2h-emptyplaceholder\\"> <div class=\\"d2h-code-side-line d2h-code-side-emptyplaceholder d2h-cntx d2h-emptyplaceholder\\">
<span class=\\"d2h-code-line-prefix\\">&nbsp;</span> <span class=\\"d2h-code-line-prefix\\">&nbsp;</span>
<span class=\\"d2h-code-line-ctn\\">&nbsp;</span> <span class=\\"d2h-code-line-ctn\\"><br></span>
</div> </div>
</td> </td>
</tr>", </tr>",
"right": "<tr> "right": "<tr>
<td class=\\"d2h-code-side-linenumber d2h-ins\\"> <td class=\\"d2h-code-side-linenumber d2h-ins\\">
30 30
@ -190,9 +190,9 @@ describe('SideBySideRenderer', () => {
<span class=\\"d2h-code-line-ctn\\">test</span> <span class=\\"d2h-code-line-ctn\\">test</span>
</div> </div>
</td> </td>
</tr>", </tr>",
} }
`); `);
}); });
it('should work for deletions', () => { it('should work for deletions', () => {
const hoganUtils = new HoganJsUtils({}); const hoganUtils = new HoganJsUtils({});
@ -208,7 +208,7 @@ describe('SideBySideRenderer', () => {
); );
expect(fileHtml).toMatchInlineSnapshot(` expect(fileHtml).toMatchInlineSnapshot(`
Object { Object {
"left": "<tr> "left": "<tr>
<td class=\\"d2h-code-side-linenumber d2h-del\\"> <td class=\\"d2h-code-side-linenumber d2h-del\\">
30 30
@ -219,7 +219,7 @@ describe('SideBySideRenderer', () => {
<span class=\\"d2h-code-line-ctn\\">test</span> <span class=\\"d2h-code-line-ctn\\">test</span>
</div> </div>
</td> </td>
</tr>", </tr>",
"right": "<tr> "right": "<tr>
<td class=\\"d2h-code-side-linenumber d2h-code-side-emptyplaceholder d2h-cntx d2h-emptyplaceholder\\"> <td class=\\"d2h-code-side-linenumber d2h-code-side-emptyplaceholder d2h-cntx d2h-emptyplaceholder\\">
@ -227,12 +227,12 @@ describe('SideBySideRenderer', () => {
<td class=\\"d2h-cntx d2h-emptyplaceholder\\"> <td class=\\"d2h-cntx d2h-emptyplaceholder\\">
<div class=\\"d2h-code-side-line d2h-code-side-emptyplaceholder d2h-cntx d2h-emptyplaceholder\\"> <div class=\\"d2h-code-side-line d2h-code-side-emptyplaceholder d2h-cntx d2h-emptyplaceholder\\">
<span class=\\"d2h-code-line-prefix\\">&nbsp;</span> <span class=\\"d2h-code-line-prefix\\">&nbsp;</span>
<span class=\\"d2h-code-line-ctn\\">&nbsp;</span> <span class=\\"d2h-code-line-ctn\\"><br></span>
</div> </div>
</td> </td>
</tr>", </tr>",
} }
`); `);
}); });
}); });

View file

@ -285,8 +285,8 @@ export default class SideBySideRenderer {
type: line?.type || `${renderUtils.CSSLineClass.CONTEXT} d2h-emptyplaceholder`, type: line?.type || `${renderUtils.CSSLineClass.CONTEXT} d2h-emptyplaceholder`,
lineClass: line !== undefined ? lineClass : `${lineClass} d2h-code-side-emptyplaceholder`, lineClass: line !== undefined ? lineClass : `${lineClass} d2h-code-side-emptyplaceholder`,
contentClass: line !== undefined ? contentClass : `${contentClass} d2h-code-side-emptyplaceholder`, contentClass: line !== undefined ? contentClass : `${contentClass} d2h-code-side-emptyplaceholder`,
prefix: line?.prefix === ' ' ? '&nbsp;' : line?.prefix || '&nbsp;', prefix: line?.prefix === ' ' ? '&nbsp;' : line?.prefix,
content: line?.content || '&nbsp;', content: line?.content,
lineNumber: line?.number, lineNumber: line?.number,
}); });
} }

View file

@ -7,6 +7,9 @@
{{#prefix}} {{#prefix}}
<span class="d2h-code-line-prefix">{{{prefix}}}</span> <span class="d2h-code-line-prefix">{{{prefix}}}</span>
{{/prefix}} {{/prefix}}
{{^prefix}}
<span class="d2h-code-line-prefix">&nbsp;</span>
{{/prefix}}
{{#content}} {{#content}}
<span class="d2h-code-line-ctn">{{{content}}}</span> <span class="d2h-code-line-ctn">{{{content}}}</span>
{{/content}} {{/content}}

View file

@ -207,7 +207,8 @@
.d2h-code-linenumber, .d2h-code-linenumber,
.d2h-code-side-linenumber, .d2h-code-side-linenumber,
.d2h-code-line-prefix { .d2h-code-line-prefix,
.d2h-emptyplaceholder {
user-select: none; user-select: none;
} }