Documentation
¶
Index ¶
Constants ¶
View Source
const ( // RemoveCost gives the cost to remove A at the given index. RemoveCost = 1 // AddCost gives the cost to add B at the given index. AddCost = 1 // SubstitutionCost gives the substitution cost for replacing A with B at the given indices. SubstitutionCost = 2 // EqualCost gives the cost for A and B being equal. EqualCost = 0 )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Algorithm ¶
type Algorithm interface {
// NoResizeNeeded determines if the diff algorithm can handle a container with
// the amount of data inside of the given container. If this returns false a
// larger matrix, cache, vector, or whatever would be created to perform the diff.
NoResizeNeeded(cont Container) bool
// Diff performs the algorithm on the given container
// and writes the results to the collector.
Diff(cont Container, col Collector)
}
Algorithm is the interface for a diff algorithm.
type Collector ¶
type Collector interface {
// InsertAdded inserts new Added parts into this collection.
// This is expected to be inserted in reverse order from the expected result.
InsertAdded(count int)
// InsertRemoved inserts new Removed parts into this collection.
// This is expected to be inserted in reverse order from the expected result.
InsertRemoved(count int)
// InsertEqual inserts new Equal parts into this collection.
// This is expected to be inserted in reverse order from the expected result.
InsertEqual(count int)
// InsertSubstitute inserts new Added and Removed parts into this collection.
// This is expected to be inserted in reverse order from the expected result.
InsertSubstitute(count int)
// Finish inserts any remaining parts which haven't been inserted yet.
Finish() differs.Result
}
Collector is a tool for collecting the diff result.
type Container ¶
type Container interface {
differs.Data
// SubstitutionCost determines the substitution cost for the given indices.
SubstitutionCost(i, j int) int
// Sub creates a new data container for a subset and
// reverse relative to this container's settings.
// The high values are exclusive, the low is inclusive.
Sub(aLow, aHigh, bLow, bHigh int, reverse bool) Container
// Reduce determines how much of the edges of this container are equal.
// The amount before and after which are equal are returned and
// the reduced sub-container is returned.
Reduce() (Container, int, int)
// EndCase determines if the given container is small enough to be simply added
// into the collector without any diff algorithm. This will add into the given
// collector and return true if done, otherwise it will return false.
EndCase(col Collector) bool
}
Container is a wrapper for the data. It is used to determine subset and revered reading of the data.
Click to show internal directories.
Click to hide internal directories.