monaco-editor-core
Version:
A browser based code editor
35 lines (34 loc) • 1.34 kB
JavaScript
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
export class LineSequence {
constructor(trimmedHash, lines) {
this.trimmedHash = trimmedHash;
this.lines = lines;
}
getElement(offset) {
return this.trimmedHash[offset];
}
get length() {
return this.trimmedHash.length;
}
getBoundaryScore(length) {
const indentationBefore = length === 0 ? 0 : getIndentation(this.lines[length - 1]);
const indentationAfter = length === this.lines.length ? 0 : getIndentation(this.lines[length]);
return 1000 - (indentationBefore + indentationAfter);
}
getText(range) {
return this.lines.slice(range.start, range.endExclusive).join('\n');
}
isStronglyEqual(offset1, offset2) {
return this.lines[offset1] === this.lines[offset2];
}
}
function getIndentation(str) {
let i = 0;
while (i < str.length && (str.charCodeAt(i) === 32 /* CharCode.Space */ || str.charCodeAt(i) === 9 /* CharCode.Tab */)) {
i++;
}
return i;
}