Skip to content

Commit 4e6bb49

Browse files
committed
Update FileListRenderer to class
1 parent 14989f1 commit 4e6bb49

3 files changed

Lines changed: 40 additions & 29 deletions

File tree

src/__tests__/file-list-renderer-tests.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { render } from '../file-list-renderer';
1+
import { FileListRenderer } from '../file-list-renderer';
22
import HoganJsUtils from '../hoganjs-utils';
33

44
describe('FileListRenderer', () => {
@@ -10,6 +10,7 @@ describe('FileListRenderer', () => {
1010
'file-summary-line': '{{oldName}}, {{newName}}, {{fileName}}',
1111
},
1212
});
13+
const fileListRenderer = new FileListRenderer(hoganUtils);
1314
const files = [
1415
{
1516
isCombined: false,
@@ -55,7 +56,7 @@ describe('FileListRenderer', () => {
5556
},
5657
];
5758

58-
const fileHtml = render(files, hoganUtils);
59+
const fileHtml = fileListRenderer.render(files);
5960

6061
expect(fileHtml).toMatchInlineSnapshot(`
6162
"my/file/name.js, my/file/name.js, my/file/name.js
@@ -67,6 +68,8 @@ describe('FileListRenderer', () => {
6768

6869
it('should work for all kinds of files', () => {
6970
const hoganUtils = new HoganJsUtils({});
71+
const fileListRenderer = new FileListRenderer(hoganUtils);
72+
7073
const files = [
7174
{
7275
isCombined: false,
@@ -111,7 +114,7 @@ describe('FileListRenderer', () => {
111114
isDeleted: true,
112115
},
113116
];
114-
const fileHtml = render(files, hoganUtils);
117+
const fileHtml = fileListRenderer.render(files);
115118
expect(fileHtml).toMatchInlineSnapshot(`
116119
"<div class="d2h-file-list-wrapper">
117120
<div class="d2h-file-list-header">

src/diff2html.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import * as DiffParser from './diff-parser';
2-
import * as fileListPrinter from './file-list-renderer';
2+
import { FileListRenderer } from './file-list-renderer';
33
import LineByLineRenderer, { LineByLineRendererConfig, defaultLineByLineRendererConfig } from './line-by-line-renderer';
44
import SideBySideRenderer, { SideBySideRendererConfig, defaultSideBySideRendererConfig } from './side-by-side-renderer';
55
import { DiffFile, OutputFormatType } from './types';
@@ -32,7 +32,7 @@ export function html(diffInput: string | DiffFile[], configuration: Diff2HtmlCon
3232

3333
const hoganUtils = new HoganJsUtils(config);
3434

35-
const fileList = config.drawFileList ? fileListPrinter.render(diffJson, hoganUtils) : '';
35+
const fileList = config.drawFileList ? new FileListRenderer(hoganUtils).render(diffJson) : '';
3636

3737
const diffOutput =
3838
config.outputFormat === 'side-by-side'

src/file-list-renderer.ts

Lines changed: 32 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -5,29 +5,37 @@ import { DiffFile } from './types';
55
const baseTemplatesPath = 'file-summary';
66
const iconsBaseTemplatesPath = 'icon';
77

8-
export function render(diffFiles: DiffFile[], hoganUtils: HoganJsUtils): string {
9-
const files = diffFiles
10-
.map(file =>
11-
hoganUtils.render(
12-
baseTemplatesPath,
13-
'line',
14-
{
15-
fileHtmlId: renderUtils.getHtmlId(file),
16-
oldName: file.oldName,
17-
newName: file.newName,
18-
fileName: renderUtils.filenameDiff(file),
19-
deletedLines: '-' + file.deletedLines,
20-
addedLines: '+' + file.addedLines,
21-
},
22-
{
23-
fileIcon: hoganUtils.template(iconsBaseTemplatesPath, renderUtils.getFileIcon(file)),
24-
},
25-
),
26-
)
27-
.join('\n');
8+
export class FileListRenderer {
9+
private readonly hoganUtils: HoganJsUtils;
2810

29-
return hoganUtils.render(baseTemplatesPath, 'wrapper', {
30-
filesNumber: diffFiles.length,
31-
files: files,
32-
});
11+
constructor(hoganUtils: HoganJsUtils) {
12+
this.hoganUtils = hoganUtils;
13+
}
14+
15+
render(diffFiles: DiffFile[]): string {
16+
const files = diffFiles
17+
.map(file =>
18+
this.hoganUtils.render(
19+
baseTemplatesPath,
20+
'line',
21+
{
22+
fileHtmlId: renderUtils.getHtmlId(file),
23+
oldName: file.oldName,
24+
newName: file.newName,
25+
fileName: renderUtils.filenameDiff(file),
26+
deletedLines: '-' + file.deletedLines,
27+
addedLines: '+' + file.addedLines,
28+
},
29+
{
30+
fileIcon: this.hoganUtils.template(iconsBaseTemplatesPath, renderUtils.getFileIcon(file)),
31+
},
32+
),
33+
)
34+
.join('\n');
35+
36+
return this.hoganUtils.render(baseTemplatesPath, 'wrapper', {
37+
filesNumber: diffFiles.length,
38+
files: files,
39+
});
40+
}
3341
}

0 commit comments

Comments
 (0)