/** * @typedef {import('../types.js').IndentLines} IndentLines */ const eol = /\r?\n|\r/g /** * @type {IndentLines} */ export function indentLines(value, map) { /** @type {Array} */ const result = [] let start = 0 let line = 0 /** @type {RegExpExecArray | null} */ let match while ((match = eol.exec(value))) { one(value.slice(start, match.index)) result.push(match[0]) start = match.index + match[0].length line++ } one(value.slice(start)) return result.join('') /** * @param {string} value */ function one(value) { result.push(map(value, line, !value)) } }