astx
Version:
super powerful structural search and replace for JavaScript and TypeScript to automate your refactoring
22 lines (18 loc) • 2.6 kB
JavaScript
import { diffLines } from 'diff'
export default function omitBlankLineChanges(oldStr, newStr) {
const changes = diffLines(oldStr, newStr, {
newlineIsToken: true,
})
const result = []
let lastChange
for (const c of changes) {
if (c.removed ? !/\S/.test(c.value) : /\S/.test(c.value) || !c.added) {
let { value } = c
if (c.added && lastChange && !lastChange.added)
value = value.replace(/^\n+/, '')
result.push(value)
}
lastChange = c
}
return result.join('')
} //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkaWZmTGluZXMiLCJvbWl0QmxhbmtMaW5lQ2hhbmdlcyIsIm9sZFN0ciIsIm5ld1N0ciIsImNoYW5nZXMiLCJuZXdsaW5lSXNUb2tlbiIsInJlc3VsdCIsImxhc3RDaGFuZ2UiLCJjIiwicmVtb3ZlZCIsInRlc3QiLCJ2YWx1ZSIsImFkZGVkIiwicmVwbGFjZSIsInB1c2giLCJqb2luIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWwvb21pdEJsYW5rTGluZUNoYW5nZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGlmZkxpbmVzIH0gZnJvbSAnZGlmZidcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gb21pdEJsYW5rTGluZUNoYW5nZXMoXG4gIG9sZFN0cjogc3RyaW5nLFxuICBuZXdTdHI6IHN0cmluZ1xuKTogc3RyaW5nIHtcbiAgY29uc3QgY2hhbmdlcyA9IGRpZmZMaW5lcyhvbGRTdHIsIG5ld1N0ciwgeyBuZXdsaW5lSXNUb2tlbjogdHJ1ZSB9KVxuICBjb25zdCByZXN1bHQgPSBbXVxuICBsZXQgbGFzdENoYW5nZVxuICBmb3IgKGNvbnN0IGMgb2YgY2hhbmdlcykge1xuICAgIGlmIChjLnJlbW92ZWQgPyAhL1xcUy8udGVzdChjLnZhbHVlKSA6IC9cXFMvLnRlc3QoYy52YWx1ZSkgfHwgIWMuYWRkZWQpIHtcbiAgICAgIGxldCB7IHZhbHVlIH0gPSBjXG4gICAgICBpZiAoYy5hZGRlZCAmJiBsYXN0Q2hhbmdlICYmICFsYXN0Q2hhbmdlLmFkZGVkKVxuICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL15cXG4rLywgJycpXG4gICAgICByZXN1bHQucHVzaCh2YWx1ZSlcbiAgICB9XG4gICAgbGFzdENoYW5nZSA9IGNcbiAgfVxuICByZXR1cm4gcmVzdWx0LmpvaW4oJycpXG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFNBQVQsUUFBMEIsTUFBMUI7O0FBRUEsZUFBZSxTQUFTQyxvQkFBVDtBQUNiQyxNQURhO0FBRWJDLE1BRmE7QUFHTDtFQUNSLE1BQU1DLE9BQU8sR0FBR0osU0FBUyxDQUFDRSxNQUFELEVBQVNDLE1BQVQsRUFBaUIsRUFBRUUsY0FBYyxFQUFFLElBQWxCLEVBQWpCLENBQXpCO0VBQ0EsTUFBTUMsTUFBTSxHQUFHLEVBQWY7RUFDQSxJQUFJQyxVQUFKO0VBQ0EsS0FBSyxNQUFNQyxDQUFYLElBQWdCSixPQUFoQixFQUF5QjtJQUN2QixJQUFJSSxDQUFDLENBQUNDLE9BQUYsR0FBWSxDQUFDLEtBQUtDLElBQUwsQ0FBVUYsQ0FBQyxDQUFDRyxLQUFaLENBQWIsR0FBa0MsS0FBS0QsSUFBTCxDQUFVRixDQUFDLENBQUNHLEtBQVosS0FBc0IsQ0FBQ0gsQ0FBQyxDQUFDSSxLQUEvRCxFQUFzRTtNQUNwRSxJQUFJLEVBQUVELEtBQUYsS0FBWUgsQ0FBaEI7TUFDQSxJQUFJQSxDQUFDLENBQUNJLEtBQUYsSUFBV0wsVUFBWCxJQUF5QixDQUFDQSxVQUFVLENBQUNLLEtBQXpDO01BQ0VELEtBQUssR0FBR0EsS0FBSyxDQUFDRSxPQUFOLENBQWMsTUFBZCxFQUFzQixFQUF0QixDQUFSO01BQ0ZQLE1BQU0sQ0FBQ1EsSUFBUCxDQUFZSCxLQUFaO0lBQ0Q7SUFDREosVUFBVSxHQUFHQyxDQUFiO0VBQ0Q7RUFDRCxPQUFPRixNQUFNLENBQUNTLElBQVAsQ0FBWSxFQUFaLENBQVA7QUFDRCJ9