// @ts-check "use strict"; const { addError, forEachLine } = require("../helpers"); const { lineMetadata } = require("./cache"); const tabRe = /\t+/g; module.exports = { "names": [ "MD010", "no-hard-tabs" ], "description": "Hard tabs", "tags": [ "whitespace", "hard_tab" ], "function": function MD010(params, onError) { const codeBlocks = params.config.code_blocks; const includeCodeBlocks = (codeBlocks === undefined) ? true : !!codeBlocks; const spacesPerTab = params.config.spaces_per_tab; const spaceMultiplier = (spacesPerTab === undefined) ? 1 : Math.max(0, Number(spacesPerTab)); forEachLine(lineMetadata(), (line, lineIndex, inCode) => { if (!inCode || includeCodeBlocks) { let match = null; while ((match = tabRe.exec(line)) !== null) { const column = match.index + 1; const length = match[0].length; addError( onError, lineIndex + 1, "Column: " + column, null, [ column, length ], { "editColumn": column, "deleteCount": length, "insertText": "".padEnd(length * spaceMultiplier) }); } } }); } };