diff.forEach(part => { const color = part.added ? 'green' : part.removed ? 'red' : 'grey'; process.stderr.write(part.value[color]); });
const writeStringDifference = (out, actual, expected) => { const charDiffs = diffChars(actual, expected); const toRemove = charDiffs .filter(diff => !diff.added) .map(d => d.removed ? out.diffRemove(d.value) : out.diffSame(d.value)) .join(''); const toAdd = charDiffs .filter(diff => !diff.removed) .map(d => d.added ? out.diffAdd(d.value) : out.diffSame(d.value)) .join(''); out.writeBlock(`expected ${out.emphasis('string')} to be ${out.operator(expected)} but got the following differences:`, 4); out.writeBlock(`${out.error('-')} ${toRemove}`, 4); out.writeLine(`${out.success('+')} ${toAdd}`, 4); }