GitXplorerGitXplorer
s

Diff

public
122 stars
10 forks
0 issues

Commits

List of commits on branch master.
Unverified
859cf080426506d998058c3bece38fbdcf1fbc02

Version 0.2.5

ssoffes committed 5 years ago
Unverified
7f2e5db2b196c9028a9b13e495a57ac1e7c56ce4

Latest Swift

ssoffes committed 5 years ago
Unverified
395a651100f22af9379aa7ff4385582fa0e71524

Oops

ssoffes committed 5 years ago
Unverified
b01e06d6c0c0388bf5dc38b9ae801775ec097ff0

Update actions

ssoffes committed 5 years ago
Unverified
f575f1b295571b5efdcec38a48f9eb51a404892d

Swift 5 support & GitHub Actions

ssoffes committed 5 years ago
Unverified
23f5a64c6538894d7969475be413c28b7a1e6108

Version 0.2.3

ssoffes committed 7 years ago

README

The README file for this repository.

Diff

Version Build Status Carthage compatible

Simple diffing library in pure Swift.

Installing

You can use Carthage or Swift Package Manager to install Diff.

Usage

Start by importing the package:

import Diff

Same

If there is no difference, the diff will be nil.

diff("Hello", "Hello") // nil

For the sake of brevity, we'll ! the rest of the examples since we know they're different.

Insert

let (range, string) = diff("Hello world", "Hello there world")!
// range: 6..<6
// string: "there "

Remove

let (range, string) = diff("Hello there world", "Hello world")!
// range: 6..<12
// string: ""

Other Types

Diff can diff any array. Here's an array of things that conform to Equatable:

let (range, replacement) = diff([1, 2, 3], [1, 2, 3, 4])!
// range: 3..<3
// replacement: [4]

You can even use arrays of anything as long as you can compare them:

let before: [Foo] = [a, b]
let after: [Foo] = [b]
let (range, replacement) = diff(before, after, compare: Foo.compare)!
// range: 0..<1
// replacement: []

Development

If you want to contribute to Diff, please write a test.

Building and running the tests locally with SPM is easy:

$ git clone https://github.com/soffes/Diff
$ cd Diff
$ swift build
$ swift test

Thanks

Thanks to Jonathan Clem for the original algorithm and Caleb Davenport for inspiration for the generics implementation and help debugging a few edge cases!