@@ -2,7 +2,7 @@ import * as Diff from 'diff'
22
33import type { Change } from 'diff'
44
5- type Type = 'split' | 'unified'
5+ type Mode = 'split' | 'unified'
66type Role = 'prev' | 'current' | 'unified'
77
88interface Line {
@@ -11,7 +11,8 @@ interface Line {
1111 value : string ;
1212}
1313
14- const MODIFIED_TAG = 'vue-diff-modified'
14+ const MODIFIED_START_TAG = '###VueDiffModifiedStart###'
15+ const MODIFIED_CLOSE_TAG = '###VueDiffModifiedClose###'
1516
1617function getDiffType ( diff : Change ) {
1718 return diff . added ? 'added' : diff . removed ? 'removed' : 'equal'
@@ -22,7 +23,7 @@ const renderLine = (diffWords: Array<Change>) => {
2223 const type = getDiffType ( word )
2324
2425 if ( type === 'added' ) {
25- return `< ${ MODIFIED_TAG } > ${ word . value } </ ${ MODIFIED_TAG } > `
26+ return `${ MODIFIED_START_TAG } ${ word . value } ${ MODIFIED_CLOSE_TAG } `
2627 } else {
2728 return word . value
2829 }
@@ -43,7 +44,7 @@ const renderPrev = (diffs: Array<Change>) => {
4344 if ( isUnuseLine ) return
4445
4546 if ( isModifiedLine ) {
46- const diffWords = Diff . diffWords ( ( nextDiff as Change ) . value , diff . value )
47+ const diffWords = Diff . diffChars ( ( nextDiff as Change ) . value , diff . value )
4748 diff . value = renderLine ( diffWords )
4849 }
4950
@@ -79,7 +80,7 @@ const renderCurrent = (diffs: Array<Change>) => {
7980 if ( isUnuseLine ) return
8081
8182 if ( isModifiedLine ) {
82- const diffWords = Diff . diffWords ( ( prevDiff as Change ) . value , diff . value )
83+ const diffWords = Diff . diffChars ( ( prevDiff as Change ) . value , diff . value )
8384 diff . value = renderLine ( diffWords )
8485 }
8586
@@ -93,7 +94,7 @@ const renderCurrent = (diffs: Array<Change>) => {
9394 result . push ( {
9495 type,
9596 lineNum : skip ? undefined : lineNum ,
96- value : skip ? '\n ' : value
97+ value : skip ? '' : value
9798 } )
9899 } )
99100 } )
@@ -113,12 +114,12 @@ const renderUnified = (diffs: Array<Change>) => {
113114 const isModifiedCurrentLine = prevDiff && diff . count === 1 && prevDiff . count === 1 && type === 'added' && prevDiff . removed
114115
115116 if ( isModifiedPrevLine ) {
116- const diffWords = Diff . diffWords ( ( nextDiff as Change ) . value , diff . value )
117+ const diffWords = Diff . diffChars ( ( nextDiff as Change ) . value , diff . value )
117118 diff . value = renderLine ( diffWords )
118119 }
119120
120121 if ( isModifiedCurrentLine ) {
121- const diffWords = Diff . diffWords ( ( prevDiff as Change ) . value , diff . value )
122+ const diffWords = Diff . diffChars ( ( prevDiff as Change ) . value , diff . value )
122123 diff . value = renderLine ( diffWords )
123124 }
124125
@@ -154,5 +155,5 @@ const renderLines = (role: Role, diffs: Array<Change>) => {
154155 }
155156}
156157
157- export { MODIFIED_TAG , renderLines }
158- export type { Type , Role , Change , Line }
158+ export { MODIFIED_START_TAG , MODIFIED_CLOSE_TAG , renderLines }
159+ export type { Mode , Role , Change , Line }
0 commit comments