提交 32ee0c31 编写于 作者: A Alex Dima

Use string concatenation

上级 cf86c78b
......@@ -100,7 +100,7 @@ export class Colorizer {
false,
tokens
));
return renderResult.output.join('');
return renderResult.output;
}
public static colorizeModelLine(model:IModel, lineNumber:number, tabSize:number = 4): string {
......
......@@ -118,7 +118,7 @@ export class ViewLine implements IVisibleLineData {
public getLineInnerHTML(lineNumber: number): string {
this._isInvalid = false;
return this._render(lineNumber, this._lineParts).join('');
return this._render(lineNumber, this._lineParts);
}
public layoutLine(lineNumber:number, deltaTop:number): void {
......@@ -129,7 +129,7 @@ export class ViewLine implements IVisibleLineData {
// --- end IVisibleLineData
private _render(lineNumber:number, lineParts:ILineParts): string[] {
private _render(lineNumber:number, lineParts:ILineParts): string {
this._cachedWidth = -1;
......
......@@ -33,7 +33,7 @@ export class RenderLineInput {
export interface IRenderLineOutput {
charOffsetInPart: number[];
lastRenderedPartIndex: number;
output: string[];
output: string;
}
const _space = ' '.charCodeAt(0);
......@@ -58,7 +58,7 @@ export function renderLine(input:RenderLineInput): IRenderLineOutput {
charOffsetInPart: [],
lastRenderedPartIndex: 0,
// This is basically for IE's hit test to work
output: ['<span><span>&nbsp;</span></span>']
output: '<span><span>&nbsp;</span></span>'
};
}
......@@ -80,18 +80,18 @@ function renderLineActual(lineText:string, lineTextLength:number, tabSize:number
charBreakIndex = +charBreakIndex;
let charIndex = 0;
let out: string[] = [];
let out = '';
let charOffsetInPartArr: number[] = [];
let charOffsetInPart = 0;
let tabsCharDelta = 0;
out.push('<span>');
out += '<span>';
for (let partIndex = 0, partIndexLen = actualLineParts.length; partIndex < partIndexLen; partIndex++) {
let part = actualLineParts[partIndex];
out.push('<span class="token ');
out.push(part.type);
out.push('">');
out += '<span class="token ';
out += part.type;
out += '">';
let partRendersWhitespace = false;
if (renderWhitespace) {
......@@ -115,54 +115,54 @@ function renderLineActual(lineText:string, lineTextLength:number, tabSize:number
tabsCharDelta += insertSpacesCount - 1;
charOffsetInPart += insertSpacesCount - 1;
if (insertSpacesCount > 0) {
out.push(partRendersWhitespace ? '&rarr;' : '&nbsp;');
out += partRendersWhitespace ? '&rarr;' : '&nbsp;';
insertSpacesCount--;
}
while (insertSpacesCount > 0) {
out.push('&nbsp;');
out += '&nbsp;';
insertSpacesCount--;
}
break;
case _space:
out.push(partRendersWhitespace ? '&middot;' : '&nbsp;');
out += partRendersWhitespace ? '&middot;' : '&nbsp;';
break;
case _lowerThan:
out.push('&lt;');
out += '&lt;';
break;
case _greaterThan:
out.push('&gt;');
out += '&gt;';
break;
case _ampersand:
out.push('&amp;');
out += '&amp;';
break;
case 0:
out.push('&#00;');
out += '&#00;';
break;
case _bom:
case _lineSeparator:
out.push('\ufffd');
out += '\ufffd';
break;
case _carriageReturn:
// zero width space, because carriage return would introduce a line break
out.push('&#8203');
out += '&#8203';
break;
default:
out.push(lineText.charAt(charIndex));
out += lineText.charAt(charIndex);
}
charOffsetInPart ++;
if (charIndex >= charBreakIndex) {
out.push('&hellip;</span></span>');
charOffsetInPartArr[charOffsetInPartArr.length - 1]++;
out += '&hellip;</span></span>';
charOffsetInPartArr[charIndex] = charOffsetInPart;
return {
charOffsetInPart: charOffsetInPartArr,
lastRenderedPartIndex: partIndex,
......@@ -170,9 +170,9 @@ function renderLineActual(lineText:string, lineTextLength:number, tabSize:number
};
}
}
out.push('</span>');
out += '</span>';
}
out.push('</span>');
out += '</span>';
// When getting client rects for the last character, we will position the
// text range at the end of the span, insteaf of at the beginning of next span
......
......@@ -23,7 +23,7 @@ suite('viewLineRenderer.renderLine', () => {
[createPart(0, '')]
));
assert.equal(_actual.output.join(''), '<span><span class="token ">' + expected + '</span></span>');
assert.equal(_actual.output, '<span><span class="token ">' + expected + '</span></span>');
assert.deepEqual(_actual.charOffsetInPart, expectedCharOffsetInPart);
}
......@@ -63,7 +63,7 @@ suite('viewLineRenderer.renderLine', () => {
parts
));
assert.equal(_actual.output.join(''), '<span>' + expected + '</span>');
assert.equal(_actual.output, '<span>' + expected + '</span>');
assert.deepEqual(_actual.charOffsetInPart, expectedCharOffsetInPart);
}
......@@ -114,7 +114,7 @@ suite('viewLineRenderer.renderLine', () => {
'<span class="token 5">&nbsp;&hellip;</span>'
].join('');
assert.equal(_actual.output.join(''), '<span>' + expectedOutput + '</span>');
assert.equal(_actual.output, '<span>' + expectedOutput + '</span>');
assert.deepEqual(_actual.charOffsetInPart, [
0,
0,
......@@ -179,7 +179,7 @@ suite('viewLineRenderer.renderLine', () => {
lineParts
));
assert.equal(_actual.output.join(''), '<span>' + expectedOutput + '</span>');
assert.equal(_actual.output, '<span>' + expectedOutput + '</span>');
assert.deepEqual(_actual.charOffsetInPart, expectedOffsets);
});
......@@ -232,7 +232,7 @@ suite('viewLineRenderer.renderLine', () => {
lineParts
));
assert.equal(_actual.output.join(''), '<span>' + expectedOutput + '</span>');
assert.equal(_actual.output, '<span>' + expectedOutput + '</span>');
assert.deepEqual(_actual.charOffsetInPart, expectedOffsets);
});
......@@ -285,7 +285,7 @@ suite('viewLineRenderer.renderLine', () => {
lineParts
));
assert.equal(_actual.output.join(''), '<span>' + expectedOutput + '</span>');
assert.equal(_actual.output, '<span>' + expectedOutput + '</span>');
assert.deepEqual(_actual.charOffsetInPart, expectedOffsets);
});
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册