Dwifft - Swift Diff

  •        26

Dwifft is a small Swift library that tells you what the "diff" is between two collections, namely, the series of "edit operations" required to turn one into the other. It also comes with UIKit bindings, to automatically, animatedly keep a UITableView/UICollectionView in sync with a piece of data by making the necessary row/section insertion/deletion calls for you as the data changes. Dwifft is a Swift library that does two things. The first thing sounds interesting but perhaps only abstractly useful, and the other thing is a very concretely useful thing based off the first thing.

https://github.com/jflinter/Dwifft

Tags
Implementation
License
Platform

   




Related Projects

diffy - Easy Diffing in Ruby

  •    Ruby

Need diffs in your ruby app? Diffy has you covered. It provides a convenient way to generate a diff from two strings or files. Instead of reimplementing the LCS diff algorithm Diffy uses battle tested Unix diff to generate diffs, and focuses on providing a convenient interface, and getting out of your way. It provides several built in format options which can be passed to Diffy::Diff#to_s.

javaxdelta

  •    

This library implements Josh MacDonalds xdelta binary diff algorithm in java. More information on this algorithm can be found at http://sourceforge.net/projects/xdelta. Binary diff files are stored using the GDIFF file format for storing binary deltas.

vim-diff-enhanced - Better Diff options for Vim

  •    Vim

This plugin allows you to make use of the Patience diff algorithm for generating diffs to use with Vim. This needs the git command line tool available. You can also customize your setup to use any other tool to generated diffs (e.g. mercurial) Read the help on how to configure the plugin accordingly.

DifferenceKit - 💻 A fast and flexible O(n) difference algorithm framework for Swift collection.

  •    Swift

The algorithm used in DifferenceKit is optimized based on the Paul Heckel's algorithm. See also his paper "A technique for isolating differences between files" released in 1978. RxDataSources and IGListKit are also implemented based on his algorithm. This allows all types of differences to be computed in linear time O(n).


nanomorph - 🚅 - Hyper fast diffing algorithm for real DOM nodes

  •    Javascript

It's common to work with lists of elements on the DOM. Adding, removing or reordering elements in a list can be rather expensive. To optimize this you can add an id attribute to a DOM node. When reordering nodes it will compare nodes with the same ID against each other, resulting in far fewer re-renders. This is especially potent when coupled with DOM node caching. Sometimes we want to tell the algorithm to not evaluate certain nodes (and its children). This can be because we're sure they haven't changed, or perhaps because another piece of code is managing that part of the DOM tree. To achieve this nanomorph evaluates the .isSameNode() method on nodes to determine if they should be updated or not.

jsdiff - A javascript text differencing implementation.

  •    Javascript

A javascript text differencing implementation. Based on the algorithm proposed in "An O(ND) Difference Algorithm and its Variations" (Myers, 1986).

gsync - gSync is an rsync based library for sending delta updates of files to a remote server.

  •    Go

A Go library implementing rsync algorithm described at https://www.samba.org/~tridge/phd_thesis.pdf and in more detail at http://paperswelove.org/2017/video/camilo-aguilar-rsync-algorithm/.

spaceman-diff - diff images from the command line

  •    Shell

spaceman-diff is a quick drop in to git-diff. The idea is that you can just git diff like normal and, if you've changed an image file, spaceman-diff will render your images in a colorful ASCII approximation in your shell along with helpful data like file size changes. The goal is that spaceman-diff gives you a quick way of verifying that yes, the image you're committing is the image you want to commit, and yes, the image you're committing isn't accidentally 20 terabytes in size or something foolish like that.

Mergely - Web Application to View and Merge Changes in Documents

  •    Javascript

Mergely is a web application to view and merge changes in documents. Mergely shows you changes to documents side-by-side so you can clearly see what changed from one version to the next. It can be used as a diff tool (read-only) or as both a diff and merge tool for plain text, CSS, HTML, XML, javascript, PHP, C, C++, etc.

Meld - Visual Diff and Merge Tool

  •    Python

Meld is a gnome2 diff and merge tool with pluggable support for version control systems such as cvs, subversion, bzr, darcs, mercurial, monotone, tla. Meld helps you review code changes and understand patches.

N-way Folder Diff

  •    Java

N-way Folder Diff is a simple, platform independent tool to compare multiple folders. It differs from usual diff tools because it is possible to do n-way (upto 10 way) diff as compared to the usual 2-way diff.

container-diff - container-diff: Diff your Docker containers

  •    Go

These analyses can be performed on a single image, or a diff can be performed on two images to compare. The tool can help users better understand what is changing inside their images, and give them a better look at what their images contain. By default, with no --type flag specified, container-diff will run Apt package analysis.

diff - Javascript utility for calculating deep difference, capturing changes, and applying changes across objects; for nodejs and the browser

  •    Javascript

deep-diff is a javascript/node.js module providing utility functions for determining the structural differences between objects and includes some utilities for applying differences across objects. In a browser, deep-diff defines a global variable DeepDiff. If there is a conflict in the global namespace you can restore the conflicting definition and assign deep-diff to another variable like this: var deep = DeepDiff.noConflict();.

diff-so-fancy - Good-lookin' diffs. Actually… nah… The best-lookin' diffs. :tada:

  •    Perl

diff-so-fancy strives to make your diff's human readable instead of machine readable. This helps improve code quality and help you spot defects faster. Installation is as simple as downloading the diff-so-fancy script to a directory in your path. Windows users may need to install the Windows subsystem for Linux.

JavaScriptDiff

  •    Javascript

JavaScript implementation of longest common subsequence algorithm. All the code is inline. No includes. No server side.

Diff

  •    Swift

Since I don't use Diff.swift anymore Tony Arnold kindly offered to take over maintenance of this project in his own fork. Don't use Diff.swift, this repo is only kept as an archive. This library generates differences between any two Collections (and Strings). It uses a fast algorithm (O((N+M)*D)).

virtual-dom - A Virtual DOM and diffing algorithm

  •    Javascript

Manual DOM manipulation is messy and keeping track of the previous DOM state is hard. A solution to this problem is to write your code as if you were recreating the entire DOM whenever state changes. Of course, if you actually recreated the entire DOM every time your application state changed, your app would be very slow and your input fields would lose focus. virtual-dom is a collection of modules designed to provide a declarative way of representing the DOM for your app. So instead of updating the DOM when your application state changes, you simply create a virtual tree or VTree, which looks like the DOM state that you want. virtual-dom will then figure out how to make the DOM look like this efficiently without recreating all of the DOM nodes.

External diff Tool (Eclipse Plugin)

  •    Java

External diff Tool is an Eclipse plugin that allows the launch of an external diff tool for file compares rather than the default built-in Eclipse diff tool. This plugin doesn't replace the built-in Eclipse tool. It only adds a new menu item to the GUI.

Delta - code inspection and diff tool

  •    Perl

A source code diff tool. Adapted from cvsweb, it makes code inspection easy. It also provides another diff tool with which you can either compare two files or two directories recursively. It is written in perl and uses String::Ediff for finer diff.