function replace()

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);
}