Deno library for usage of diff Based on the O(n * m) DP solution to the LCS problem
import { diffCharacters } from "https://deno.land/x/diff/mod.ts"; diffCharacters("ABCBDAB", "BDCABA");
Compares two strings by character and returns a list
oldString: The string to be transformed
newString: The string to be transformed into
ignoreCase: Whether case differences should be taken into account
Returns an array of DiffCharacter objects (explained below)
Compares two strings by character and returns the longest common subsequence
DiffCharacter
{ character: string; wasAdded: boolean; wasRemoved: boolean; }
The object contains the character and whether that character was removed, added, or neither. Here is example usage
let finalString = ""; for (const character of diffCharacters("boopa", "boop beep boppy")) { if (character.wasRemoved) { // print red if removed without newline finalString += `\x1b[31m${character.character}\x1b[0m`; } else if (character.wasAdded) { // print green if added finalString += `\x1b[32m${character.character}\x1b[0m`; } else { // print white if unchanged finalString += `\x1b[37m${character.character}\x1b[0m`; } } console.log(finalString);