Version > Only send differences line index

This commit is contained in:
brunosimon
2017-09-03 00:33:57 +02:00
parent 8e68b6ece7
commit e1562cccad
3 changed files with 81 additions and 88 deletions
+70 -4
View File
@@ -42,22 +42,28 @@ class File
version.date = new Date()
version.content = content
// First version
if(!lastVersion)
{
version.diff = false
version.addedLines = []
version.removedLines = []
}
// No content
else if(version.content === '')
{
version.diff = [{ count: 1, added: true, removed: undefined, value: 'a' }]
version.addedLines = []
version.removedLines = []
// Don't save if last version had no content too
if(lastVersion.content === '')
{
return false
}
}
// Content
else
{
version.diff = diff.diffLines(
const differences = diff.diffLines(
lastVersion.content,
version.content,
{
@@ -65,8 +71,68 @@ class File
}
)
// Set added lines
version.addedLines = []
let lineProgress = 0
// Added lines and unchanged lines
for(const differenceKey in differences)
{
const difference = differences[differenceKey]
let lineBreaks = (difference.value.match(/\n/g) || []).length
if(parseInt(differenceKey) === differences.length - 1)
{
lineBreaks += 1
}
if(difference.added)
{
for(let i = 0; i < lineBreaks; i++)
{
version.addedLines.push(lineProgress + i)
}
}
if(!difference.removed)
{
lineProgress += lineBreaks
}
}
// Set removed lines
version.removedLines = []
lineProgress = 0
// Removed lines
for(const differenceKey in differences)
{
const difference = differences[differenceKey]
let lineBreaks = (difference.value.match(/\n/g) || []).length
if(parseInt(differenceKey) === differences.length - 1)
{
lineBreaks += 1
}
if(difference.removed)
{
if(version.addedLines.indexOf(lineProgress) === -1 && version.addedLines.indexOf(lineProgress + 1) === -1)
{
version.removedLines.push(lineProgress)
}
}
if(!difference.removed)
{
lineProgress += lineBreaks
}
}
// No changed
if(version.diff.length === 1 && lastVersion.content !== '')
if(differences.length === 1 && lastVersion.content !== '')
{
return false
}