diff --git a/README.md b/README.md index 4e8d6c170..3ef5c4d61 100755 --- a/README.md +++ b/README.md @@ -66,6 +66,7 @@ List of Definitions * [d3.js](http://d3js.org/) (from TypeScript samples) * [dhtmlxGantt](http://dhtmlx.com/docs/products/dhtmlxGantt) (by [Maksim Kozhukh](http://github.com/mkozhukh)) * [dhtmlxScheduler](http://dhtmlx.com/docs/products/dhtmlxScheduler) (by [Maksim Kozhukh](http://github.com/mkozhukh)) +* [diff](https://github.com/kpdecker/jsdiff) (by [vvakame](http://github.com/vvakame)) * [Dock Spawn](http://dockspawn.com) (by [Drew Noakes](https://drewnoakes.com)) * [docCookies](https://developer.mozilla.org/en-US/docs/Web/API/document.cookie) (by [Jon Egerton](https://github.com/jonegerton)) * [domo](http://domo-js.com/) (by [Steve Fenton](https://github.com/Steve-Fenton)) diff --git a/diff/diff-tests.ts b/diff/diff-tests.ts new file mode 100644 index 000000000..1588f5947 --- /dev/null +++ b/diff/diff-tests.ts @@ -0,0 +1,14 @@ +/// + +import jsdiff = require('diff'); + +var one = 'beep boop'; +var other = 'beep boob blah'; + +var diff = jsdiff.diffChars(one, other); + +diff.forEach(function (part) { + var mark = part.added ? '+' : + part.removed ? '-' : ' '; + console.log(mark + " " + part.value); +}); diff --git a/diff/diff.d.ts b/diff/diff.d.ts new file mode 100644 index 000000000..9ccbb10a8 --- /dev/null +++ b/diff/diff.d.ts @@ -0,0 +1,57 @@ +// Type definitions for diff +// Project: https://github.com/kpdecker/jsdiff +// Definitions by: vvakame +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +declare module JsDiff { + interface IDiffResult { + value: string; + added?: boolean; + removed?: boolean; + } + + interface IBestPath { + newPos: number; + componenets: IDiffResult[]; + } + + class Diff { + ignoreWhitespace:boolean; + + constructor(ignoreWhitespace?:boolean); + + diff(oldString:string, newString:string):IDiffResult[]; + + pushComponent(components:IDiffResult[], value:string, added:boolean, removed:boolean):void; + + extractCommon(basePath:IBestPath, newString:string, oldString:string, diagonalPath:number):number; + + equals(left:string, right:string):boolean; + + join(left:string, right:string):string; + + tokenize(value:string):any; // return types are string or string[] + } + + function diffChars(oldStr:string, newStr:string):IDiffResult[]; + + function diffWords(oldStr:string, newStr:string):IDiffResult[]; + + function diffWordsWithSpace(oldStr:string, newStr:string):IDiffResult[]; + + function diffLines(oldStr:string, newStr:string):IDiffResult[]; + + function diffCss(oldStr:string, newStr:string):IDiffResult[]; + + function createPatch(fileName:string, oldStr:string, newStr:string, oldHeader:string, newHeader:string):string; + + function applyPatch(oldStr:string, uniDiff:string):string; + + function convertChangesToXML(changes:IDiffResult[]):string; + + function convertChangesToDMP(changes:IDiffResult[]):{0: number; 1:string;}[]; +} + +declare module "diff" { + export = JsDiff; +}