in plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonqFeatureDev/util/DiffMetrics.kt [38:76]
fun getDiffMetrics(before: String, after: String): DiffMetrics {
val comparisonManager = ComparisonManager.getInstance()
val fragments = comparisonManager.compareLines(
before,
after,
ComparisonPolicy.IGNORE_WHITESPACES,
EmptyProgressIndicator()
)
var accLineCount = 0
var accCharCount = 0
fragments.forEach { fragment: LineFragment ->
var curr = fragment.startOffset2
val end = fragment.endOffset2
while (curr < end) {
accLineCount += 1
// Consume leading whitespace:
while (curr < end && lineEnding(after, curr, end) == -1 && after[curr].isWhitespace()) curr++
// Consume through EOL:
val lineContentStart = curr
while (curr < end && lineEnding(after, curr, end) == -1) curr++
var lineContentEnd = curr
curr += maxOf(lineEnding(after, curr, end), 0)
// Walk back trailing whitespace and record character count before continuing to next line:
while (lineContentEnd > lineContentStart && after[lineContentEnd - 1].isWhitespace()) lineContentEnd--
accCharCount += lineContentEnd - lineContentStart
}
}
return DiffMetrics(
insertedLines = accLineCount,
insertedCharacters = accCharCount,
)
}