const showNumber = (lineInfo) => {
const first = lineInfo.line[0];
return first === ' ' || first === '@' || first === '-' || first === '+';
}
const htmlEncode = require('js-htmlencode')
const construct = (data) => {
const diffs = data.diffs
for (let diffLineIndex in diffs.lines) {
diffs.lines[diffLineIndex].line = htmlEncode(diffs.lines[diffLineIndex].line)
}
let result = `
<table id="p3x-gitlist-commit-diff-ng-table" style="min-width: 100%; max-width: 100%">
<tr>
<td class="lineNo">Old</td>
<td class="lineNo"> </td>
<td class="old">${diffs.old}</td>
</tr>
<tr>
<td class="lineNo"> </td>
<td class="lineNo">New</td>
<td class="new">${diffs.new}</td>
</tr>
`
for (let lineInfo of diffs.lines) {
result += `
<tr>
<td class="lineNo">
${showNumber(lineInfo) ? lineInfo['num-old'] : ' '}
</td>
<td class="lineNo">
${showNumber(lineInfo) ? lineInfo['num-new'] : ' '}
</td>
<td style="width: 100%">
<pre class="${lineInfo.type}">${lineInfo.line}</pre>
</td>
</tr>
`
}
result += `
</table>
`
return result;
}
onmessage = function (e) {
const result = construct(e.data);
postMessage(result)
}