Created
June 21, 2016 08:50
-
-
Save anonymous/d6f802a5a8183e828b1c09835a4a8e3d to your computer and use it in GitHub Desktop.
Revisions
-
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,117 @@ <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <title>JS Bin</title> </head> <body> <script id="jsbin-javascript"> function findDiff(original, newText) { function getZip(originalList, newTextList){ return originalList.map(function(char,i) { return { first: char, second: newTextList[i] } }) } function findDiffPoint(zippedList) { var start = 0 zippedList.forEach(function(pair, index) { if (start > 0) return if (pair.first != pair.second) { start = index } }) return start } var zip = getZip( original.split(''), newText.split('') ) var diffStart = findDiffPoint(zip) var reverseZip = getZip( original.split('').reverse(), newText.split('').reverse() ) var diffEnd = newText.length - findDiffPoint(reverseZip) var added = newText.slice(diffStart,diffEnd) return { start: diffStart, end: diffEnd, added: added } } var original = "first para\n Second para" var newText = "first para\n <b> INSERT </b> Second para" diff = findDiff(original,newText) console.log( diff ) </script> <script id="jsbin-source-javascript" type="text/javascript">function findDiff(original, newText) { function getZip(originalList, newTextList){ return originalList.map(function(char,i) { return { first: char, second: newTextList[i] } }) } function findDiffPoint(zippedList) { var start = 0 zippedList.forEach(function(pair, index) { if (start > 0) return if (pair.first != pair.second) { start = index } }) return start } var zip = getZip( original.split(''), newText.split('') ) var diffStart = findDiffPoint(zip) var reverseZip = getZip( original.split('').reverse(), newText.split('').reverse() ) var diffEnd = newText.length - findDiffPoint(reverseZip) var added = newText.slice(diffStart,diffEnd) return { start: diffStart, end: diffEnd, added: added } } var original = "first para\n Second para" var newText = "first para\n <b> INSERT </b> Second para" diff = findDiff(original,newText) console.log( diff )</script></body> </html> This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,51 @@ function findDiff(original, newText) { function getZip(originalList, newTextList){ return originalList.map(function(char,i) { return { first: char, second: newTextList[i] } }) } function findDiffPoint(zippedList) { var start = 0 zippedList.forEach(function(pair, index) { if (start > 0) return if (pair.first != pair.second) { start = index } }) return start } var zip = getZip( original.split(''), newText.split('') ) var diffStart = findDiffPoint(zip) var reverseZip = getZip( original.split('').reverse(), newText.split('').reverse() ) var diffEnd = newText.length - findDiffPoint(reverseZip) var added = newText.slice(diffStart,diffEnd) return { start: diffStart, end: diffEnd, added: added } } var original = "first para\n Second para" var newText = "first para\n <b> INSERT </b> Second para" diff = findDiff(original,newText) console.log( diff )