@@ -2900,74 +2900,17 @@ func formatDiffOutput(_ mapping: DiffLineMapping, sourceCharCount: Int = 0, dest
29002900 return output
29012901}
29022902
2903- /// Formats diff line mappings - PLACEHOLDER version (with ----: for empty spaces)
2904- func formatDiffOutputWithPlaceholders( _ mapping: DiffLineMapping , sourceCharCount: Int = 0 , destCharCount: Int = 0 ) -> String {
2905- var output = generateDiffHeader ( sourceCharCount: sourceCharCount, destCharCount: destCharCount)
2906-
2907- var sourceIndex = 0
2908- var destIndex = 0
2909-
2910- while sourceIndex < mapping. sourceLines. count || destIndex < mapping. destLines. count {
2911- let sourceLineExists = sourceIndex < mapping. sourceLines. count
2912- let destLineExists = destIndex < mapping. destLines. count
2913-
2914- if sourceLineExists && destLineExists {
2915- let ( sourceNum, sourceContent) = mapping. sourceLines [ sourceIndex]
2916- let ( destNum, destContent) = mapping. destLines [ destIndex]
2917-
2918- if sourceContent. hasPrefix ( " : " ) && destContent. hasPrefix ( " : " ) && sourceContent == destContent {
2919- // Same retained line
2920- let actualContent = String ( sourceContent. dropFirst ( 2 ) )
2921- let sourceDisplay = actualContent. padding ( toLength: DiffFormatConstants . sourceColumnWidth, withPad: " " , startingAt: 0 )
2922- output += " \( formatLineNumber ( sourceNum) ) : \( sourceDisplay) | \( formatLineNumber ( destNum) ) : \( actualContent) \n "
2923- sourceIndex += 1
2924- destIndex += 1
2925- } else if sourceContent. hasPrefix ( " - " ) {
2926- // Deleted line
2927- let actualContent = String ( sourceContent. dropFirst ( 2 ) )
2928- let sourceDisplay = actualContent. padding ( toLength: DiffFormatConstants . sourceColumnWidth, withPad: " " , startingAt: 0 )
2929- output += " \( formatLineNumber ( sourceNum) ) - \( sourceDisplay) | \( DiffFormatConstants . placeholderText) : \( createEmptyPadding ( ) ) \n "
2930- sourceIndex += 1
2931- } else if destContent. hasPrefix ( " + " ) {
2932- // Added line
2933- let actualContent = String ( destContent. dropFirst ( 2 ) )
2934- output += " \( DiffFormatConstants . placeholderText) : \( createEmptyPadding ( ) ) | \( formatLineNumber ( destNum) ) + \( actualContent) \n "
2935- destIndex += 1
2936- } else {
2937- sourceIndex += 1
2938- destIndex += 1
2939- }
2940- } else if sourceLineExists {
2941- // Only source line left
2942- let ( sourceNum, sourceContent) = mapping. sourceLines [ sourceIndex]
2943- let symbol = String ( sourceContent. prefix ( 1 ) )
2944- let actualContent = String ( sourceContent. dropFirst ( 2 ) )
2945- let sourceDisplay = actualContent. padding ( toLength: DiffFormatConstants . sourceColumnWidth, withPad: " " , startingAt: 0 )
2946- output += " \( formatLineNumber ( sourceNum) ) \( symbol) \( sourceDisplay) | \( DiffFormatConstants . placeholderText) : \( createEmptyPadding ( ) ) \n "
2947- sourceIndex += 1
2948- } else if destLineExists {
2949- // Only dest line left
2950- let ( destNum, destContent) = mapping. destLines [ destIndex]
2951- let symbol = String ( destContent. prefix ( 1 ) )
2952- let actualContent = String ( destContent. dropFirst ( 2 ) )
2953- output += " \( DiffFormatConstants . placeholderText) : \( createEmptyPadding ( ) ) | \( formatLineNumber ( destNum) ) \( symbol) \( actualContent) \n "
2954- destIndex += 1
2955- }
2956- }
2957-
2958- output += generateDiffFooter ( includePlaceholderLegend: true )
2959- return output
2960- }
29612903
2962- /// Formats diff line mappings - VERTICAL SPACE version (with line numbers for empty spaces)
2963- func formatDiffOutputWithVerticalSpace( _ mapping: DiffLineMapping , sourceCharCount: Int = 0 , destCharCount: Int = 0 ) -> String {
2904+
2905+ /// Formats diff line mappings - CONSOLIDATED version (placeholders OR line numbers for empty spaces)
2906+ func formatDiffOutputWithEmptyFill( _ mapping: DiffLineMapping , sourceCharCount: Int = 0 , destCharCount: Int = 0 , usePlaceholders: Bool = false ) -> String {
29642907 var output = generateDiffHeader ( sourceCharCount: sourceCharCount, destCharCount: destCharCount)
29652908
29662909 var sourceIndex = 0
29672910 var destIndex = 0
29682911 var virtualSourceLine = 1
29692912 var virtualDestLine = 1
2970-
2913+
29712914 while sourceIndex < mapping. sourceLines. count || destIndex < mapping. destLines. count {
29722915 let sourceLineExists = sourceIndex < mapping. sourceLines. count
29732916 let destLineExists = destIndex < mapping. destLines. count
@@ -2986,17 +2929,19 @@ func formatDiffOutputWithVerticalSpace(_ mapping: DiffLineMapping, sourceCharCou
29862929 virtualSourceLine = sourceNum + 1
29872930 virtualDestLine = destNum + 1
29882931 } else if sourceContent. hasPrefix ( " - " ) {
2989- // Deleted line - fill dest with virtual line number
2932+ // Deleted line - fill dest with placeholder or line number
29902933 let actualContent = String ( sourceContent. dropFirst ( 2 ) )
29912934 let sourceDisplay = actualContent. padding ( toLength: DiffFormatConstants . sourceColumnWidth, withPad: " " , startingAt: 0 )
2992- output += " \( formatLineNumber ( sourceNum) ) - \( sourceDisplay) | \( formatLineNumber ( virtualDestLine) ) : \( createEmptyPadding ( ) ) \n "
2935+ let destFill = usePlaceholders ? " \( DiffFormatConstants . placeholderText) : \( createEmptyPadding ( ) ) " : " \( formatLineNumber ( virtualDestLine) ) : \( createEmptyPadding ( ) ) "
2936+ output += " \( formatLineNumber ( sourceNum) ) - \( sourceDisplay) | \( destFill) \n "
29932937 sourceIndex += 1
29942938 virtualSourceLine = sourceNum + 1
29952939 virtualDestLine += 1
29962940 } else if destContent. hasPrefix ( " + " ) {
2997- // Added line - fill source with virtual line number
2941+ // Added line - fill source with placeholder or line number
29982942 let actualContent = String ( destContent. dropFirst ( 2 ) )
2999- output += " \( formatLineNumber ( virtualSourceLine) ) : \( createEmptyPadding ( ) ) | \( formatLineNumber ( destNum) ) + \( actualContent) \n "
2943+ let sourceFill = usePlaceholders ? " \( DiffFormatConstants . placeholderText) : \( createEmptyPadding ( ) ) " : " \( formatLineNumber ( virtualSourceLine) ) : \( createEmptyPadding ( ) ) "
2944+ output += " \( sourceFill) | \( formatLineNumber ( destNum) ) + \( actualContent) \n "
30002945 destIndex += 1
30012946 virtualSourceLine += 1
30022947 virtualDestLine = destNum + 1
@@ -3010,21 +2955,23 @@ func formatDiffOutputWithVerticalSpace(_ mapping: DiffLineMapping, sourceCharCou
30102955 let symbol = String ( sourceContent. prefix ( 1 ) )
30112956 let actualContent = String ( sourceContent. dropFirst ( 2 ) )
30122957 let sourceDisplay = actualContent. padding ( toLength: DiffFormatConstants . sourceColumnWidth, withPad: " " , startingAt: 0 )
3013- output += " \( formatLineNumber ( sourceNum) ) \( symbol) \( sourceDisplay) | \( formatLineNumber ( virtualDestLine) ) : \( createEmptyPadding ( ) ) \n "
2958+ let destFill = usePlaceholders ? " \( DiffFormatConstants . placeholderText) : \( createEmptyPadding ( ) ) " : " \( formatLineNumber ( virtualDestLine) ) : \( createEmptyPadding ( ) ) "
2959+ output += " \( formatLineNumber ( sourceNum) ) \( symbol) \( sourceDisplay) | \( destFill) \n "
30142960 sourceIndex += 1
30152961 virtualDestLine += 1
30162962 } else if destLineExists {
30172963 // Only dest line left
30182964 let ( destNum, destContent) = mapping. destLines [ destIndex]
30192965 let symbol = String ( destContent. prefix ( 1 ) )
30202966 let actualContent = String ( destContent. dropFirst ( 2 ) )
3021- output += " \( formatLineNumber ( virtualSourceLine) ) : \( createEmptyPadding ( ) ) | \( formatLineNumber ( destNum) ) \( symbol) \( actualContent) \n "
2967+ let sourceFill = usePlaceholders ? " \( DiffFormatConstants . placeholderText) : \( createEmptyPadding ( ) ) " : " \( formatLineNumber ( virtualSourceLine) ) : \( createEmptyPadding ( ) ) "
2968+ output += " \( sourceFill) | \( formatLineNumber ( destNum) ) \( symbol) \( actualContent) \n "
30222969 destIndex += 1
30232970 virtualSourceLine += 1
30242971 }
30252972 }
30262973
3027- output += generateDiffFooter ( )
2974+ output += generateDiffFooter ( includePlaceholderLegend : usePlaceholders )
30282975 return output
30292976}
30302977
@@ -3039,13 +2986,13 @@ func generateDiffOutput(from asciiDiff: String, sourceCharCount: Int = 0, destCh
30392986/// Convenience function - generates placeholder diff output
30402987func generateDiffOutputWithPlaceholders( from asciiDiff: String , sourceCharCount: Int = 0 , destCharCount: Int = 0 ) -> String {
30412988 let mapping = parseASCIIDiff ( asciiDiff)
3042- return formatDiffOutputWithPlaceholders ( mapping, sourceCharCount: sourceCharCount, destCharCount: destCharCount)
2989+ return formatDiffOutputWithEmptyFill ( mapping, sourceCharCount: sourceCharCount, destCharCount: destCharCount, usePlaceholders : true )
30432990}
30442991
3045- /// Convenience function - generates vertical space diff output
2992+ /// Convenience function - generates vertical s pace diff output
30462993func generateDiffOutputWithVerticalSpace( from asciiDiff: String , sourceCharCount: Int = 0 , destCharCount: Int = 0 ) -> String {
30472994 let mapping = parseASCIIDiff ( asciiDiff)
3048- return formatDiffOutputWithVerticalSpace ( mapping, sourceCharCount: sourceCharCount, destCharCount: destCharCount)
2995+ return formatDiffOutputWithEmptyFill ( mapping, sourceCharCount: sourceCharCount, destCharCount: destCharCount, usePlaceholders : false )
30492996}
30502997
30512998
0 commit comments