in src/formatter-settings/assets/whitespace.ts [29:61]
function replace(node: Node): void {
const textValue: string | null = node.nodeValue;
if (!textValue) {
return;
}
const parent: (Node & ParentNode) | null = node.parentNode;
if (!parent) {
return;
}
const tabs: string[] = textValue.split("\t");
const tabSpaces: string[][] = tabs.map(s => s.split(" "));
if (tabSpaces.length === 1 && tabSpaces[0].length === 1) {
return;
}
for (let i = 0; i < tabSpaces.length; i++) {
if (i > 0) {
parent.insertBefore<HTMLSpanElement>(createTabElement(), node);
}
let spaceCount = 0;
for (let j = 0; j < tabSpaces[i].length; j++) {
if (tabSpaces[i][j] === "" && j !== tabSpaces[i].length - 1) {
spaceCount = spaceCount + 1;
continue;
}
if (spaceCount > 0) {
parent.insertBefore<HTMLSpanElement>(createSpaceElement(spaceCount), node);
}
parent.insertBefore<Text>(document.createTextNode(tabSpaces[i][j]), node);
spaceCount = 1;
}
}
parent.removeChild(node);
}