• Stars
    star
    1,827
  • Rank 25,408 (Top 0.6 %)
  • Language
    Go
  • License
    MIT License
  • Created about 12 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Diff, match and patch text in Go

go-diff GoDoc Build Status Coverage Status

go-diff offers algorithms to perform operations required for synchronizing plain text:

  • Compare two texts and return their differences.
  • Perform fuzzy matching of text.
  • Apply patches onto text.

Installation

go get -u github.com/sergi/go-diff/...

Usage

The following example compares two texts and writes out the differences to standard output.

package main

import (
	"fmt"

	"github.com/sergi/go-diff/diffmatchpatch"
)

const (
	text1 = "Lorem ipsum dolor."
	text2 = "Lorem dolor sit amet."
)

func main() {
	dmp := diffmatchpatch.New()

	diffs := dmp.DiffMain(text1, text2, false)

	fmt.Println(dmp.DiffPrettyText(diffs))
}

Found a bug or are you missing a feature in go-diff?

Please make sure to have the latest version of go-diff. If the problem still persists go through the open issues in the tracker first. If you cannot find your request just open up a new issue.

How to contribute?

You want to contribute to go-diff? GREAT! If you are here because of a bug you want to fix or a feature you want to add, you can just read on. Otherwise we have a list of open issues in the tracker. Just choose something you think you can work on and discuss your plans in the issue by commenting on it.

Please make sure that every behavioral change is accompanied by test cases. Additionally, every contribution must pass the lint and test Makefile targets which can be run using the following commands in the repository root directory.

make lint
make test

After your contribution passes these commands, create a PR and we will review your contribution.

Origins

go-diff is a Go language port of Neil Fraser's google-diff-match-patch code. His original code is available at http://code.google.com/p/google-diff-match-patch/.

Copyright and License

The original Google Diff, Match and Patch Library is licensed under the Apache License 2.0. The full terms of that license are included here in the APACHE-LICENSE-2.0 file.

Diff, Match and Patch Library

Written by Neil Fraser Copyright (c) 2006 Google Inc. http://code.google.com/p/google-diff-match-patch/

This Go version of Diff, Match and Patch Library is licensed under the MIT License (a.k.a. the Expat License) which is included here in the LICENSE file.

Go version of Diff, Match and Patch Library

Copyright (c) 2012-2016 The go-diff authors. All rights reserved. https://github.com/sergi/go-diff

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

More Repositories

1

jsftp

Light and complete FTP client implementation for Node.js
JavaScript
808
star
2

virtual-list

Scrollable list of DOM elements that can hold an unlimited amount of rows without breaking a sweat
JavaScript
265
star
3

jsmidi

Library for reading/writing midi files in JavaScript
JavaScript
185
star
4

narwhal-mongodb

Wrapper of MongoDB database for CommonJS
JavaScript
94
star
5

tabgrenade

Tab Grenade is a Firefox Browser extension that creates a persistent list of all your open tabs and then closes them all.
JavaScript
62
star
6

abcnode

Node.js parser for the ABC music notation format
JavaScript
27
star
7

Design-By-Canvas

Port of John Maeda's Design By Numbers to Javascript using PEG.js
JavaScript
20
star
8

parse-listing

Small library to parse file listings into JavaScript objects
JavaScript
16
star
9

xslty

Command-line XSLT 2.0 processor
JavaScript
13
star
10

re-alpine

Mirror of the official re-alpine repository at sourceforge.net
C
12
star
11

rxjs-minimal-boilerplate

Minimal boilerplate for a barebones project in modern RxJS
JavaScript
11
star
12

par

par is a paragraph reformatter, vaguely similar to fmt, but better.
C
10
star
13

pipeline2dcd

Converts JSON Spinnaker pipelines to DCD pipelines (https://github.com/spinnaker/dcd-spec)
JavaScript
9
star
14

siphon

Stream commands output to your browser
Go
8
star
15

cascade

A desktop IRC client made using Node and AngularJS
JavaScript
7
star
16

ftp-test-server

Simple wrapper around pyftpdlib to have an easy FTP server to try stuff with
Python
6
star
17

mlkit

Mirror of the official smltojs SVN repository
Standard ML
4
star
18

ftp-response-parser

Streaming parser for FTP responses
JavaScript
3
star
19

Wakame

Wakame is a Gtk application that acts as a frontend to Wesabe and adds some extra functionality such as complex filters, graphs and persistence.
C#
3
star
20

enumjs

Enumeration over abstract collection of elements, in a functional way.
JavaScript
2
star
21

vimfiles

My vim config
Vim Script
2
star
22

jsmacros

Sweet.js macro collection for JavaScript
JavaScript
2
star
23

sergimansilla.com

My personal website
2
star
24

gab

JavaScript
2
star
25

sergi-vim

My vim environment
Vim Script
2
star
26

coconut

An idempotent photo organizer
Go
2
star
27

detect-failed-junit

Returns error if there are any test suites that failed or errored in a JUnit test report
Go
2
star
28

solitaire

Bruce Schneier's Solitaire cryptoalgorithm implemented in a variety of languages
2
star
29

conceal

Conceals a string or part of it.
JavaScript
2
star
30

rxjs-codemod

JavaScript
2
star
31

sergi.github.com

Personal blog
CSS
1
star
32

parcel_testcase

JavaScript
1
star
33

evidence

C#
1
star
34

mime-multipart

Library to help creating Mime Multi Part Archives
JavaScript
1
star
35

Tagger

Tagger is a speed tagging extension for Thunderbird
JavaScript
1
star
36

vim-chicken-doc

Vim plugin that integrates chicken-doc for scheme files
Vim Script
1
star
37

mesos-scheduler

Simple Scheduler from scratch for Apache Mesos
JavaScript
1
star
38

roughdb-clj

Clojure
1
star
39

XPMParser.js

A parser of the XPM graphical format implemented in JavaScript
JavaScript
1
star
40

geekdots

JavaScript
1
star
41

siphon-ui

UI for Siphon
CSS
1
star
42

roughdb

JavaScript
1
star
43

FoxStat

F#
1
star
44

jpl-website

JavaScript
1
star
45

nodejsconfit2012

Code for the talk given at http://nodejsconf.it/ 2012
JavaScript
1
star