{"id":1045,"url":"https://github.com/zenangst/Differific","last_synced_at":"2025-08-06T16:32:02.755Z","repository":{"id":56908541,"uuid":"131187186","full_name":"zenangst/Differific","owner":"zenangst","description":":fuelpump: Differific - a fast and convenient diffing framework.","archived":false,"fork":false,"pushed_at":"2019-12-20T01:09:01.000Z","size":217,"stargazers_count":123,"open_issues_count":0,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-11-22T11:27:15.846Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zenangst.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":"FUNDING.yml","license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":["zenangst"]}},"created_at":"2018-04-26T17:08:50.000Z","updated_at":"2024-01-09T14:11:58.000Z","dependencies_parsed_at":"2022-08-21T03:50:21.060Z","dependency_job_id":null,"html_url":"https://github.com/zenangst/Differific","commit_stats":null,"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zenangst%2FDifferific","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zenangst%2FDifferific/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zenangst%2FDifferific/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zenangst%2FDifferific/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zenangst","download_url":"https://codeload.github.com/zenangst/Differific/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228923746,"owners_count":17992573,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-01-05T20:15:37.755Z","updated_at":"2024-12-09T16:31:16.756Z","avatar_url":"https://github.com/zenangst.png","language":"Swift","funding_links":["https://github.com/sponsors/zenangst"],"categories":["Data Structures / Algorithms","Libs","Swift","Utility [🔝](#readme)"],"sub_categories":["Getting Started","Utility","Linter"],"readme":"# Differific\n\n\u003cdiv align=\"center\"\u003e\n\n[![CI Status](https://travis-ci.org/zenangst/Differific.svg?branch=master)](https://travis-ci.org/zenangst/Differific)\n[![Version](https://img.shields.io/cocoapods/v/Differific.svg?style=flat)](http://cocoadocs.org/docsets/Differific)\n[![Carthage Compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)\n[![codecov](https://codecov.io/gh/zenangst/Differific/branch/master/graph/badge.svg)](https://codecov.io/gh/zenangst/Differific)\n[![License](https://img.shields.io/cocoapods/l/Differific.svg?style=flat)](http://cocoadocs.org/docsets/Differific)\n[![Platform](https://img.shields.io/cocoapods/p/Differific.svg?style=flat)](http://cocoadocs.org/docsets/Differific)\n![Swift](https://img.shields.io/badge/%20in-swift%204.2-orange.svg)\n\n\u003c/div\u003e\n\n## Description\n\n\u003cimg src=\"https://github.com/zenangst/Differific/blob/master/Images/Differific-icon.png?raw=true\" alt=\"Differific Icon\" align=\"right\" /\u003e\n\n**Differific** is a diffing tool that helps you compare Hashable objects using the Paul Heckel's diffing algorithm. Creating a changeset is seamless for all your diffing needs. The library also includes some convenience extensions to make life easier when updating data sources.\n\nThe library is based and highly influenced by Matias Cudich's ([@mcudich](https://github.com/mcudich)) [HeckelDiff](https://github.com/mcudich/HeckelDiff) library that aims to solve the same issue. Versions prior to 0.3.0 was based on [DeepDiff](https://github.com/onmyway133/DeepDiff).\nFor more information about how the algorithm works and the performance of the algorithm, head over to [DeepDiff](https://github.com/onmyway133/DeepDiff/blob/master/README.md#among-different-frameworks). For the time being, both frameworks are very similar; this is subject to change when the frameworks evolve.\n\n## Features\n\n- [x] 🍩Built-in extensions for updating table \u0026 collection views.\n- [x] 🎩Customizable diffing.\n- [x] 🏎High performance.\n- [x] 📱iOS support.\n- [x] 💻macOS support.\n- [x] 📺tvOS support.\n\n## Usage\n\n### Diffing two collections\n\n```swift\nlet old = [\"Foo\", \"Bar\"]\nlet new = [\"Foo\", \"Bar\", \"Baz\"]\nlet manager = DiffManager()\nlet changes = manager.diff(old, new)\n```\n\n### Updating a table or collection view\n\n```swift\n// uiElement is either your table view or collection view.\nlet old = dataSource.models\nlet new = newCollection\nlet changes = DiffManager().diff(old, new)\nuiElement.reload(with: changes, before: { dataSource.models = new })\n```\n\n\n## Installation\n\n**Differific** is available through [CocoaPods](http://cocoapods.org). To install\nit, simply add the following line to your Podfile:\n\n```ruby\npod 'Differific'\n```\n\n**Differific** is also available through [Carthage](https://github.com/Carthage/Carthage).\nTo install just write into your Cartfile:\n\n```ruby\ngithub \"zenangst/Differific\"\n```\n\n**Differific** can also be installed manually. Just download and drop `Sources` folders in your project.\n\n## Author\n\n- Christoffer Winterkvist, christoffer@winterkvist.com\n- Khoa Pham, onmyway133@gmail.com\n\n## Contributing\n\nWe would love you to contribute to **Differific**, check the [CONTRIBUTING](https://github.com/zenangst/Differific/blob/master/CONTRIBUTING.md) file for more info.\n\n## License\n\n**Differific** is available under the MIT license. See the [LICENSE](https://github.com/zenangst/Differific/blob/master/LICENSE.md) file for more info.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzenangst%2FDifferific","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzenangst%2FDifferific","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzenangst%2FDifferific/lists"}